ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2017:01:29:btrfs-convert_retour_d_experience

btrfs-convert : retour d'expérience

Btrfs” est un système de fichiers relativement récent, qui répond a ce que je recherche depuis un certain temps, notamment pour ses capacités à faire des “snapshot”.

btrfs-convert” est un utilitaire qui permet de convertir des systèmes de fichiers Ext2/3/4 existants en Btrfs.

Voila mon retour d'expérience: N'utilisez pas cet utilitaire

Pour être complet, je tiens a préciser que je n'ai utilisé que la version qui vient avec “Debian Jessie”. (Il est possible d'installer une version plus récente qu'on trouvera dans les “backports”.)

Comme souvent, je rédige ce post au fur et a mesure de mes découvertes: il ne s'agit pas d'un cours et les erreurs ne sont pas exclus.

Installation de btrfs

Si nécessaire, il faut installer la suite logiciels de base:

# aptitude install btrfs-tools

Ext2,3,4 conversion

La possibilité de convertir un système de fichiers Ext2/3/4 existant en BTRFS est très intéressante…

Avec ''btrfs-convert'' : Mise en garde et conseil

Attention

:!: Ayez des backups avant de procéder a une conversion

La commande pour effectuer la conversion s'appelle “btrfs-convert” et elle a plusieurs défauts , ainsi que quelques bugs… (pas trop grave a priori…)

Les défauts:

  1. Aucune verbosité: on ne voit pas la progression de la conversion.
  2. C'est long: lorsqu'il y a des millions de fichiers, compter plusieurs JOURS de conversion.

Bug que j'ai vu:

  1. Ca fait souvent sauter les ACLs de la racine de la partition. Utiliser “getfacl” pour faire une copie.
  2. btrfs check …” pourrait vous signaler des erreurs que vous ne pourrez corriger.
:!: Ces divers petits défauts et bugs m'ont fait renoncer a mettre en production des systèmes de fichiers convertit avec “btrfs-convert”: Donc finalement, je ne sais pas si c'est grave, ou très grave :-D

Conseils

S'il s'agit de convertir des partitions LVM, alors vous pouvez gagner en sécurité et en disponibilité en procédant comme suit:

  1. Avant conversion, faites un snapshot de la partition: a 10% de la taille de la source, c'est suffisant.
  2. Monter le snapshot en lecture seule.

En montant le snapshot en lecture seule, vous permettez quand même l'accès a la partition, malgré l'interruption de service du à la conversion.

Rappelez-vous: La durée de la conversion est indéterminée.

au plus simple

Pour faire vite, on fera:

# umount <mountpoint>
# btrfs-convert <device>

(ça peut être long en fonction du nombre de fichiers déjà présent)

btrfs-convert a la bonne idée de faire un backup de l'ancienne partition.
Lorsqu'on est satisfait de la conversion, après plusieurs minutes, plusieurs heures, ou plusieurs jours, on peut effacer le backup :

# mount -t btrfs <device> <mountpoint>
# btrfs subvolume delete <mountpoint/ext2_saved>

En détails

On va reprendre plus en détail la conversion, en exploitant les informations qui sont là : https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-convert

Après une conversion réussie (perso: elles ont toutes fonctionné… malgré mes réserves)

C'est la méthode conseillé.

# btrfs-convert <device>

Après, on mount. OK.

Après avoir monter la partition btrfs, il faut optimiser le système de fichier:

# btrfs filesystem defrag -v -r -f -t 32M <mount>

On peut virer le “-v” qui rend juste la commande plus bavarde.
(Temps d'exécution: <10 % du temps de la conversion)

Et enfin:

# btrfs balance start -m <mount>

(Temps d'exécution: <30 % du temps de la conversion)

Sans ''btrfs-convert''

Pour changer de système de fichier, le meilleur moyen reste d'utiliser les commandes “cp” ou “rsync:-D

En pratique, supposons qu'on a un système de disques s'appuyant sur LVM, et qu'on a suffisamment de place libre pour créer un nouveau volume.

Soit une partition en “/dev/vg0/mon_ext4” , avec un système de fichier “ext4” monter en “/mnt/warez-cochon”.

On crée un nouveau volume de la même taille (ou un peu plus grand…)

# lvcreate -L <TAILLE> -n mon_btrfs vg0

On formate le volume en btrfs:

# mkfs.btrfs /dev/vg0/mon_btrfs

On prépare un dossier pour le montage:

# mkdir -m 0000 /mnt/new_warez-cochon

On monte:

# mount /dev/vg0/mon_btrfs /mnt/new_warez-cochon

On synchronise les 2 systèmes de fichiers:

# rsync -ax -A -X --force --delete /mnt/warez-cochon /mnt/new_warez-cochon

On est censé prendre en compte le fait que la partition source (ici:“warez-cochon”) , peut changer en cours de synchronisation.
Perso, après une première synchronisation qui peut être très longue, j'arrête les services en faisant usage, et je passe la partition en lecture seule:

# mount -o remount,ro /mnt/warez-cochon

Et puis je fais une ultime synchronisation (qui devrait être beaucoup plus rapide) avec la commande “rsync”: j'ajoute l'option “-v” pour avoir une idée des fichiers qui ont changés entre temps…

Et enfin: “/mnt/warez-cochon” et “/mnt/new_warez-cochon” sont identique, mais sur 2 systèmes de fichiers differents.

Je laisse le lecteur terminer la mise en place…

Voila.

Comments




Si vous ne pouvez pas lire le code, téléchargez ce fichier .wav pour l'écouter.
blog/2017/01/29/btrfs-convert_retour_d_experience.txt · Dernière modification: 2017/01/29 18:24 par thierry

Outils de la page