Não consigo reproduzir seu cenário no momento, mas a primeira coisa que tentaria depois de uma falha desse tipo seria zpool reopen
do pool e possivelmente zpool online
do (s) dispositivo (s), se necessário. Por exemplo, quando você tem
$ sudo zpool status
pool: 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: scrub repaired 0 in 1h36m with 0 errors on Sun Dec 11 02:00:22 2016
config:
NAME STATE READ WRITE CKSUM
tank UNAVAIL 0 0 0 insufficient replicas
mirror-0 UNAVAIL 0 0 0 insufficient replicas
usb-ST4000DM_000-1F2168_000000000000-0:0-part1 UNAVAIL 0 0 0
usb-ST3000DM_001-1E6166_000000000000-0:1-part1 UNAVAIL 0 0 0
você poderia tentar
$ sudo zpool reopen tank
e se isso não esclarecer completamente as coisas também
$ sudo zpool online tank 'usb-ST4000DM_000-1F2168_000000000000-0:0-part1'
$ sudo zpool online tank 'usb-ST3000DM_001-1E6166_000000000000-0:1-part1'
É perfeitamente possível que apenas zpool reopen $POOL
faça o pool funcionar novamente, já que instrui o ZFS a reabrir todos os dispositivos associados ao pool. (A página man descreve resumidamente como Reabrir todos os vdevs associados ao pool. Não sei se ele irá disparar uma varredura do vdev ou se simplesmente tentará reabrir sob os nomes já conhecidos. ) Contanto que os dispositivos ainda sejam encontrados sob os mesmos nomes, isso deve ser suficiente, e pode ser suficiente se os dispositivos forem conhecidos por nomes alternativos (se um vdev varredura é realizada).
Talvez você ainda precise zpool clear
de erros de E / S, mas isso depende se o ZFS teve tempo de registrá-los. Se ambas as unidades morreram, é provável que o ZFS não tenha tido tempo para registrar os erros nas unidades, portanto zpool clear
não deve ser necessário.
Como um aparte, você também pode verificar a propriedade failmode
do pool ( zpool get failmode tank
). Parece que seu pool atualmente tem failmode=wait
, mas, para o seu caso de uso, failmode=continue
pode ser mais apropriado. Veja man 8 zpool
para uma descrição dos vários valores para a propriedade failmode
.