web-dev-qa-db-fra.com

Comment utiliser correctement les sous-volumes dans btrfs?

Dans le passé, j'ai toujours utilisé trois ext4 partitions pour répondre à mes besoins:

  • /dev/sda2: /
  • /dev/sda3: /home
  • /dev/sda4: /mnt/Data

En ce moment, j'utilise Ubuntu 15.04 avec le système de fichiers btrfs. Après l'installation, je me suis retrouvé avec une grande partition, contenant les trois partitions:

  • /dev/sda2: étend
    • /dev/sda5: /
    • /dev/sda6: /home
    • /dev/sda7: /mnt/Data

Lorsque je parcours ces partitions à partir d'une clé USB en direct, quelque chose d'étrange se produit: le répertoire racine de chacune de ces partitions s'appelle @. Je soupçonne que cela a quelque chose à voir avec quelque chose appelé sous-volumes dans btrfs.

Je voudrais faire bon usage de ces sous-volumes. Par exemple, j'utilise un /home partition pour faciliter les nouvelles installations. Est-ce toujours nécessaire? Ou puis-je tout aussi bien mettre chaque partition dans une grande partition avec différents sous-volumes pour obtenir la même chose?

1
Exeleration-G

Cela dépendra exactement de ce que vous voulez faire avec vos disques, mais dans mon cas oui je suis passé à l'utilisation de btrfs et j'ai fait exactement ce que vous dites - utilisez des sous-volumes au lieu de partitions .


De le wiki btrfs :

Un sous-volume dans btrfs n'est pas identique à un volume logique LVM ou à un sous-volume ZFS. Avec LVM, un volume logique est un périphérique bloc à part entière (qui pourrait par exemple contenir tout autre système de fichiers ou conteneur comme dm-crypt, MD RAID, etc.) - ce n'est pas le cas avec btrfs.

Un sous-volume btrfs n'est pas un périphérique bloc (et ne peut pas être traité comme tel) à la place, un sous-volume btrfs peut être considéré comme un espace de noms de fichiers POSIX. Cet espace de noms est accessible via le sous-volume de niveau supérieur du système de fichiers, ou il peut être monté à part entière.

Donc, étant donné une structure de système de fichiers comme celle-ci:

toplevel
+-- dir_1           (normal directory)
|   +-- file_2      (normal file)
|   \-- file_3      (normal file)
\-- subvol_a        (subvolume)
    +-- subvol_b    (subvolume, nested below subvol_a)
    |   \-- file_4  (normal file)
    \-- file_5      (normal file)

Le sous-volume de niveau supérieur (ID5) (que l'on peut considérer comme la racine du système de fichiers) peut être monté, et la structure complète du système de fichiers sera visible au point de montage; alternativement, tout autre sous-volume peut être monté (avec les options de montage subvol ou subvolid, par exemple subvol = subvol_a) et seulement tout ce qui est en dessous de ce sous-volume (dans l'exemple ci-dessus le sous-volume subvol_b, son contenu et le fichier file_4) sera visible au montage point.

Les sous-volumes peuvent être imbriqués et chaque sous-volume (sauf le sous-volume de niveau supérieur) a un sous-volume parent. Le montage d'un sous-volume rend également l'un de ses sous-volumes enfants imbriqués disponible à leur emplacement respectif par rapport au point de montage.

Un système de fichiers btrfs a un sous-volume par défaut, qui est initialement défini comme étant le sous-volume de niveau supérieur et qui est monté si aucune option de sous-volume ou de sous-volume n'est spécifiée.

La modification du sous-volume par défaut avec le sous-volume btrfs par défaut rendra le niveau supérieur du système de fichiers inaccessible, sauf en utilisant les options de montage subvol =/ou subvolid = 5.

Les sous-volumes peuvent être déplacés dans le système de fichiers.


Ma compréhension est que le programme d'installation d'Ubuntu (si vous choisissez btrfs) créera @ et @home en tant que sous-volumes dans votre système de fichiers btrfs. Il montera alors @ comme racine du système de fichiers et @home dans /home.

Cela ouvre alors plus de possibilités, dont les instantanés. J'utilise apt-btrfs-snapshot qui gère la création d'un instantané chaque fois que je fais quoi que ce soit avec apt, c'est-à-dire l'installation ou la suppression de packages. De cette façon, je peux annuler toutes les modifications apportées au système en cas de problème. J'ai également des sous-volumes pour chacun des utilisateurs de mon système, bien que cela soit presque définitivement inutile. Le fait est que je n'ai plus de partitions racine et home séparées et que je ne perds pas d'espace en essayant d'allouer suffisamment à chacune.

J'ai récemment fait une nouvelle installation d'Ubuntu 15.10 par-dessus une installation 14.04 qui avait btrfs pour le disque principal - et j'ai pu garder le @home sous-volume intact lors du remplacement de la racine @ répertoire avec la nouvelle installation à l'aide du programme d'installation graphique. C'était la raison principale de l'utilisation de partitions distinctes, et il semble que les versions récentes d'Ubuntu prennent en charge btrfs de la même manière - je suggère donc que vous n'ayez plus besoin de partitions si vous avez configuré btrfs.

2
seanlano