Я хотел заменить диск в zpool, выполнив следующую команду:
zpool replace -o ashift=12 pool /dev/mapper/transport /dev/mapper/data2
ZFS приступила к работе и обновила пул. В процессе были некоторые ошибки чтения на старом диске, и после его завершения, zpool status -v
выглядело так:
pool: pool
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: resilvered 6,30T in 147h38m with 6929 errors on Sat Feb 11 13:31:05 2017
config:
NAME STATE READ WRITE CKSUM
pool ONLINE 0 0 16,0K
raidz1-0 ONLINE 0 0 32,0K
data1 ONLINE 0 0 0
replacing-1 ONLINE 0 0 0
transport ONLINE 14,5K 0 0
data2 ONLINE 0 0 0
data3 ONLINE 0 0 0
logs
data-slog ONLINE 0 0 0
cache
data-cache ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
<list of 3 files>
Я ожидал, что старый диск будет отсоединен от пула, но этого не произошло. Пробовал отсоединить вручную:
# zpool detach pool /dev/mapper/transport
cannot detach /dev/mapper/transport: no valid replicas
Но когда я экспортировал пул, удалил старый диск и снова импортировал пул, он, похоже, работал безупречно: он начал перенастраивать очередной раз, но он УНИЧТОЖЕН, а не ОТКАЗАН:
pool: pool
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 Sat Feb 11 17:28:50 2017
42,7G scanned out of 9,94T at 104M/s, 27h43m to go
1,68G resilvered, 0,42% done
config:
NAME STATE READ WRITE CKSUM
pool DEGRADED 0 0 9
raidz1-0 DEGRADED 0 0 18
data1 ONLINE 0 0 0
replacing-1 DEGRADED 0 0 0
15119075650261564517 UNAVAIL 0 0 0 was /dev/mapper/transport
data2 ONLINE 0 0 0 (resilvering)
data3 ONLINE 0 0 0 (resilvering)
logs
data-slog ONLINE 0 0 0
cache
data-cache ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
<list of 3 files>
Тем не менее, хотя это явно не требуется для полной функциональности пула, я не могу отсоединить старый диск:
# zpool offline pool 15119075650261564517
cannot offline 15119075650261564517: no valid replicas
Что происходит?
Обновить: Судя по всему, ZoL еще не отказалась от неисправных устройств. Замена 3 файлов с постоянными ошибками (один из которых был zvol, то есть мне пришлось создать еще один, dd conv=noerror
над содержимым и уничтожьте старый) и, дожидаясь окончательной обработки resilver, удалили старый диск.
Мне все равно было бы интересно, что думает ZoL. Я имею в виду, что все, что не вызывало ошибок чтения или контрольной суммы, было скопировано на новое устройство, и оно уже пометило сектора, которые вызвали ошибки, как навсегда отказавшие. Так зачем же цепляться за старое устройство, с которого ZoL явно не собирался получать никакой информации?