После этой ошибки zpool выбросил сбойный диск из пула. Очень странная ошибка. Смотрим smart данного диска:
# smartctl -d scsi -a /dev/rdsk/c6t5000C50056DFD131d0s0 ... Current Drive Temperature: 42 C Drive Trip Temperature: 40 C ...
Примечание.
Его можно посмотреть, только тогда, когда он будет доступен в пуле. То есть его нужно засунуть обратно в пул через fmadm repaired.
Речь идёт о дисках SAS ))
В гугле находим небольшое описание проблемы: http://www.bigdatajunkie.com/index.php/10-hardware/19-seagate-constellation-es-3-firmware-0003 . Оказывается, проблема в прошивке 0003. Решение приходит соответствующее: найти прошивку поновее и прошить диски. Идём сразу по URL https://apps1.seagate.com/downloads/request.html , вводим серийный номер диска (правильный серийник мне удалось узнать через утилиту sas2ircu; пример – Z1Y0B1H6) и получаем список необходимого ПО для вашего диска. На период написания статьи самая последняя прошивка была 0004. Скачиваем
Обновление встроенного ПО - Constellation ES.3 SAS
Так же, в самом верху нужно обратить внимание на Part Number (позже, на его основе и будет выбрана нужная прошивка). В моём случае он был таким
Номер детали (PN): 9ZM278-003
В скачанном архиве находим подпапки firmware и в ней 2 прошивки: MegalodonES3-SAS-SED-0004.LOD и MegalodonES3-SAS-STD-0004.LOD. Какую же из них выбрать? Ниже таблица из мануала (напомню, у нас PN 9ZM278)
Model# Part# Type Firmware file to use ST1000NM0023 9ZM273 STD MegalodonES3-SAS-STD-0004.LOD ST2000NM0023 9ZM275 STD MegalodonES3-SAS-STD-0004.LOD ST3000NM0023 9ZM278 STD MegalodonES3-SAS-STD-0004.LOD ST4000NM0023 9ZM270 STD MegalodonES3-SAS-STD-0004.LOD ST1000NM0043 1C1273 SED MegalodonES3-SAS-SED-0004.LOD ST2000NM0043 1C1275 SED MegalodonES3-SAS-SED-0004.LOD ST3000NM0043 1C1278 SED MegalodonES3-SAS-SED-0004.LOD ST4000NM0043 1C1270 SED MegalodonES3-SAS-SED-0004.LOD STD Standard SED Self Encrypting Drive
Немного забегая наперёд, скажу, что если выберете не ту прошивку, утилита просто ругнёться и не даст прошить (возможно в вашем случае исход можем быть другим, будьте внимательны). Открываем Readme в архиве и смотрим: для нашего Part number подходит прошивка *-STD-*. Осталось дело за малым – прошить диск.
В архиве утилиты прошивки только под Linux, а у меня Solaris. Как-то не охота ребутаться, грузится с LiveCD, прошивать и потом обратно в Solaris (опять забегая наперёд, это стал единственный метод после нескольких проб), поэтому решил поискать варианты прошивки под Solaris.
fwflash – стандартная утилиты для прошивки дисков. Но прошить через неё не удалось, так как ругается, что превышен максимальный размер прошивки в 1.4Мб (а прошивка занимает 1.6Мб)
fwdl – нашёл на просторах сети эту утилиту, собрал под Solaris, запустил – error.
sg_write_buffer из пакета sg3_utils – тоже не захотела прошивать.
И так, выходи один – делать всё это из-под Linux’a. Ищем LiveCD на борту со smartmontools (я выбрал Gpated Live CD amd64), грузимся с него, назначаем IP/GW, запускаем screen (ибо там только одна консоль и переключиться на другие – нельзя), копируем на него распакованный (потому что архив в формате zip, а unzip’a там нету) архив ConstellationES3-Megalodon-SAS-0004 и приступаем к прошивке. Напомню, что наши диски будут видны как /dev/sgXX. Далее, через smartctl определяем нужные диски для прошивки:
# smartctl -a /dev/sg2 | egrep 'Rev|Prod'
Revision 0003
Product ST3000NM0023
Наш клиент. Приступаем к прошивке (сама утилита для прошивки seaflashlin-0.3.6_64):
# chmod +x "ConstellationES3-Megalodon-SAS-0004/linux cli tools/seaflashlin-0.3.6_64"
# ConstellationES3-Megalodon-SAS-0004/linux\ cli\ tools/seaflashlin-0.3.6_64 -f ConstellationES3-Megalodon-SAS-0004/firmware/MegalodonES3-SAS-STD-0004.LOD -d /dev/sg2
Downloading file MegalodonES3-SAS-STD-0004.LOD
....
Download SUCCESSFUL
И так прошиваем все диски: сначала смотрим через smartctl номер Rev и только тогда прошиваем. Напомню, что данная прошивка годится лишь для дисков, у которых текущая прошивка 000X. В противном случае можете сделать из диска кирпич.
После прошивок всех дисков, ОБЯЗАТЕЛЬНО выключаем сервер (перезагрузки недостаточно). И потом включаем и смотрим, что наша прошивка изменилась:
# smartctl -d scsi -a /dev/rdsk/c6t5000C50056DFD131d0s0 | egrep 'Prod|Rev|Temp' Product: ST3000NM0023 Revision: 0004 Temperature Warning: Enabled Current Drive Temperature: 33 C Drive Trip Temperature: 60 C