Device /scsi_vhci/disk@g5000c5007171e03f failed to power up

Вот такое сообщения я получаю, когда пробую установить Solaris. И так ругается на все 6 дисков, которые есть в сервере. Как итог: система не ставится, так как все диски в offline.

Мудрые коллеги подсказали, что это проблема контроллера Dell Perc H200, а точнее проблема энергосбережения, а так же подсказали решение , но оно уже годится для установленной системы.

Под FreeBSD под этот контроллер нету энергосбережения, поэтому там таких проблем нет и система на него ставится без проблем.

Тестовый стенд: сервер Dell R715, контроллер Dell Perc H200, диски SEAGATE ST9300653SS

Но как же тогда поставить ОС? Вот какой план (тоже подсказали мудрые коллеги):

1) создаём RAID1 из 2-х дисков (дело в том, что Perc H200 не позволяет создавать RAID0 из 1-го диска) через утилиту контроллера (не забудьте сделать его BOOT)
2) ставим ОС на этот рейд
3) после установки правим файл /kernel/drv/sd.conf
4) перегружаемся и делаем зеркальный пул rpool из рейда и любого оставшегося диска, дожидаемся синхронизации, делаем detach рейду, и опять attach уже другому диску.
5) после этого перегружаемся и удаляем рейд через утилиту контроллера.

А что делать, если дисков всего 2? Как быть? Об это читаем в самом конце в примечании «классный хак», любезно предоставленным, одним из наших читателей.

И так, приступаем. Будем считать, что ОС уже стоит на железном RAID1. Нужно узнать модель дисков. Самый простой вариант — использовать утилиту sas2ircu:

# sas2ircu 0 DISPLAY
...
Device is a Hard disk
Enclosure # : 1
Slot # : 4
State : Optimal (OPT)
Size (in MB)/(in sectors) : 286102/585937499
Manufacturer : SEAGATE
Model Number : ST9300653SS
Firmware Revision : YS0A
Serial No : 6XN5SXSR
Protocol : SAS
Drive Type : SAS_HDD
...

Посмотрим на наши диски

# format
Searching for disks...
AVAILABLE DISK SELECTIONS:
0. c0t5000C5007171E03Fd0 <Unknown>
/scsi_vhci/disk@g5000c5007171e03f
1. c0t5000C50071731FA3d0 <Unknown>
/scsi_vhci/disk@g5000c50071731fa3
2. c0t5000C50071732A7Bd0 <Unknown>
/scsi_vhci/disk@g5000c50071732a7b
3. c0t5000C500715225EFd0 <Unknown>
/scsi_vhci/disk@g5000c500715225ef
4. c7t33E280EF5B5FF183d0 <Dell-Virtual Disk-1028-278.88GB>
/pci@0,0/pci1002,5a18@4/pci10b5,8624@0/pci10b5,8624@0/pci1028,1f1e@0/iport@v0/disk@w33e280ef5b5ff183,0
Specify disk (enter its number): ^C

Как видим, они определились как Unknown. Далее, вносим такую строку в файл /kernel/drv/sd.conf:

sd-config-list= "SEAGATE ST9300653SS","power-condition:false";

Делаем

# bootadm update-archive

и перегружаемся.

Для нескольких дисков команда выглядит так:

sd-config-list= "SEAGATE ST9300653SS","power-condition:false",
                "SEAGATE ST33000650SS","power-condition:false";

Смотрим статус нашего пула

# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: resilvered 36.9G in 0h3m with 0 errors on Wed Feb 26 11:12:3 2014
config:

        NAME                       STATE     READ WRITE CKSUM
        rpool                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
             c7t33E280EF5B5FF183d0 ONLINE       0     0     0

errors: No known data errors

Смотрим наши диски

# format
Searching for disks...
AVAILABLE DISK SELECTIONS:
0. c0t5000C5007171E03Fd0 <SEAGATE-ST9300653SS-YS0A-279.40GB>
/scsi_vhci/disk@g5000c5007171e03f
1. c0t5000C50071731FA3d0 <SEAGATE-ST9300653SS-YS0A cyl 107799 alt 2 hd 4 sec 1358>
/scsi_vhci/disk@g5000c50071731fa3
2. c0t5000C50071732A7Bd0 <SEAGATE-ST9300653SS-YS0A cyl 107799 alt 2 hd 4 sec 1358>
/scsi_vhci/disk@g5000c50071732a7b
3. c0t5000C500715225EFd0 <SEAGATE-ST9300653SS-YS0A cyl 107799 alt 2 hd 4 sec 1358>
/scsi_vhci/disk@g5000c500715225ef
4. c7t33E280EF5B5FF183d0 <Dell-Virtual Disk-1028-278.88GB>
/pci@0,0/pci1002,5a18@4/pci10b5,8624@0/pci10b5,8624@0/pci1028,1f1e@0/iport@v0/disk@w33e280ef5b5ff183,0
Specify disk (enter its number): ^C

Теперь наши диски видятся нормально. Делаем зеркальный пул:

# zpool attach rpool c7t33E280EF5B5FF183d0 c0t5000C5007171E03Fd0
Make sure to wait until resilver is done before rebooting.

По окончанию удаляем RAID1 из пула и добавляем обычный диск:

# zpool detach rpool c7t33E280EF5B5FF183d0
# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: resilvered 36.9G in 0h3m with 0 errors on Wed Feb 26 11:12:3 2014
config:

        NAME                       STATE     READ WRITE CKSUM
        rpool                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
             c0t5000C5007171E03Fd0 ONLINE       0     0     0

errors: No known data errors
# zpool attach rpool c0t5000C5007171E03Fd0 c0t5000C50071731FA3d0
Make sure to wait until resilver is done before rebooting.
# zpool status rpool
  pool: rpool
 state: ONLINE
  scan: resilvered 36.9G in 0h3m with 0 errors on Wed Feb 26 15:11:36 2014
config:

        NAME                       STATE     READ WRITE CKSUM
        rpool                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
            c0t5000C5007171E03Fd0  ONLINE       0     0     0
            c0t5000C50071731FA3d0  ONLINE       0     0     0

errors: No known data errors

Классный хак.

Тут мы меняем налету sd-config-list с помощью такой последовательности:

shell

echo 'sd-config-list= "SEAGATE ST9300653SS","power-condition:false";' >> /kernel/drv/sd.conf
update_drv -vf sd
exit

install

shell

beadm mount solaris /a
echo 'sd-config-list= "SEAGATE ST9300653SS","power-condition:false";' >> /a/kernel/drv/sd.conf
bootadm update-archive -R /a
reboot

PS. в файле sd.conf можно прописывать различные параметры. К примеру,

"HGST    HUSMH8020BSS204", "throttle-max:32,disksort:false,power-condition:false,physical-block-size:4096",
"", "retries-timeout:1,retries-busy:1,retries-reset:1,retries-victim:2",
"*INTELSSD*","disksort:false, cache-nonvolatile:true, physical-block-size:8192";

Больше параметров можно посмотреть здесь

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *