+++
title = "Mes deux centimes : changer de disque dur avec btrfs"
date = 2020-11-16
[taxonomies]
tags = [ "btrfs", "système" ]
+++

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.

<!-- more -->

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 !

