GNU/Linux >> Tutoriels Linux >  >> Linux

Premiers pas avec btrfs pour Linux

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.


Linux
  1. Premiers pas avec les pare-feux Linux

  2. 5 conseils pour démarrer avec la sécurité des serveurs Linux

  3. Premiers pas avec Samba pour l'interopérabilité

  4. Premiers pas avec socat, un outil de relais polyvalent pour Linux

  5. Premiers pas avec PostgreSQL sous Linux

Tutoriel Vagrant - Premiers pas avec Vagrant sous Linux

Premiers pas avec Docker Compose sous Linux

Premiers pas avec VirtualBox sous Linux - Partie 1

Premiers pas avec Flutter sur Linux Desktop

Premiers pas avec Buildah pour la gestion des conteneurs Linux

Prise en main et installation de Slack pour Linux