Btrfs est disponible pour Linux depuis plusieurs années, vous le connaissez donc peut-être déjà. Si ce n'est pas le cas, vous pouvez vous poser des questions à ce sujet, en particulier si vous utilisez Fedora Workstation (Btrfs est désormais son système de fichiers par défaut). Cet article vise à vous aider à vous familiariser avec lui et ses fonctionnalités avancées, telles que la copie sur écriture et les sommes de contrôle.
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Btrfs, abréviation de B-Tree Filesystem, est en fait un système de fichiers et un gestionnaire de volumes réunis. Il est souvent considéré comme une réponse à ZFS, introduit dans le système d'exploitation Solaris de Sun Microsystem en 2005, maintenant largement remplacé par une implémentation open source appelée OpenZFS. Ubuntu Linux et FreeBSD comportent souvent OpenZFS. D'autres exemples avec des fonctionnalités similaires sont Stratis de Red Hat et Linux Logical Volume Manager (LVM).
Configuration
Pour essayer Btrfs, j'ai téléchargé le fichier ISO Fedora 33 Workstation et l'ai installé dans une nouvelle machine virtuelle (VM). Le processus d'installation n'a pas changé depuis les versions précédentes. Je n'ai personnalisé aucun paramètre, y compris le partitionnement et le formatage du lecteur, afin de maintenir une configuration précise "prête à l'emploi" pour ce didacticiel. Une fois la machine virtuelle opérationnelle, j'ai installé et exécuté l'éditeur de partition GNOME (GParted) pour une belle vue d'usine de la disposition du lecteur.
À partir de ce moment, ce n'est pas très différent de ce à quoi vous êtes habitué ; en fait, vous pouvez utiliser le système normalement, et vous ne remarquerez peut-être même pas que le système de fichiers est Btrfs. Cependant, avoir cette nouvelle valeur par défaut vous permet de tirer parti de plusieurs fonctionnalités intéressantes.
Examinez le système de fichiers Btrfs
Je ne connais aucun outil graphique spécifique à Btrfs, bien que certaines de ses fonctions aient été intégrées dans des outils de gestion de disque existants.
Depuis la ligne de commande, vous pouvez voir de plus près le format Btrfs :
# btrfs filesystem show
Label: 'fedora_localhost-live' uuid: f2bb02f9-5c41-4c91-8eae-827a801ee58a
Total devices 1 FS bytes used 6.36GiB
devid 1 size 10.41GiB used 8.02GiB path /dev/vda3
Modifier les libellés Btrfs
La première chose que j'ai remarquée était l'étiquette du système de fichiers définie par le programme d'installation :fedora_localhost-live
. Ceci est inexact car il s'agit maintenant d'un système installé et non plus d'un CD live. Je l'ai donc changé en utilisant le btrfs filesystem label
commande.
Changer une étiquette de système de fichiers Btrfs est simple :
# btrfs filesystem label /
fedora_localhost-live
# btrfs filesystem label / fedora33workstation
# btrfs filesystem label /
fedora33workstation
Gérer les sous-volumes Btrfs
Un sous-volume semble être un répertoire standard qui peut être géré par Btrfs. Il y a plusieurs sous-volumes sur ma nouvelle station de travail Fedora 33 :
# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
Créez un nouveau sous-volume à l'aide de la commande btrfs subvolume create
ou supprimez un sous-volume avec btrfs subvolume delete
:
# btrfs subvolume create /opt/foo
Create subvolume '/opt/foo'
# btrfs subvolume list /
ID 256 gen 2884 top level 5 path home
ID 258 gen 2888 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 276 gen 2888 top level 258 path opt/foo
# btrfs subvolume delete /opt/foo
Delete subvolume (no-commit): '/opt/foo'
Les sous-volumes permettent des actions telles que la définition d'un quota, la prise d'un instantané et la réplication vers d'autres emplacements et hôtes. Comment les administrateurs système peuvent-ils tirer parti de ces fonctionnalités ? Qu'en est-il des répertoires d'accueil des utilisateurs ?
Ajouter un utilisateur
Comme c'était le cas depuis les temps anciens, l'ajout d'un nouveau compte utilisateur crée un répertoire personnel que le compte doit utiliser :
# useradd student1
# getent passwd student1
student1:x:1006:1006::/home/student1:/bin/bash
# ls -l /home
drwx------. 1 student1 student1 80 Oct 29 00:21 student1
Traditionnellement, le répertoire personnel d'un utilisateur est un sous-répertoire de /home
. La propriété et les privilèges sont adaptés au propriétaire, mais il n'y a pas de fonctions spéciales pour les gérer. L'environnement de serveur d'entreprise est un autre scénario. Souvent, un répertoire est réservé à une application particulière et à son utilisateur. Vous pouvez profiter de Btrfs pour gérer et appliquer des contraintes à ces répertoires.
Pour accueillir les sous-volumes Btrfs en tant que foyers d'utilisateurs, il existe une nouvelle option pour useradd
commande :--btrfs-subvolume-home
. Bien que les pages de manuel n'aient pas été mises à jour (à ce jour), vous pouvez voir l'option en exécutant useradd --help
. En passant cette option lors de l'ajout d'un nouvel utilisateur, un nouveau sous-volume Btrfs sera créé. Il fonctionne exactement comme le -d
l'option fait pour créer un répertoire normal :
# useradd --btrfs-subvolume-home student2
Create subvolume '/home/student2'
Vérifiez l'utilisateur avec getent passwd student2
, et cela semblera normal. Cependant, exécutez le btrfs subvolume
commande pour lister les sous-volumes, et vous verrez quelque chose d'intéressant :le répertoire personnel du nouvel utilisateur !
# btrfs subvolume list /
ID 256 gen 2458 top level 5 path home
ID 258 gen 2461 top level 5 path root
ID 265 gen 1593 top level 258 path var/lib/machines
ID 272 gen 2459 top level 256 path home/student2
Explorez le deuxième scénario d'un environnement de serveur d'entreprise. Supposons que vous deviez installer un serveur WildFly dans /opt
et déployer une application Web Java. Souvent, votre première étape consiste à créer un wildfly
utilisateur. Faites cela en utilisant le nouveau --btrfs-subvolume-home
option avec le -b
option pour spécifier /opt
comme répertoire de base :
# useradd -b /opt --btrfs-subvolume-home wildfly
Create subvolume '/opt/wildfly'
Maintenant, la wildfly
l'utilisateur peut se connecter et terminer l'installation dans /opt/wildfly
.
Supprimer un utilisateur
Lorsque vous supprimez un utilisateur, vous souhaitez parfois supprimer les fichiers de cet utilisateur et le répertoire de base en même temps. Le userdel
la commande a le -r
option pour cela, et il supprime également les sous-volumes Btrfs :
# userdel -r student2
Delete subvolume (commit): '/home/student2'
Définir des quotas d'utilisation du disque
Dans l'un de mes cours d'informatique, un étudiant a exécuté un programme C qui est devenu incontrôlable et a écrit sur le disque jusqu'à l'intégralité de /home
a été rempli sur le système Unix du département ! Le serveur est devenu indisponible jusqu'à ce que l'administrateur tue le processus d'emballement et libère de l'espace. Il en va de même pour le scénario ci-dessus ; cette application d'entreprise Wildfly aura un nombre croissant de fichiers journaux et de magasins de contenu pour ses utilisateurs. Comment empêcher un serveur de s'arrêter parce que le disque est plein ? Définir des contraintes d'utilisation du disque est une bonne idée. Heureusement, Btrfs prend en charge cela au moyen de quotas.
Plusieurs étapes sont nécessaires pour configurer les quotas. La première étape consiste à activer quota
sur le système de fichiers Btrfs :
# btrfs quota enable /
Assurez-vous de connaître le numéro d'identification du groupe de quotas (qgroup) de chaque sous-volume, qui est affiché par la btrfs subvolume list
commande. Chaque sous-volume a besoin d'un qgroup associé basé sur son numéro d'identification. Cela peut être fait sur une base individuelle avec btrfs qgroup create
, mais, commodément, le wiki Btrfs fournit la commande suivante pour accélérer la création de qgroups pour les sous-volumes sur un système de fichiers :
>btrfs subvolume list \<path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \<path>
Dans un système de poste de travail Fedora 33 fraîchement installé, vous travaillez sur le chemin du système de fichiers racine, /
. Remplacez \<path>
avec le chemin racine :
# btrfs subvolume list / | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /
Ensuite, exécutez btrfs quota rescan
et jetez un oeil aux nouveaux qgroups :
# btrfs quota rescan /
quota rescan started
# btrfs qgroup show /
qgroupid rfer excl
-------- ---- ----
0/5 16.00KiB 16.00KiB
0/256 272.04MiB 272.04MiB
0/258 6.08GiB 6.08GiB
0/265 16.00KiB 16.00KiB
0/271 16.00KiB 16.00KiB
0/273 16.00KiB 16.00KiB
Vous pouvez maintenant attribuer un quota à l'un des qgroups, qui, à son tour, est appliqué à son sous-volume associé. Donc, si vous voulez limiter l'utilisation du répertoire personnel de student3 à 1 Go, utilisez la btrfs qgroup limit
commande :
# btrfs qgroup limit 1G /home/student3
Confirmez le quota pour le sous-volume spécifique :
# btrfs qgroup show -reF /home/student3
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/271 16.00KiB 16.00KiB 1.00GiB none
Des options légèrement différentes afficheront tous les qgroups et tous les quotas définis :
# btrfs qgroup show -re /
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/5 16.00KiB 16.00KiB none none
0/256 272.04MiB 272.04MiB none none
0/258 6.08GiB 6.08GiB none none
0/265 16.00KiB 16.00KiB none none
0/271 16.00KiB 16.00KiB 1.00GiB none
0/273 16.00KiB 16.00KiB none none
Autres fonctionnalités
Ces exemples donnent une idée des fonctionnalités de Btrfs. Exécutez btrfs --help
pour voir la liste complète des commandes. De nombreuses autres capacités notables existent; par exemple, les instantanés et l'envoi/la réception valent la peine d'être appris.
Réflexions finales
Btrfs offre beaucoup de promesses pour fournir un ensemble de fonctionnalités avancées de système de fichiers à Linux. Ce n'était pas le premier; Je crédite ZFS pour mon introduction à ce type de système de fichiers il y a environ 15 ans, mais Btrfs est entièrement open source et non grevé de brevets.
Je conseille de commencer avec une machine virtuelle ou un système de secours si vous souhaitez explorer ce système de fichiers.
J'aimerais voir des utilitaires de gestion graphique produits pour les administrateurs système qui aiment opérer dans le monde de l'interface graphique. Heureusement, Btrfs a une forte activité de développement, comme en témoigne la décision du projet Fedora de le mettre par défaut sur Workstation 33.