web-dev-qa-db-fra.com

Impossible de monter le système de fichiers BTRFS secondaire sur un sous-volume spécifique

J'essaie donc de comprendre BTRFS et de configurer mon serveur de fichiers à l'aide de systèmes de fichiers BTRFS. Voici ma configuration:

  • / dev/sda1: système de fichiers BTRFS, contient les sous-volumes @, @home montés sur/et/home.

  • / dev/sdb1 et/dev/sdc1: système de fichiers mis en pool par BRTFS, disques durs de 2x3 Go,
    contient tous mes fichiers multimédias. Actuellement monté sur/mnt/media

Je les ai configurés de cette façon car je ne veux pas que mes fichiers multimédias prennent de la place sur/dev/sda1, qui est un SSD de 120 Go; Je voudrais réserver cela uniquement aux fichiers système. J'aimerais monter ce système de fichiers BTRFS secondaire dans un sous-volume de niveau supérieur appelé @media afin que je puisse réaliser des instantanés. Cependant, chaque fois que j'essaie de monter/dev/sdb1 ou/dev/sdc1 en utilisant subvolid, j'obtiens cette erreur:

peetipablo@flexo:/$ Sudo mount -t btrfs -o subvolid=354 /dev/sdb1 /mnt/media
mount: mount(2) failed: No such file or directory

Voici la liste des sous-volumes:

peetipablo@flexo:/$ Sudo btrfs subvolume list /
ID 257 gen 142548 top level 5 path @
ID 258 gen 142527 top level 5 path @home
ID 310 gen 113715 top level 5 path @apt-snapshot-release-upgrade-utopic-2015-04-30_08:11:14
ID 311 gen 113766 top level 5 path @apt-snapshot-release-upgrade-vivid-2015-04-30_08:39:50
ID 312 gen 134632 top level 257 path var/lib/machines
ID 313 gen 142500 top level 257 path root_snapshot_5_13_15
ID 354 gen 142517 top level 5 path @media

Si j'essaie de faire de @media le sous-volume par défaut du répertoire/mnt/media, je peux monter sdb1 sans le sous-fichier -o, mais j'obtiens une erreur lorsque j'essaie de prendre une photo:

peetipablo@flexo:/$ Sudo btrfs subvolume set-default 354 /mnt/media
peetipablo@flexo:/$ Sudo btrfs subvolume get-default /mnt/media
ID 354 gen 142517 top level 5 path @media
peetipablo@flexo:/$ Sudo mount -t btrfs /dev/sdb1 /mnt/media
peetipablo@flexo:/$ Sudo btrfs subvolume snapshot @media /mnt/media_snap
ERROR: error accessing '@media'
peetipablo@flexo:/$ Sudo btrfs subvolume snapshot /mnt/media /mnt/media_snap
Create a snapshot of '/mnt/media' in '/mnt/media_snap'
ERROR: cannot snapshot '/mnt/media' - Invalid cross-device link

J'ai l'impression que je ne comprends pas quelque chose ou que j'utilise ce type de système de fichiers plus récent d'une manière qui n'est pas destinée à être utilisée. Devrais-je simplement fusionner les 3 périphériques dans un système de fichiers BTRFS sans avoir à me soucier de remplir mon disque dur SSD avec un support? Y at-il un moyen d’atteindre mon objectif final en utilisant une méthode différente de celle que j’utilise actuellement?

3
Pete Buonomo

Les systèmes de fichiers Btrfs n'interagissent pas les uns avec les autres, vous ne pouvez donc pas monter le sous-volume @media sur /dev/sd{b,c}1 car le sous-volume @media est actuellement sur /dev/sda1, et vous obtenez un appareil croisé. erreur lorsque vous essayez de capturer /mnt/media vers /mnt/media_snap parce que /mnt/media est sur /dev/sd{b,c}1 alors que /mnt/media_snap est sur /dev/sda1.

Au lieu d'avoir le sous-volume @media sur le système de fichiers /dev/sda1 btrfs, vous voulez créer un sous-volume @media sur le système de fichiers btrfs sur /dev/sd{b,c}1:

Sudo mount /dev/sdb1 /mnt/media/
Sudo btrfs subvol create /mnt/media/@media
Sudo umount /mnt/media/
Sudo mount -o subvol=@media /dev/sdb1 /mnt/media/

Vous pouvez créer des instantanés de /mnt/media/, mais vous ne pouvez placer l’instantané que sur le système de fichiers /dev/sd{b,c}1. Donc, vous pouvez créer un instantané en lecture seule comme ceci:

Sudo btrfs subvol snap -r /mnt/media/ /mnt/media/<snapshot_name>

Mais je recommande de placer chaque instantané d'un sous-volume extérieur le sous-volume lui-même, car cela simplifie les choses lorsque vous devez revenir à un instantané. Pour ce faire, vous devez monter la racine du système de fichiers /dev/sd{b,c}1:

Sudo mkdir /mnt/media_root/
Sudo mount -o subvol=/ /dev/sdb1 /mnt/media_root/
Sudo btrfs subvol snap -r /mnt/media_root/@media/ /mnt/media_root/<snapshot_name>
4
Vincent Yu