testando o ZFS - como destruir um conjunto UNAVAIL sem reinicializar

1

Estou testando o ZFSonLinux e tenho um pool experimental chamado usbcka . Há apenas dados de teste. Estou simulando falha de HW para determinar o comportamento nesse cenário. Eu sei que essa configuração não tem redundância, isso é aceito como um risco (decisão não feita por mim). EDITAR: informações adicionais: o sistema operacional estará em armazenamento redundante

root@carbon:~# zpool status -xv
  pool: usbcka
 state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: http://zfsonlinux.org/msg/ZFS-8000-HC
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    usbcka      UNAVAIL      0     0     0  insufficient replicas
      usb1      ONLINE       0     0     0
      usb2      FAULTED      0     0     0  too many errors

errors: List of errors unavailable (insufficient privileges)

Os dispositivos usb1 e usb2 são dispositivos LUKS montados com cryptsetup.

** Como teste, intencionalmente removi fisicamente o dispositivo subjacente de usb2 ** Suponha que o dispositivo com falha fosse um HDD que estava além do reparo, falha de HW.

Eu tentei

root@carbon:~# zpool destroy -f usbcka
cannot open 'usbcka': pool I/O is currently suspended

root@carbon:~# zpool set failmode=continue usbcka
cannot set property for 'usbcka': pool I/O is currently suspended

zpool clear usbcka

não faz nada, saída vazia

zpool export usbcka

trava

Como destruir o pool sem reiniciar?

Eu quero usar os dispositivos ainda em funcionamento para criar um novo pool

A razão pela qual eu não quero uma reinicialização é que estou testando como o ZFS falha quando um dispositivo está com falha, minha intenção é usar o ZFS no trabalho no servidor da empresa. Esse servidor simplesmente não pode ser reinicializado ao meu capricho se um dos 10 discos falhar e tiver bandejas de troca a quente.

Eu pesquisei soluções, mas todas acabaram com uma solução de reinicialização.

root@carbon:~# zfs list usbcka
cannot open 'usbcka': pool I/O is currently suspended

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
    
por Sidias-Korrado 24.02.2016 / 12:03

1 resposta

0

Eu tive o mesmo problema no teste Debian com o kernel 4.14 e o módulo zfs 0.7.6. Mas eu acho que esse comportamento é o mesmo em todas as caixas Linux.

Para destruir um pool UNAVAIL , onde o status é semelhante:

user@system: ~ $ sudo zpool status -xv
pool: icy_tank
state: UNAVAIL
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
see: http://zfsonlinux.org/msg/ZFS-8000-HC
scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    icy_tank    UNAVAIL      0     0     0  insufficient replicas
      sdb       UNAVAIL      0     0     0

errors: List of errors unavailable: pool I/O is currently suspended

você tem que reiniciar o zed , o daemon do evento zfs primeiro reiniciando todo o systemd zfs-target .

sudo systemctl restart zfs.target

Após essa etapa, o pool pode ser limpo.

sudo zpool clear icy_tank

Se o dispositivo (por exemplo, sdb) estiver disponível neste momento e o sdb fizer parte do pool, o zpool iniciará imediatamente uma depuração no dispositivo.

pool: icy_tank
state: ONLINE
status: One or more devices has experienced an error resulting in data
    corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
    entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub in progress since Wed Mar  7 20:27:55 2018
    316M scanned out of 121G at 9,89M/s, 3h28m to go
    0B repaired, 0,26% done
config:

    NAME        STATE     READ WRITE CKSUM
    icy_tank    ONLINE       0     0     0
      sdb       ONLINE       0     0     0

errors: 4 data errors, use '-v' for a list
    
por 07.03.2018 / 20:45