logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 26-01-2022 20:09:45

mazkagaz
Membre
Distrib. : Debian stable
Inscription : 13-05-2018

[résolu] pool zfs, changement de disque

(Je réédite ce post pour en faire un mini tuto)

J'ai un petit pool zfs en raid10 sur 4 disques de 2To, donc un pool de 4To.

Depuis quelques jours, je reçois des mails de smartcl m'alertant de secteur impossible à réallouer :

Device: /dev/sda [SAT], 328 Offline uncorrectable sectors



Du coup je me dis qu'il serait bon de remplacer ce disque.

J'ai donc acheté un disque identique en taille (2To) et en vitesse de rotation (7200T/min).

Étapes de remplacement du disque (les ID de disques et le nom du pool sont à adapter, bien évidemment) :

  1. noter l'ID du disque à remplacer. Pour ma part, je cherche l'ID de sda puisque c'est lui qui doit être remplacé :

    ls -l /dev/disk/by-id/ |grep sda


    lrwxrwxrwx 1 root root  9 30 janv. 10:03 ata-ST2000DM001-CH164_Z2F0PFGK -> ../../sda
    ...

  2. (Modifier les attributs autoreplace et autoexpend du pool.) D'après ma compréhension de ces attributs, cela permettrait de remplacer un disque de façon transparente en s'assurant de bien utiliser strictement le même slot de branchement que l'ancien disque avec le nouveau disque. Je le mets entre parenthèses, parce qu'en ce qui me concerne, ça n'a pas eu l'effet escompté et il me semble que ça n'a servi à rien :

    zpool set autoreplace=on tank
    zpool set autoexpand=on tank


  3. Éteindre l'ordinateur, identifier le disque et le remplacer. J'ai retrouvé le numéro Z2F0PFGK sur la tranche du disque incriminé, donc facile.  Rebrancher le nouveau à l'identique de l'ancien, au cas où l'autoreplace et l'autoexpand fonctionne. Pour ma part, les câbles SATA étant tous de couleurs différentes, c'est facile. Si ça n'est pas le cas, bien les repérer avant de débrancher l'ancien si le démontage implique d'en débrancher plusieurs.

  4. Redémarrer et vérifier si les attributs autoreplace et autoexpand ont fonctionné. Pour ma part, ça n'a visiblement pas fonctionné :

    zpool status


      pool: tank
     state: DEGRADED
    status: One or more devices could not be used because the label is missing or
      invalid.  Sufficient replicas exist for the pool to continue
      functioning in a degraded state.
    action: Replace the device using 'zpool replace'.
       see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
      scan: scrub repaired 0B in 00:18:14 with 0 errors on Fri Jan 21 18:29:21 2022
    config:

      NAME                                 STATE     READ WRITE CKSUM
      tank                                 DEGRADED     0     0     0
        mirror-0                           DEGRADED     0     0     0
          12605012481061099538             UNAVAIL      0     0     0  was /dev/disk/by-id/ata-ST2000DM001-1CH164_Z2F0PFGK-part1
          ata-ST2000DM001-1CH164_Z1E300G4  ONLINE       0     0     0
        mirror-1                           ONLINE       0     0     0
          ata-ST2000VX000-1ES164_Z4Z5WSDM  ONLINE       0     0     0
          ata-ST2000DL003-9VT166_5YD41SA0  ONLINE       0     0     0

    errors: No known data errors
     


  5. (si le remplacement automatique n'a pas fonctionné)Chercher l'ID du nouveau disque. Trouver dans la liste celui qui n'est ni dans /etc/fstab, ni dans le pool, ni nullepart ailleurs dans vos système de fichiers, raid...etc... Le plus simple aurait été de noter le numéro avant montage du disque (au cas où le remplacement auto ne marche pas wink ).

    ls /dev/disk/by-id/


    ...
    ata-ST2000DM008-2FR102_ZFL55AES
    ...


  6. (si le remplacement automatique n'a pas fonctionné)Lancer la commande de remplacement de disque :

    zpool replace tank ata-ST2000DM001-1CH164_Z2F0PFGK ata-ST2000DM008-2FR102_ZFL55AES


  7. À ce niveau, on devrait observer ceci :

    zpool status


      pool: tank
     state: DEGRADED
    status: One or more devices is currently being resilvered.  The pool will
      continue to function, possibly in a degraded state.
    action: Wait for the resilver to complete.
      scan: resilver in progress since Sun Jan 30 10:37:01 2022
      272G scanned at 33.9G/s, 130G issued at 16.3G/s, 272G total
      23.5M resilvered, 47.90% done, 00:00:08 to go
    config:

      NAME                                   STATE     READ WRITE CKSUM
      tank                                   DEGRADED     0     0     0
        mirror-0                             DEGRADED     0     0     0
          replacing-0                        DEGRADED     0     0     0
            12605012481061099538             UNAVAIL      0     0     0  was /dev/disk/by-id/ata-ST2000DM001-1CH164_Z2F0PFGK-part1
            ata-ST2000DM008-2FR102_ZFL55AES  ONLINE       0     0     0  (resilvering)
          ata-ST2000DM001-1CH164_Z1E300G4    ONLINE       0     0     0
        mirror-1                             ONLINE       0     0     0
          ata-ST2000VX000-1ES164_Z4Z5WSDM    ONLINE       0     0     0
          ata-ST2000DL003-9VT166_5YD41SA0    ONLINE       0     0     0

    errors: No known data errors
     


  8. Et quand tout est terminé :

    zpool status


      pool: tank
     state: ONLINE
      scan: resilvered 142G in 00:16:10 with 0 errors on Sun Jan 30 10:53:11 2022
    config:

      NAME                                 STATE     READ WRITE CKSUM
      tank                                 ONLINE       0     0     0
        mirror-0                           ONLINE       0     0     0
          ata-ST2000DM008-2FR102_ZFL55AES  ONLINE       0     0     0
          ata-ST2000DM001-1CH164_Z1E300G4  ONLINE       0     0     0
        mirror-1                           ONLINE       0     0     0
          ata-ST2000VX000-1ES164_Z4Z5WSDM  ONLINE       0     0     0
          ata-ST2000DL003-9VT166_5YD41SA0  ONLINE       0     0     0

    errors: No known data errors
     




Et voilà, problem solved ! Il ne reste plus qu'à détruire les données sur l'ancien disque avant de le jeter (dd if=/dev/urandom ...., scrub ...., wipe ...., perceuse, marteau, lance flamme, poste à souder...etc... à chacun sa technique).

Dernière modification par mazkagaz (30-01-2022 11:56:36)

Hors ligne

#2 26-01-2022 20:15:37

mazkagaz
Membre
Distrib. : Debian stable
Inscription : 13-05-2018

Re : [résolu] pool zfs, changement de disque

Je pars peut-être d'une fausse idée reçue concernant la fluctuation des capacités des disques selon les modèles, parce qu'en fait, en lisant les capacités de mes 4 disques, qui font déjà partie de deux familles de disques différents, j'observe des capacités strictement identiques sur les 4 :

User Capacity:    2000398934016 bytes [2,00 TB]

Hors ligne

#3 26-01-2022 20:34:07

vincen
Adhérent(e)
Lieu : Lausanne, Suisse
Distrib. : Debian 11/12
(G)UI : KDE
Inscription : 19-08-2021
Site Web

Re : [résolu] pool zfs, changement de disque

Aucun soucis à avoir si tu reprends un 2To (et attention même vitesse de rotation que les autres sinon tu vas pénaliser le pool !). Par contre un dd plus petit n'est en aucun cas possible, normalement le ZFS ne devrait pas accepter un resilver avec un DD plus petit que celui d'origine (un plus grand pose pas de soucis même si l'espace en sus sera inutilisé !).

J'écris en Bépo
Je stocke mes fichiers dans NextCloud
Tous mes ordinateurs tournent sous Linux et mes serveurs d'hébergement sous Linux/Webmin/Virtualmin wink
Vive l'informatique libre !

Hors ligne

#4 27-01-2022 00:45:02

mazkagaz
Membre
Distrib. : Debian stable
Inscription : 13-05-2018

Re : [résolu] pool zfs, changement de disque

OK, merci.
Effectivement, en vérifiant la capacité de divers disques durs de 2To sur mes PC, que ce soit des ssd, hdd ou nvme, ils ont tous exactement la même capacité au bit près : 2000398934016.
Du coup j'en ai commandé un nouveau, en 7200T/min, comme ses grand-pères qui l'attendent.
Encore merci !

Hors ligne

#5 27-01-2022 08:26:36

vincen
Adhérent(e)
Lieu : Lausanne, Suisse
Distrib. : Debian 11/12
(G)UI : KDE
Inscription : 19-08-2021
Site Web

Re : [résolu] pool zfs, changement de disque

mazkagaz a écrit :


Du coup j'en ai commandé un nouveau, en 7200T/min, comme ses grand-pères qui l'attendent.
Encore merci !


big_smile d'ailleurs si ton pool est en auto-expand (ce qu'il est en principe avec ZFS sous Linux) c'est le moyen d'upgrader la capacité d'un zpool. Tu remplaces le premier DD par du 6Toseuls 2To seront utilisés, et puis ensuite tu changes progressivement les autres DD du pool par des 6To et quand tu auras fini le resilver du dernier dd mis à jour, tu auras un pool qui augmentera de capacité tout seul cool


J'écris en Bépo
Je stocke mes fichiers dans NextCloud
Tous mes ordinateurs tournent sous Linux et mes serveurs d'hébergement sous Linux/Webmin/Virtualmin wink
Vive l'informatique libre !

Hors ligne

#6 28-01-2022 11:14:53

raleur
Membre
Inscription : 03-10-2014

Re : [résolu] pool zfs, changement de disque

Je ne connais pas le RAID de zfs, mais le RAID logiciel de Linux (md) réserve un peu d'espace pour s'ajuster à des disques de taille légèrement différente.
Tu as peut-être de la chance avec tes disques de 2 To ou bien il y a eu une standardisation depuis, mais mes disques plus anciens et plus petits de taille "commerciale" identique ont des tailles exactes légèrement différentes les uns des autres selon le constructeur et le modèle. Le plus gros écart que j'ai constaté était de 4 Go sur un disque de taille commerciale 160 Go qui faisait donc en réalité 164 Go. Impossible de le remplacer par un "vrai" 160 Go.

Il vaut mieux montrer que raconter.

Hors ligne

#7 30-01-2022 11:54:25

mazkagaz
Membre
Distrib. : Debian stable
Inscription : 13-05-2018

Re : [résolu] pool zfs, changement de disque

raleur a écrit :

Je ne connais pas le RAID de zfs, mais le RAID logiciel de Linux (md) réserve un peu d'espace pour s'ajuster à des disques de taille légèrement différente.
Tu as peut-être de la chance avec tes disques de 2 To ou bien il y a eu une standardisation depuis, mais mes disques plus anciens et plus petits de taille "commerciale" identique ont des tailles exactes légèrement différentes les uns des autres selon le constructeur et le modèle. Le plus gros écart que j'ai constaté était de 4 Go sur un disque de taille commerciale 160 Go qui faisait donc en réalité 164 Go. Impossible de le remplacer par un "vrai" 160 Go.


Ah, ça me rassure, il me semblait bien qu'il existait des fluctuations selon les modèles et/ou les constructeurs, au moins par le passé.

Bon, en tout cas, sur tous mes disques de 2To, je n'ai pas observé la moindre différence, donc il y a peut-être eu une standardisation depuis. Je dis peut-être parce que je n'ai pas cherché de source de confiance pour valider cette info qui se fonde uniquement sur mon expérience personnelle.

Hors ligne

Pied de page des forums