web-dev-qa-db-fra.com

ZFS Pool hors de contrôle

Je suis en train de passer d'un raid classique de mdadm à un pool zfs et j'ai essuyé quelques difficultés que je tente de récupérer.

A l'origine, j'avais deux disques 4 To dans un miroir RAID 1.

J'ai ensuite mis deux nouveaux disques 4 To dans la machine et déconnecté les originaux. Je crée un zpool avec les nouveaux lecteurs dans un miroir, mais j’ai utilisé /dev/sda et /dev/sdb parce que c’est ce que le guide que j’utilisais me disait de faire, sans y penser.

Alors bien sûr, lorsque j'ai reconnecté les anciens disques pour copier les données, ils ont pris /dev/sdb et /dev/sdc, ce qui a créé l'un de mes deux lecteurs zfs /dev/sdd, ce qui a bien sûr gâché le pool zfs et a montré un comme UNAVAIL

Après avoir travaillé avec quelqu'un en ligne, j'ai réussi à faire passer le pool zfs en mode UUID par zpool export pool puis zpool import -d /dev/disk/by-uuid pool.

Cela m’a ensuite permis de détacher le lecteur UNAVAIL, que j’ai ensuite effacé et rajouté au zfs en tant que miroir du premier en utilisant /dev/disk/by-id. Au bout de quelques jours, il a bien résisté.

Maintenant, j'ai un zpool avec un périphérique ayant un entier long comme identifiant, et un autre avec une chaîne le long des lignes de ata-WDC_WD.... Je voulais tous les avoir sur la même page, donc je prévoyais de détacher le premier disque avec l'identifiant entier et de le rajouter en utilisant /dev/disk/by-id. Cependant, tenter de détacher me donne l'erreur suivante: cannot detach 13419994393693470939: only applicable to mirror and replacing vdevs.

Ok, alors j'ai essayé de le remplacer par un autre lecteur et j'ai eu cette erreur: cannot open '13419994393693470939': name must begin with a letter

Pendant que la piscine fonctionne, j'aimerais que tout soit dans un état cohérent. I pourrait utiliser les deux anciens disques pour créer un nouveau pool, copier les données, puis détruire l'ancien pool, puis ajouter ces lecteurs au nouveau (ce qui nécessite ensuite de renommer les pools, ce qui entraîne quelques interruptions de service entre-temps), mais j’ignorerais qu’il existe un moyen de contourner ce problème que je n’ai tout simplement pas trouvé.

2
sharf

Relancez simplement le processus que vous avez utilisé pour ré-identifier les disques la première fois:

  1. zpool export pool
  2. zpool import -d /dev/disk/by-id pool

Cela unifiera les lecteurs au format by-id. Vous pouvez utiliser by-uuid à la place si vous préférez qu'il soit dans ce format.

Les deux erreurs que vous obtenez sont les suivantes:

  • cannot detach: cette opération est refusée car ZFS pense qu'il n'y a pas d'autre réplique valide des données. Êtes-vous sûr d'avoir correctement configuré le pool dans un miroir? Il est également possible que la CLI interprète mal l'erreur et vous envoie un message d'erreur insensé; peut-être êtes-vous en train d'exécuter la commande avec le nom incorrect pour le lecteur par accident (voir le point suivant ci-dessous).
  • cannot open: Je ne peux pas vous en dire plus à partir des informations que vous avez fournies, mais je suppose que vous devez indiquer le chemin complet de cet appareil au lieu de son UUID uniquement.
2
Dan