Passage à Btrfs

Liste des GroupesRevenir à fmb linux 
Sujet : Passage à Btrfs
De : tanguy (at) *nospam* ortolo.eu (Tanguy Ortolo)
Groupes : fr.misc.bavardages.linux fr.comp.os.linux.configuration
Suivi-à : fr.comp.os.linux.configuration
Date : 07. Mar 2025, 13:08:13
Autres entêtes
Message-ID : <vqenjd$19kj8$1@herbert.ortolo.eu>
User-Agent : tin/2.6.2-20221225 ("Pittyvaich") (Linux/6.12.9+bpo-amd64 (x86_64))
RAID avec LVM
=============

Sur mon serveur perso, j'ai depuis des années deux SSD en RAID logiciel
grâce à lvmraid(7). C'est très pratique, du fait que c'est intégré à
LVM : avec un groupe de volumes contenant les deux SSD, on peut créer à
volonté des volumes logiques simples ou redondés en RAID1 sur les deux
volumes physiques.

Bref, ça marchait bien, sauf qu'en fait, pas tant que ça. En effet,
lvmraid et très bien pour se prémunir d'une panne totale d'un des deux
périphériques. Mais pas pour les cas de dégradation des données ou
/bitrot/, où une donnée écrite sur les deux périphériques se retrouve
différente sur les deux au moment de la lecture. Pas moyen de savoir
laquelle a été dégradée et laquelle est correcte.

Avec lvmraid donc, on peut faire tourner une procédure de récurage
ou /scrubbing/ qui permet de vérifier la cohérence des données ou de
réparer les incohérences… en prenant arbitrairement les données du
prémier périphériques. Vous imaginez bien que ce n'est pas très
satisfaisant, d'autant que dans mon cas, le récurage repérait
effectivement quelques milliers d'erreurs à chaque fois. \o/

Heureusement, lvmraid permet également de mettre en place une couche
de vérification d'intégrité des données. Avec cela, le récurage peut
bien déterminer quelles données ont été corrompues et récupérer les
données originales (si elles existent, parce qu'on peut bien avoir une
corruption sur les deux périphériques…). Sauf qu'il ne fournit aucune
statistique, et ne permet donc pas de savoir quel périphérique est en
train de déconner et devrait être remplacé.

Au passage, l'ajout d'une couche d'intégrité empêche par la suite de
créer des instantanés. Dommage, j'utilisais ça pour faire des
sauvegardes cohérentes.

J'ai cherché ce que je pouvais mettre en place qui réponde mieux à mon
besoin de redondance, de protection contre la dégradation des données et
d'identification des problèmes. Place à Btrfs !

Btrfs
=====

Pour info, cela fait des années que j'évite Btrfs, refroidi par le fait
que ça n'a jamais été déclaré intégralement stable. Mais j'ai fini par
franchir le pas, armé de sauvegardes systématiques pour parer à toute
éventualité. En matière de système de fichiers, on n'est pas là pour
rigoler.

Le passage à Btrfs implique un vrai changement de paradigme, l'idée
générale étant d'avoir un unique système de fichiers Btrfs avec des
/sous-volumes/ pour les différents points de montage qu'on compte
utiliser, typiquement /, /home, /var/log, /var/spool/news et que sais-je
encore. On pourrait utiliser plusieurs systèmes de fichiers Btrfs, mais
ce serait du gaspillage et une perte de flexibilité.

L'unique système de fichiers Btrfs donc, peut être mis en place sur
plusieurs périphériques, avec un mécanisme de RAID1 interne, qui
contrairement à celui de LVM fonctionne grosso-modo sur des morceaux de
fichiers (des /extents/) et non sur des blocs de stockage.

Le fait d'utilisr un unique système de fichiers ressemble à ne pas
séparer /, /home et compagnie, mais l'utilisation de sous-volumes a
quand même deux intérêts :
- lorsqu'on prend des instantanés (btrfs-subvolume(8) snapshot), ceux-ci
  s'arrêtent aux limites de sous-volumes ;
- on peut mettre en place des quotas par sous-volumes (btrfs-quota(8) et
  btrfs-qgroup(8)), pour éviter de remplir tout le système de fichiers
  avec des logs par exemple.

Il y a également quelque chose d'intéressant qui s'appelle la
disposition des sous-volumes Btrfs, j'en parlerai sûrement plus tard.

Concernant les fonctionnalités de la redondance en RAID1, Btrfs inclut
une intégrité de toutes les données, et peut détecter et corriger les
erreurs à la lecture, ou lors de l'exécution de sa procédure de récurage
btrfs-scrub(8). Et, contrairement à lvmraid, il permet de savoir quel
périphérique cause des erreurs d'intégrité (btrfs-device(8) stats) !

Surprise
========

Dans tout ça, le plus surprenant, c'est que, alors que j'avais des
erreurs de cohérence des données entre les deux périphériques sous
lvm-raid(8), avec Btrfs je n'ai plus rien de tel. Comme LVM me signalait
de temps en temps des avertissements à propos d'alignement, je me
demande sérieusement si je n'étais pas en train de faire les frais d'un
genre de bug lié à cette question.

--
. o .
. . o       Tanguy
o o o

Date Sujet#  Auteur
7 Mar 25 o Passage à Btrfs1Tanguy Ortolo

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal