Si tu te souviens bien, il y a fort longtemps, on l’avait fait avec LVM. C’était drôle mais finalement ptet pas autant qu’avec btrfs.

Salut les campeurs et haut les cœurs !

Tu as tes données sur un disque btrfs qui commence à avoir du plomb dans l’aile ? Tu te demandes comment tu vas transférer tous ses GIGA de pr0n sans devoir arrêter ton ordinateur préféré pendant des heures et des heures ? Et bien, je suis là pour tout grand coquin ;)

La réalité est triste et sans recours

Je suis moi aussi arrivé à ce constat amer : un disque dur, ça meurt et relativement vite. Idéalement, il faudrait le changer avant qu’il donne des signes de faiblesse mais sur unu machine de bureau, comme la mienne, ce n’est pas toujours évident de s’en rendre compte à temps.

Et donc mon disque de 3Tio commence à ramer sévère et je me dis qu’il va forcément péter un de ses 4. smartctl m’a confirmé qu’il avait déjà un pied dans la tombe, il est donc temps de faire quelque chose avant qu’il ne lâche au plus mauvais moment possible.

Bref, pour commencer, regardons un peu l’état des différents disques systèmes :

> lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda    8:0    0 149,1G  0 disk /
sdb    8:16   0   2,7T  0 disk /home
sdc    8:32   0   3,6T  0 disk
sr0   11:0    1  1024M  0 rom

Le premier disque est mon SSD sur lequel se trouve ma partition système btrfs / et quelques autres bricoles (notamment /srv pour des questions de perf quand j’ai des trucs à tester). Le nouveau disque a bien été reconnu comme /dev/sdc après un redémarrage donc tout va bien pour le moment.

Le coupable de lenteur est /dev/sdb que nous allons nous empresser de changer. Regardons déjà l’état dans lequel il est point de vue filesystem :

# btrfs filesystem show /home
Label: 'HOME'  uuid: dabf1951-c21e-4322-91c2-959f9680a903
	Total devices 1 FS bytes used 2.46TiB
	devid    1 size 2.73TiB used 2.48TiB path /dev/sdb

Bon, on y va ?

Oui, mon petit roudoudou, on y va ! Première et seule étape :

# btrfs replace start /dev/sdb /dev/sdc /home

Assez simple en principe : le device source, le device de destination et le système de fichiers que l’on cherche à tranférer. La commande se lance en arrière-plan, il n’y a donc pas à s’inquiéter pour le transfert de données en lui-même.

On peut très facilement vérifier le statut du transfert avec la commande suivante :

# btrfs replace status /home
2.0% done, 0 write errs, 0 uncorr. read errs

Cette commande en revanche est interactive et il faudra donc sortir à base de ctrl+c.

Oui donc, et après ?

Bah c’est tout mes loulous. Après, il n’y a qu’à patienter jusqu’à ce que le transfert soit complet (en ce qui me concerne ça a pris 18 heures). Toujours pour mon cas, j’avais une dernière chose à faire : je suis parti d’un disque de 3Tio et l’ai remplacé par un disque de 4Tio, il a donc fallu que j’agrandisse le système de fichiers btrfs a posteriori.

La commande est relativement simple aussi :

# btrfs filesystem resize max /home
Resize '/home' of 'max'

Et voilà, ça va encore plus vite que LVM en fait !