
У меня возникли проблемы с заменой диска в существующем zpool в системе с Solaris 10 на процессоре x86. Изначально zpool был создан с двумя зеркальными слайсами. Один из дисков вышел из строя, поэтому я заменил его физически на новый. Я запустил prvtoc и fmthard, чтобы скопировать метку диска с рабочего диска на новый:
prtvtoc /dev/rdsk/c1t0d0s2 >/tmp/c1t0d0s2.out
fmthard -s /tmp/c1t0d0s2.out >/dev/rdsk/c1t1d0s2
Затем я попытался подключить новый диск и получил предупреждение о том, что устройство по-прежнему неисправно:
$ zpool online pool c1t1d0s6
warning: device 'c1t1d0s6' onlined, but remains in faulted state
Вывод zpool status -v:
NAME STATE READ WRITE CKSUM
pool DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
c1t0d0s6 ONLINE 0 0 0
c1t1d0s6 UNAVAIL 0 0 0 corrupted data
(c1t1d0 — замененный диск.)
Затем я снова перевел c1t1d0 в автономный режим и попытался выполнить команду zpool replace, но это тоже не сработало:
$ zpool replace pool c1t1d0s6
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t1d0s6 overlaps with /dev/dsk/c1t1d0s2
Кто-нибудь знает, что происходит? Безопасно ли использовать флаг '-f'?
Редактировать:После запуска zpool replace -f я получаю:
pool: pool
state: DEGRADED
status: The pool is formatted using an older on-disk format. The pool can
still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'. Once this is done, the
pool will no longer be accessible on older software versions.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
pool DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
c1t0d0s6 ONLINE 0 0 0
replacing-1 UNAVAIL 0 0 0 insufficient replicas
c1t1d0s6/old OFFLINE 0 0 0
c1t1d0s6 UNAVAIL 0 342 0 experienced I/O failures
Я вижу ошибки на новом диске в выводе iostat -e. Думаю, новый диск тоже может быть плохим?
Редактировать 2: Я не знаю, что происходит. Я попробовал другой диск с той же процедурой. После запуска zpool replace -f пул zfs выполнил очистку, но вывод статуса такой:
pool: pool
state: ONLINE
status: The pool is formatted using an older on-disk format. The pool can
still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'. Once this is done, the
pool will no longer be accessible on older software versions.
scrub: scrub completed after 12h56m with 0 errors on Wed Aug 29 06:49:16 2012
config:
NAME STATE READ WRITE CKSUM
pool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c1t0d0s6 ONLINE 0 0 0
replacing-1 ONLINE 5.54M 19.9M 0
c1t1d0s6/old UNAVAIL 0 0 0 corrupted data
c1t1d0s6 UNAVAIL 0 0 0 corrupted data
После отключения c1t1d0s6 вывод состояния zpool будет следующим:
pool: pool
state: ONLINE
status: The pool is formatted using an older on-disk format. The pool can
still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'. Once this is done, the
pool will no longer be accessible on older software versions.
scrub: scrub completed after 12h56m with 0 errors on Wed Aug 29 06:49:16 2012
config:
NAME STATE READ WRITE CKSUM
pool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c1t0d0s6 ONLINE 0 0 0
replacing-1 ONLINE 5.54M 19.9M 0
c1t1d0s6/old UNAVAIL 0 0 0 corrupted data
c1t1d0s6 UNAVAIL 0 0 0 corrupted data
Я не понимаю. Разве система не должна иметь возможность заменить c1t1d0s6, используя зеркало на c1t0d0s6?
решение1
Вы очистили оповещения в fmadm
? И zpool clear
... Запускать zpool replace с переключателем безопасно -f
, но я думаю, что ваше утверждение неверно, если только вы уже не удалили плохой диск.
http://docs.oracle.com/cd/E19253-01/819-5461/gbcet/index.html
решение2
Проверьте кабели или салазки и слот для дисков. Шумное соединение SATA приведет к ошибкам, и fmadm использует эту информацию, чтобы определить, когда устройство неисправно. У меня были диски, которые я считал плохими, но это была просто ZFS, которая заметила, что они не получают достоверные данные надежно. Я заметил пережатый кабель SATA, заменил его и запустил , zpool clear
и zpool scrub
больше никаких ошибок.