Btrfs (Français)

Btrfs (système de fichiers B-tree, prononcé comme "butter F S", "better F S", "b-tree F S", ou simplement en l'épelant) est un système de fichiers basé sur le principe copie en écriture (copy-on-write (COW)), initialement conçu chez Oracle Corporation pour être utilisé sous Linux. Le développement de Btrfs a commencé en 2007, et en août 2014, le format sur disque du système de fichiers a été marqué comme stable.

De Btrfs Wiki:

Btrfs est un nouveau système de fichiers Copie en écriture (CoW) pour Linux destiné à implémenter des fonctionnalités avancées tout en se concentrant sur la tolérance aux pannes, la réparation et l'administration facile. Développé conjointement chez Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO et bien d'autres, Btrfs est licencié sous licence GPL et ouvert à la contribution de n'importe qui.

Attention: Btrfs a quelques fonctionnalités qui sont considérées comme expérimentales. Voir le Status du Wiki de Btrfs, Est-ce que Btrfs est stable? et Mise en route pour des informations plus détaillées. Voir la section #Problèmes connus.

Préparation

Les noyaux officiels linux et linux-lts incluent la prise en charge de Btrfs. Si vous voulez démarrer à partir d'un système de fichiers Btrfs, vérifiez si votre chargeur d'amorçage prend en charge Btrfs.

Les utilitaires d'espace utilisateur sont disponibles en installant le paquet btrfs-progs.

Création du système de fichiers

Ce qui suit montre comment créer un nouveau système de fichiers Btrfs.

Pour convertir une partition ext3/4 en Btrfs, reportez-vous à la section #Conversion Ext3/4 en Btrfs. Pour utiliser une configuration sans partition, voir #Disque Btrfs sans partition.

Système de fichiers sur un seul périphérique

Pour formater une partition faites:

# mkfs.btrfs -L mylabel /dev/partition

Pour utiliser une taille de bloc plus grande pour les données/métadonnées, spécifiez une valeur pour le nodesize via le commutateur comme illustré dans cet exemple en utilisant des blocs de 16 Ko.

# mkfs.btrfs -L mylabel -n 16k /dev/partition

Système de fichiers multi-périphériques

Plusieurs périphériques peuvent être saisis pour créer un RAID. Les niveaux RAID pris en charge comprennent RAID 0, RAID 1, RAID 10, RAID 5 et RAID 6. Les niveaux RAID peuvent être configurés séparément pour les données et les métadonnées à l'aide des options -d et respectivement. Par défaut, les données sont rayées (raid0) et les métadonnées sont mises en miroir (). Voir Utilisation de Btrfs avec plusieurs périphériques pour plus d'informations sur la création d'un volume RAID Btrfs ainsi que la page de manuel pour .

# mkfs.btrfs -d raid0 -m raid1 /dev/part1 /dev/part2 ...

Vous devez inclure le hook ou le hook dans afin d'utiliser plusieurs périphériques btrfs dans un pool. Voir l'article Mkinitcpio (Français)#HOOKS pour plus d'informations.

Voir #RAID pour des conseils sur la maintenance spécifique aux systèmes de fichiers multi-périphériques Btrfs.

Configuration du système de fichiers

Copie en écriture (CoW)

Par défaut, Btrfs utilise copy on write pour tous les fichiers en permanence. Voir la section Btrfs Sysadmin Guide pour plus de détails sur l'implémentation, ainsi que les avantages et les inconvénients.

Désactiver COW

Pour désactiver la fonction de copie en écriture pour les fichiers nouvellement créés dans un sous-volume monté, utilisez l'option de montage . Cela n'affectera que les fichiers nouvellement créés. La copie en écriture se produira toujours pour les fichiers existants.

Pour désactiver la fonction copie en écriture pour les fichiers/répertoires individuels, procédez comme suit:

$ chattr +C /dir/file

Ceci désactive la copie en écriture pour les opérations dans lesquelles il n' y a qu'une seule référence au fichier. S'il y a plus d'une référence (ex: via cp --reflink=always ou à cause d'un snapshot du système de fichiers", la copie en écriture se produit toujours.

Note: Depuis la page de manuel de chattr: "Pour btrfs, l'indicateur 'C' doit être placé sur les nouveaux fichiers ou vides. S'il est défini sur un fichier qui a déjà des blocs de données, il n'est pas défini quand les blocs assignés au fichier seront entièrement stables. Si l'indicateur 'C' est placé sur un répertoire, cela n'aura pas d'effet sur le répertoire, mais les nouveaux fichiers créés dans ce répertoire auront l'attribut No_COW."

Création de copies légères

Par défaut, lorsque vous copiez des fichiers sur un système de fichiers Btrfs avec , des copies réelles sont créées. Pour créer une copie légère faisant référence aux données originales, utilisez l'option reflink:

$ cp --reflink source dest

Voir la page de manuel sur pour plus de détails sur le paramètre .

Compression

Btrfs permet la compression transparente, ce qui signifie que chaque fichier de la partition est automatiquement compressé. Cela permet non seulement de réduire la taille des fichiers, mais aussi d'améliorer les performances, en particulier si vous utilisez l'algorithme lzo, dans certains cas d'utilisation spécifiques (ex: un seul thread avec des entrées/sorties de fichiers volumineux), tout en nuisant manifestement au rendement dans d'autres cas (ex: cpu et/ou multithreaded intensif avec de gros fichiers IO).

La compression est activée à l'aide des options compress=zlib ou compress=lzo mount. Seuls les fichiers créés ou modifiés après l’ajout de l’option de montage seront compressés. Cependant, il peut être appliqué assez facilement aux fichiers existants (par exemple après une conversion de ext3/4) en utilisant la commande , où est ou . Pour re-compresser tout le système de fichiers avec , exécutez la commande suivante:

# btrfs filesystem defragment -r -v -clzo /

Lorsque vous installez Arch sur une partition Btrfs vide, utilisez l’option lors du montage du système de fichiers: mount -o compress=lzo /dev/sdxY /mnt/. Lors de la configuration, ajoutez compress=lzo aux options de montage du système de fichiers racine dans fstab.

Sous-volumes

“Un sous-volume btrfs n’est pas un bloc (et ne peut pas être traité comme tel) mais un sous-volume btrfs peut être considéré comme un espace de noms de fichier POSIX. Cet espace de nommage est accessible via le sous-volume supérieur du système de fichiers, ou il peut être monté en tant que tel.” .

Chaque système de fichiers Btrfs possède un sous-volume de niveau supérieur avec ID 5. Il peut être monté comme (par défaut), ou un autre sous-volume peut être monté à la place. Les sous-volumes peuvent être déplacés dans le système de fichiers et sont plutôt identifiés par leur identifiant que par leur chemin d’accès.

Voir les liens suivants pour plus de détails:

Création d’un sous-volume

Pour créer un sous-volume:

$ btrfs subvolume create /path/to/subvolume

Lister des sous-volumes

Pour voir la liste des sous-volumes actuels sous le chemin:

$ btrfs subvolume list -p path

Suppression d’un sous-volume

Pour supprimer un sous-volume:

$ btrfs subvolume delete /path/to/subvolume

Tenter de supprimer le répertoire sans utiliser la commande ci-dessus ne supprimera pas le sous-volume.

Montage des sous volumes

Les sous-volumes peuvent être montés comme des partitions de système de fichiers en utilisant les paramètres ou . Par exemple, vous pourriez avoir un sous-volume nommé et le monter comme . On peut imiter les partitions de système de fichiers traditionnelles en créant divers sous-volumes sous le niveau supérieur du système de fichiers et ensuite les monter aux points de montage appropriés. Ainsi, on peut facilement restaurer un système de fichiers (ou une partie de celui-ci) dans un état précédent en utilisant #Snapshot.

Note: “La plupart des options de montage s’appliquent à l’ensemble du système de fichiers, et seules les options pour le premier sous-volume à monter prendront effet. Cela est dû au manque de mise en œuvre et pourrait changer à l’avenir.” Voir la FAQ de Btrfs Wiki pour quelles options de montage peuvent être utilisées par sous-volume.

Voir Snapper#Suggested filesystem layout, Btrfs SysadminGuide#Managing Snapshots, et Btrfs SysadminGuide#Layout par exemple les structures de système de fichiers utilisant des sous-volumes.

Modification du sous-volume par défaut

Le sous-volume par défaut est monté si aucune option de montage n’est fournie. Pour changer le sous-volume par défaut, faites:

$ btrfs subvolume set-default subvolume-id /

Le sous-volume-id peut être trouvé par lister.

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

Quota

La prise en charge des quotas dans Btrfs est implémentée à un niveau de sous-volume par l’utilisation de groupes de quotas ou qgroup: Chaque sous-volume est affecté à un groupe de quotas sous la forme de 0/<subvolume id> par défaut. Toutefois, il est possible de créer un groupe de quotas en utilisant n’importe quel nombre si vous le souhaitez.

Pour utiliser les qgroupes, vous devez d’abord activer le quota en utilisant

$ btrfs quota enable

À partir de ce moment, les sous-volumes nouvellement créés seront contrôlés par ces groupes. Afin de les activer rétrospectivement pour des sous-volumes déjà existants, activez normalement le quota, puis créez un groupe q (groupe de quotas) pour chacun de ces sous-volumes en utilisant leur <subvolume id> et rescannez-les:

# btrfs subvolume list <path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} <path>
# btrfs quota rescan <path>

Les groupes de quotas dans Btrfs forment une arborescence hiérarchique, dans laquelle les qgroupes sont rattachés aux sous-volumes. Les limites de taille sont définies par qgroup et s’appliquent quand une limite est atteinte dans une arborescence contenant un sous-volume donné.

Les limites des groupes de quotas peuvent être appliquées soit à l’utilisation totale des données, soit à l’utilisation de données non partagées, soit à l’utilisation de données compressées, soit aux deux. La copie de fichier et la suppression de fichier peuvent toutes deux affecter les limites puisque la limite non partagée d’un autre qgroup peut changer si les fichiers du volume original sont supprimés et qu’il ne reste qu’une seule copie.

Par exemple, un nouveau Snapshot partage presque tous les blocs avec le sous-volume original, les nouvelles écritures dans l’un ou l’autre sous-volume augmenteront vers la limite exclusive, les suppressions de données communes dans un volume augmenteront vers la limite exclusive dans l’autre.

Pour appliquer une limite à un qgroup, utilisez la commande . Selon votre utilisation, utilisez une limite totale, une limite non partagée () ou une limite compressée ().

Pour afficher l’utilisation et les limites pour un chemin donné dans un système de fichiers, utilisez

# btrfs qgroup show -reF <path>

Intervalle d'engagement (commit)

La résolution à laquelle les données sont écrites dans le système de fichiers est dictée par Btrfs lui-même et par les paramètres du système. Btrfs passe par défaut à un intervalle de 30 secondes entre les points de contrôle dans lequel les nouvelles données sont engagées dans le système de fichiers. Ceci peut être modifié en ajoutant l'option commit mount dans pour la partition btrfs.

LABEL=arch64 / btrfs defaults,noatime,compress=lzo,commit=120 0 0

Les paramétrages de l'ensemble du système affectent également les intervalles de validation. Ils incluent les fichiers sous et sont en dehors du cadre de cet article du wiki. La documentation du noyau pour eux réside dans .

SSD TRIM

Un système de fichiers Btrfs est capable de libérer les blocs inutilisés d'un lecteur SSD prenant en charge la commande TRIM.

Pour plus d'informations sur l'activation et l'utilisation de TRIM, voir Solid state drive (Français)#TRIM.

Usage

Affichage de l'espace utilisé/libre

Les outils généraux d'espace utilisateur linux tels que ne rapporteront pas correctement l'espace libre sur une partition Btrfs. Il est recommandé d'utiliser pour interroger une partition Btrfs. Voici une illustration de cet effet, d'abord en faisant une requête à l'aide de , puis en utilisant btrfs filesystem df:

Remarquez que indique 3.0GB utilisé mais btrfs filesystem df indique 2.73GB pour les données. Ceci est dû à la façon dont Btrfs alloue les espaces dans le pool.

L'utilisation réelle du disque est la somme des trois valeurs 'utilisées' qui est inférieure à 3.0GB comme rapporté par .

Une autre commande utile pour afficher une lecture moins verbeuse de l'espace utilisé est btrfs filesystem show:

# btrfs filesystem show /dev/sda3

Une commande plus verbeuse combinant les informations de et qui relie directement l'espace libre et utilisé est . Il est supposé remplacer la commande du système de fichiers btrfs à la longue:

# btrfs filesystem usage /

Défragmentation

Btrfs prends en charge la défragmentation en ligne via mount option. Pour défragmenter manuellement votre , utilisez:

# btrfs filesystem defragment -r /

En utilisant la commande ci-dessus sans le commutateur , seules les métadonnées du sous-volume contenant le répertoire seront défragmentées. Ceci permet la défragmentation d'un seul fichier en spécifiant simplement le chemin d'accès.

Défragmenter un fichier qui a une copie en écriture COW (une copie instantanée (snapshot) ou une copie faite avec ou bcp) de plus l'utilisation du commutateur avec un algorithme de compression peut avoir comme conséquence deux fichiers indépendants augmentant effectivement l'utilisation du disque.

RAID

Btrfs offre un "RAID" natif pour les #Système de fichiers multi-périphériques.

Les caractéristiques notables qui démarquent le RAID btrfs de mdadm sont les tableaux redondants autorégénérateurs et l’équilibrage en ligne. Voir la page wiki de Btrfs pour plus d’informations. La page sysadmin de Btrfs contient également une section avec un peu plus de détails techniques.

Scrub

Le Glossaire du Wiki de Btrfs dit que le scrub Btrfs est "un outil de vérification de système de fichiers en ligne. Lit toutes les données et métadonnées sur le système de fichiers, et utilise les checksums et les copies en double depuis le stockage RAID pour identifier et réparer les données corrompues."

Démarrage manuel

Pour démarrer un scrub (en arrière-plan) sur le système de fichiers qui contient :

# btrfs scrub start /

Pour vérifier l’état d’un scrub en cours:

# btrfs scrub status /
Commencer avec un service ou un timer

Le paquet apporte l’unité btrfs-scrub@.timer pour le nettoyage mensuel du point de montage spécifié. Activez le timer avec un chemin de sortie, par ex: pour et pour . Vous pouvez utiliser pour échapper le chemin, voir systemd-escape pour plus de détails.

Vous pouvez également exécuter le scrub en démarrant (avec le même chemin d’accès encodé). L’avantage de cette méthode par rapport à la méthode est que les résultats de l’opération seront consignés dans le journal systemd.

Balance

"Un équilibrage transmet à nouveau toutes les données du système de fichiers via l’attributeur. Il est principalement destiné à rééquilibrer les données dans le système de fichiers à travers les périphériques lorsqu’un périphérique est ajouté ou supprimé. Un équilibrage régénère les copies manquantes pour les niveaux RAID redondants, si un périphérique a échoué." Voir la page FAQ en amont.

Sur un système de fichiers mono périphérique, une balance (équilibrage) peut également être utile pour réduire (temporairement) la quantité de blocs de méta-données alloués mais non utilisés.

Parfois, cela est nécessaire pour résoudre les problèmes de "système de fichiers complet".

# btrfs balance start /
# btrfs balance status /

Snapshot

"Un Snapshot (instantané) est simplement un sous-volume qui partage ses données (et métadonnées) avec un autre sous-volume, en utilisant les capacités COW de btrfs". Voir Btrfs Wiki SysadminGuide#Snapshots pour plus de détails.

Pour créer un Snapshot:

# btrfs subvolume snapshot source [dest/]name

Pour créer un snapshot en lecture seule, ajoutez le paramètre . Pour créer une version inscriptible d’un snapshot en lecture seule, il suffit de créer un snapshot.

Note: Les snapshots ne sont pas récursifs. Chaque sous-volume imbriqué sera un répertoire vide à l’intérieur de ce snapshot.

Envoyer/recevoir

Un sous-volume peut être envoyé à stdout ou un fichier à l'aide de la commande . Ceci est généralement le plus utile lorsqu'il est acheminé vers la commande d'un Btrfs.

Par exemple, pour envoyer un snapshot nommé (peut-être d’un snapshot que vous avez fait plus tôt de ) à , vous devriez faire ce qui suit:

# btrfs send /root_backup | btrfs receive /backup

Le snapshot envoyé doit être en lecture seule. La commande ci-dessus est utile pour copier un sous-volume sur un périphérique externe (par ex: un disque USB monté à /backup voir ci-dessus).

Vous pouvez également n’envoyer que la différence entre deux snapshots. Par exemple, si vous avez déjà envoyé une copie de ci-dessus et que vous avez créé un nouveau snapshot en lecture seule sur votre système nommé , alors pour envoyer uniquement la différence incrémentale à /backup faire:

# btrfs send -p /root_backup /root_backup_new | btrfs receive /backup

Maintenant un nouveau sous-volume nommé sera présent dans /backup.

Voir Btrfs Wiki's Incremental Backup page sur la façon d’utiliser ceci pour les sauvegardes incrémentales et pour les outils qui automatisent le processus.

Déduplication

En utilisant la fonction de copie en écriture (COW), Btrfs est capable de copier des fichiers ou des sous-volumes entiers sans avoir à copier les données. Cependant, chaque fois qu’un fichier est modifié, une nouvelle copie correcte est créée. La déduplication va plus loin, en identifiant activement les blocs de données qui partagent des séquences communes et en les combinant dans une certaine mesure avec la même sémantique de copie en écriture.

Les outils dédiés à la déduplication d’une partition formatée en Btrfs incluent , et btrfs-dedup. On peut aussi vouloir simplement dédupliquer des données sur un niveau de fichier au lieu d’utiliser par exemple ou jdupesAUR. Pour un aperçu des fonctionnalités disponibles de ces programmes et des informations supplémentaires, jetez un coup d’oeil à upstream Wiki entry.

De plus, les développeurs Btrfs travaillent sur la déduplication inband (également connue sous le nom de déduplication synchrone ou en ligne), c’est-à-dire la déduplication effectuée lors de l’écriture de nouvelles données sur le système de fichiers. Actuellement, il s’agit encore d’une expérience développée en dehors de l’arborescence. Les utilisateurs désireux de tester la nouvelle fonctionnalité doivent lire la page appropriée du wiki du noyau.

Problèmes connus

Quelques limites devraient être connues avant d’essayer.

Chiffrement

Btrfs n’a pas de pris en charge intégrée du chiffrement, mais cela pourrait venir dans le futur. Les utilisateurs peuvent chiffrer la partition avant d’exécuter . Voir dm-crypt/Encrypting an entire system#Btrfs subvolumes with swap.

Les systèmes de fichiers Btrfs existants peuvent utiliser quelque chose comme EncFS ou TrueCrypt, bien que peut-être sans certaines fonctionnalités de Btrfs.

Fichier d'échange

Les fichier d'échange dans Btrfs sont pris en charge depuis le noyau Linux 5.0. La façon correcte d'initialiser un fichier d'échange est de créer d'abord un sous-volume non-snapshoté pour héberger le fichier, puis de définir l'attribut sur le répertoire entier avec chattr.

# chattr +C /path/to/swapsubvolume

À partir de maintenant, tout nouveau fichier créé dans le sous-volume d'échange aura l'attribut défini.

Continuez avec les étapes de Swap (Français)#Création de fichiers d'échange. La configuration de l'hibernation vers un fichier swap est décrite dans Power management/Suspend and hibernate#Hibernation into swap file on Btrfs.

TLP

L’utilisation de TLP nécessite des précautions particulières afin d’éviter la corruption du système de fichiers. Reportez-vous à la section TLP correspondante pour plus d’informations.

Trucs et astuces

Disque Btrfs sans partition

Btrfs peut occuper tout un périphérique de stockage de données, en remplaçant les schémas de partitionnement MBR ou GPT, en utilisant des #Sous-volumes pour simuler les partitions.

Cependant, l’utilisation d’une configuration sans partition n’est pas nécessaire #Création du système de fichiers sur une partition existante qui a été créée en utilisant une autre méthode. Il y a certaines limitations aux configurations de disques uniques sans partition:

  • Ne peut pas utiliser l'UEFI pour démarrer.

Pour écraser la table de partition existante avec Btrfs, exécutez la commande suivante:

# mkfs.btrfs /dev/sdX

Par exemple, utilisez plutôt que . Ce dernier formaterait une partition existante au lieu de remplacer l’ensemble du schéma de partitionnement. Installez le chargeur d'amorçage comme vous le feriez pour un périphérique de stockage de données avec un Master Boot Record. Voir Syslinux installation manuelle ou GRUB (Français)/Tips and tricks (Français)#Installer sur une partition ou un disque sans partition[broken link: invalid section].

Conversion Ext3/4 en Btrfs

Démarrez à partir d'un CD d'installation, puis convertissez en faisant:

# btrfs-convert /dev/partition

Montez la partition et testez la conversion en vérifiant les fichiers. Assurez-vous de changer le pour refléter le changement (type btrfs et fs_passno [le dernier champ] à 0 car Btrfs ne vérifie pas le système de fichiers au démarrage).

Notez également que l'UUID de la partition aura changé, donc mettez à jour fstab en conséquence lors de l'utilisation des UUIDs. (chrooter) dans le système et reconstruire la liste de menus GRUB (voir Installation par chroot et GRUB (Français)).

Si vous convertissez un système de fichiers racine, tout en restant chrooté, exécutez pour régénérer les initramfs ou le système ne démarrera pas correctement.

Si vous êtes coincé dans grub avec 'unknown filesystem' essayez de réinstaller grub avec et régénérez la configuration ainsi que . Après avoir confirmé qu'il n' y a pas de problèmes, terminez la conversion en supprimant le sous-volume de sauvegarde . Notez que vous ne pouvez pas revenir à ext3/4 sans lui.

# btrfs subvolume delete /ext2_saved

Enfin #Balance (équilibrer) le système de fichiers pour récupérer l'espace.

N'oubliez pas que certaines applications qui ont été installées auparavant doivent être adaptées à Btrfs.

Checksum accélération matérielle

Pour vérifier si le checksum de Btrfs est matériellement accéléré:

Si vous voyez , c'est probablement parce que votre partition racine doit être Btrfs, et vous devrez compiler dans le noyau pour qu'il fonctionne. Mettre dans mkinitcpio.conf ne fonctionne pas.

Récupération de la corruption

btrfs-check ne peut pas être utilisé sur un système de fichiers monté. Pour pouvoir utiliser btrfs-check sans démarrer à partir d'un live USB, ajoutez-le au ramdisk initial:

Régénérer le disque initial à l'aide de mkinitcpio. Ensuite, s'il y a un problème de démarrage, l'utilitaire est disponible pour réparation.

Voir la page Btrfs wiki pour plus d'informations.

Démarrage en snapshots

Pour démarrer dans un snapshot, vous devez spécifier le sous-volume via un paramètre du noyau en utilisant rootflags=subvol=/path/to/subvolume et modifier votre pour pointer vers le même sous-volume en utilisant .

Alternativement, le sous-volume peut être spécifié avec son id récupérable avec par ex: et comme paramètre du noyau respectivement comme option de montage dans .

Si vous utilisez GRUB, vous pouvez automatiquement remplir votre menu de démarrage avec des snapshots btrfs lors de la régénération du fichier de configuration à l'aide de ou .

Utiliser les sous-volumes Btrfs avec systemd-nspawn

Voir Systemd-nspawn#Use Btrfs subvolume as container root et Systemd-nspawn#Use temporary Btrfs snapshot of container.

Résolution des problèmes

Voir la FAQ sur les problèmes de Btrfs pour le dépannage général.

Décalage de la partition

Le problème de décalage peut se produire lorsque vous essayez d'intégrer dans un disque partitionné. Cela signifie qu'il est correct d'intégrer grub's dans un pool Btrfs sur un disque sans partition (par ex: ) directement.

GRUB peut démarrer des partitions Btrfs, mais le module peut être plus grand que d'autres systèmes de fichiers. Et le fichier créé par peut ne pas correspondre aux 63 premiers secteurs (31.5KiB) du disque entre le MBR et la première partition. Les outils de partitionnement à jour tels que fdisk et évitent ce problème en compensant la première partition par environ 1MiB ou 2MiB.

Racine manquante

Utilisateurs connaissant la situation suivante: error no such device: root lors du démarrage à partir d'une configuration de style RAID, éditez puis éditez et supprimez les deux guillemets de la ligne: .

Régénérer la configuration pour grub et le système devrait démarrer sans erreur.

BTRFS: open_ctree a échoué

Depuis novembre 2014, il semble y avoir un bug dans systemd ou mkinitcpio causant l'erreur suivante sur les systèmes avec le système de fichiers Btrfs multi-périphériques utilisant le btrfs dans :

BTRFS: open_ctree failed
mount: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helicper program, or other error
In some cases useful info is found in syslog - try dmesg|tail or so.
You are now being dropped into an emergency shell.

Une solution de contournement consiste à supprimer du tableau dans et à ajouter des dans le tableau . Régénérez ensuite les initramfs avec (régler le Preset si nécessaire) et redémarrez.

Vous obtiendrez la même erreur si vous essayez de monter un raid array sans l'un des périphériques. Dans ce cas, vous devez ajouter l'option de montage dans . Si votre racine réside sur le tableau, vous devez également ajouter rootflags=degraded aux paramètres de votre noyau.

Depuis d'août 2016, une solution de contournement potentielle pour ce bug est de monter le tableau par un seul lecteur uniquement dans , et de permettre à de découvrir et ajouter les autres lecteurs automatiquement. Les identificateurs de groupe tels que UUID et LABEL semblent contribuer à l'échec.

Par exemple, un tableau RAID1 composé de 'disk1' et 'disk2' aura un UUID qui lui sera alloué, mais au lieu d'utiliser l'UUID, utiliser uniquement dans . Pour une explication plus détaillée, voir le billet suivant.

Une autre solution possible est de supprimer le hook dans mkinitcpio.conf et de le remplacer par le hook . Dans ce cas, les btrfs ne doivent pas être dans les tableaux HOOKS ou MODULES.

Voir le fil de discussion du forum d'origine et FS#42884 pour plus d'informations.

btrfs check

La commande de contrôle btrfs check peut être utilisée pour vérifier ou réparer un système de fichiers Btrfs non monté. Cependant, cet outil de réparation est encore immature et ne peut pas réparer certaines erreurs du système de fichiers même celles qui ne rendent pas le système de fichiers non montable.

Voir Btrfsck pour plus d'information.

Voir aussi

gollark: For developer tools, the Linux market is often much more significant.
gollark: PotatOS is so backward compatible that it can run programs written as long ago as a year, if they don't use any potatOS-specific APIs.
gollark: πωτατως
gollark: Don't you like Windows for its software support?
gollark: Also it would take years and vast amounts of effort.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.