1 votes

Tester ZFS - comment détruire un pool UNAVAIL sans redémarrer

Je teste ZFSonLinux et j'ai un pool expérimental nommé usbcka. Il n'y a que des données de test. Je simule une défaillance matérielle pour déterminer le comportement dans ce scénario. Je sais que cette configuration n'a pas de redondance, c'est un risque accepté (décision non prise par moi). MODIFIER: informations supplémentaires: le système d'exploitation sera sur un stockage redondant.

root@carbon:~# zpool status -xv
  pool: usbcka
 state: UNAVAIL
status: Un ou plusieurs périphériques sont en panne en réponse à des échecs d'E/S.
action: Assurez-vous que les périphériques affectés sont connectés, puis exécutez 'zpool clear'.
   see: http://zfsonlinux.org/msg/ZFS-8000-HC
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    usbcka      UNAVAIL      0     0     0  réplicas insuffisantes
      usb1      EN LIGNE       0     0     0
      usb2      PANNE      0     0     0  trop d'erreurs

errors: Liste d'erreurs non disponibles (privilèges insuffisants)

Les périphériques usb1 et usb2 sont des périphériques LUKS montés avec cryptsetup.

** À titre de test, j'ai volontairement retiré physiquement le périphérique sous-jacent pour usb2 ** Supposons que le périphérique défaillant était un HDD qui était irréparable, une défaillance matérielle.

J'ai essayé

root@carbon:~# zpool destroy -f usbcka
impossible d'ouvrir 'usbcka' : l'E/S du pool est actuellement suspendue

root@carbon:~# zpool set failmode=continue usbcka
impossible de définir la propriété pour 'usbcka' : l'E/S du pool est actuellement suspendue

Aussi

zpool clear usbcka

ne fait rien, sortie vide

Aussi

zpool export usbcka

Bloque

Comment détruire le pool sans redémarrer?

Je veux utiliser les périphériques encore fonctionnels pour créer un nouveau pool

La raison pour laquelle je ne veux pas de redémarrage est que je teste comment ZFS échoue lorsqu'un périphérique est en panne, mon intention est d'utiliser ZFS au travail sur le serveur de l'entreprise. Ce serveur ne peut tout simplement pas être redémarré à ma guise si l'un des 10 disques tombe en panne, et il dispose de tiroirs hot-swap.

J'ai cherché des solutions, mais elles finissent toutes par une solution de redémarrage.

root@carbon:~# zfs list usbcka
impossible d'ouvrir 'usbcka' : l'E/S du pool est actuellement suspendue

root@carbon:~# zpool get all usbcka
NAME    PROPERTY                    VALUE                       SOURCE
usbcka  size                        174G                        -
usbcka  capacity                    1%                          -
usbcka  altroot                     -                           default
usbcka  health                      UNAVAIL                     -
usbcka  guid                        1317589842010265379         default
usbcka  version                     -                           default
usbcka  bootfs                      -                           default
usbcka  delegation                  on                          default
usbcka  autoreplace                 off                         default
usbcka  cachefile                   -                           default
usbcka  failmode                    wait                        default
usbcka  listsnapshots               off                         default
usbcka  autoexpand                  off                         default
usbcka  dedupditto                  0                           default
usbcka  dedupratio                  1.00x                       -
usbcka  free                        170G                        -
usbcka  allocated                   3.26G                       -
usbcka  readonly                    off                         -
usbcka  ashift                      13                          local
usbcka  comment                     -                           default
usbcka  expandsize                  -                           -
usbcka  freeing                     0                           default
usbcka  fragmentation               1%                          -
usbcka  leaked                      0                           default
usbcka  feature@async_destroy       enabled                     local
usbcka  feature@empty_bpobj         enabled                     local
usbcka  feature@lz4_compress        active                      local
usbcka  feature@spacemap_histogram  active                      local
usbcka  feature@enabled_txg         active                      local
usbcka  feature@hole_birth          active                      local
usbcka  feature@extensible_dataset  enabled                     local
usbcka  feature@embedded_data       active                      local
usbcka  feature@bookmarks           enabled                     local
usbcka  feature@filesystem_limits   enabled                     local
usbcka  feature@large_blocks        enabled                     local

0voto

meetunix Points 1

J'ai eu le même problème sur debian testing avec le noyau 4.14 et le module zfs 0.7.6. Mais je pense que ce comportement est le même sur toutes les machines Linux.

Pour détruire un pool UNAVAIL, où le statut ressemble à :

utilisateur@système: ~ $ sudo zpool status -xv
pool: icy_tank
state: UNAVAIL
status: Un ou plusieurs périphériques sont défaillants en réponse à des échecs d'E/S.
action: Assurez-vous que les périphériques affectés sont connectés, puis exécutez 'zpool clear'.
voir: http://zfsonlinux.org/msg/ZFS-8000-HC
scan: none requested
config:

    NOM         ÉTAT      LECTURE ÉCRITURE CKSUM
    icy_tank    UNAVAIL      0     0     0  réplicas insuffisantes
      sdb       UNAVAIL      0     0     0

erreurs: Liste des erreurs non disponible : les E/S du pool sont actuellement suspendues

Vous devez redémarrer zed, le démon des événements zfs en redémarrant tout le systemd zfs-target.

sudo systemctl restart zfs.target

Après cette étape, le pool peut être effacé.

sudo zpool clear icy_tank

Si le périphérique (par exemple sdb) est disponible à ce moment-là et que sdb fait partie du pool, zpool lancera immédiatement un scrub sur le périphérique.

pool: icy_tank
state: ONLINE
status: Un ou plusieurs périphériques ont rencontré une erreur entraînant une corruption des données. Les applications peuvent être affectées.
action: Restaurer le fichier en question si possible. Sinon, restaurer l'ensemble du pool à partir de la sauvegarde.
voir: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub en cours depuis Mercredi  7 mars 20:27:55 2018
    316M scanné sur 121G à 9,89M/s, 3h28m restantes
    0B réparé, 0,26% terminé
config:

    NOM         ÉTAT      LECTURE ÉCRITURE CKSUM
    icy_tank    ONLINE       0     0     0
      sdb       ONLINE       0     0     0

erreurs: 4 erreurs de données, utilisez '-v' pour une liste

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X