Замена диска в ZFS пошла не так, и теперь заменяющий диск, даже если он физически больше не присутствует, «застревает» в пуле, блокируя дальнейшие попытки замены. Как это убрать?
В пуле raidz3 с 11 дисками на OmniOS r151010 один из дисков вышел из строя. Я отключил проблемный диск, заменил его новым и перенастроил новый диск. Он начал повторно обновляться, а затем на заменяющем диске возникли ошибки. Dmesg показал «Ошибка команды SYNCHRONIZE CACHE». Я подумал, может ли это быть ослабленный кабель, поэтому выключил машину, переустановил диск и кабели и снова включил. Он начал перенастраивать, и через некоторое время возникла та же проблема. На этом этапе статус zpool для проблемного диска показывает
replacing-0 UNAVAIL 0 0 0 insufficient replicas
c4t5000C5004DC8693Fd0 OFFLINE 0 0 0
c4t50014EE658315C1Dd0 FAULTED 0 0 0 too many errors
Я решил попробовать другой диск и посмотреть, изменится ли это. Я подозревал, что это не так, но попробовать было легко. Я заменил диск в горячем режиме, а затем cfgadm -al показал
c8 scsi-sas connected configured unknown
c8::w50014ee6ad8f0df2,0 disk-path connected configured unknown
c8::w50014ee658315c1d,0 disk-path connected unconfigured unknown
Новый диск есть, но старый никуда не делся. Я перезапустил машину, чтобы очистить старое состояние, затем cfgadm -al показал только
c8 scsi-sas connected configured unknown
c8::w50014ee6ad8f0df2,0 disk-path connected configured unknown
Однако статус zpool по-прежнему показывает старый диск. Я попытался устранить неисправность, и теперь оригинальный диск и первая замена отключены.
replacing-0 UNAVAIL 0 0 0 insufficient replicas
c4t5000C5004DC8693Fd0 OFFLINE 0 0 0
c4t50014EE658315C1Dd0 OFFLINE 0 0 0
Что мне теперь делать, чтобы перенастроить новый заменяющий диск? Выполнение zpool replace на исходном диске или первая замена приводит к ошибке (здесь немного сокращено) «не удается открыть 'c4t500 ....' такого устройства нет в / dev / dsk».
При выполнении удаления zpool на c4t50014EE658315C1Dd0 появляется сообщение об ошибке «Не удается удалить c4t50014EE658315C1Dd0: можно удалить только неактивные устройства горячего резервирования, кеш, устройства верхнего уровня или журналы»
Я понял. Используйте zdb в пуле, чтобы получить GUID исходного диска, затем используйте формат, чтобы найти имя заменяющего диска, затем выполните
# zpool replace <pool> <GUID of original disk> <name of replacement disk>
Это выглядит так при переносе актуальных данных:
NAME STATE READ WRITE CKSUM
raid DEGRADED 0 0 0
raidz3-0 DEGRADED 0 0 0
replacing-0 UNAVAIL 0 0 0 insufficient replicas
c4t5000C5004DC8693Fd0 OFFLINE 0 0 0
c4t50014EE658315C1Dd0 OFFLINE 0 0 0
c4t50014EE6AD8F0DF2d0 ONLINE 0 0 0 (resilvering)
а затем вернуться в нормальное состояние после завершения.