Наводим мосты между RAID-контроллером и операционной системой

Не удалось быстро найти информацию в сети по одному важному вопросу и пришлось решать его самостоятельно. А что б информация не пропала, решил оформить все это в небольшую заметку. Не претендую на уникальность, но думаю, что кому-нибудь это может пригодиться.

Собственно вопрос звучит таким образом — «Как наверняка определить какому тому на RAID-контроллере соответствует устройство в операционной системе». Дело в том, что если у вас большая СХД или сервер, то на контроллере может быть создано несколько дисковых томов. При этом многие операции по управлению ими могут осуществляться в «горячем» режиме без выключения питания сервера через специальные фирменные утилиты, включая программы для командной строки и с графическим интерфейсом. Так что понимать, какой же том вы решили инициализировать или удалить может быть очень полезно.

Для удобства обычно предусмотрена возможность при настройке контроллера указания для томов собственных названий (имен). Например, можно использовать такие слова как «database», «media» или «backup». Но возникает вопрос — как эта информация транслируется в операционную систему? Последняя, в случае Linux, оперирует такими понятиями, как устройство, скажем /dev/sdg. Косвенно можно попробовать угадать нужный том по его объему (проще всего через команду lsblk). Но это может не сработать, если у вас есть тома с одинаковым объемом, не говоря уже о том, что контроллер и операционная система считают «по-разному». Второй вариант — дать нагрузку на том каким-нибудь синтетическим тестом и визуально посмотреть, лампочки каких дисков стали чаще мигать. Но и этот вариант в случае текущей активной работы с данными может не дать ответа.

Для примера ниже приводится скриншоты программ управления от контроллера Adaptec (Microsemi) и LSI (Broadcom):

А в операционной системе эти же диски выглядят так (вываод lsblk для физических устройств и приведенного выше контроллера LSI):

sdf       8:80   0  81.9T  0 disk
sdg       8:96   0  63.7T  0 disk
sdh       8:112  0  54.6T  0 disk
Конечно в данном конкретном случае можно воспользоваться сравнением по размеру, но так бывает не всегда.

К счастью, возможность определить что к чему все-таки есть. Но для этого придется воспользоваться командной строкой (для примера — снова в Linux). Проще всего с Adaptec. Здесь достаточно установить (если вдруг этого еще не было сделано) пакет для работы со S.M.A.R.T. жестких дисков. И потом просто вызвать команду с указанием проверяемого физического устройства:

#smartctl -i /dev/sdg
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright © 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               Adaptec
Product:              DATA4
Revision:             V1.0
User Capacity:        55,995,625,635,840 bytes [55.9 TB]
Logical block size:   512 bytes
Physical block size:  16384 bytes
scsiModePageOffset: response length too short, resp_len=4 offset=4 bd_len=0
scsiModePageOffset: response length too short, resp_len=4 offset=4 bd_len=0
>> Terminate command early due to bad response to IEC mode page
A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

И вот в графе «Product» мы видим название тома, указанное в контроллере. С контроллером LSI эта схема, к сожалению, не срабатывает. Все имена дисков указываются у него одинаково с использованием названия контроллера.

Так что в этом случае придется воспользоваться фирменной программой storcli, которую можно скачать с сайта производителя (опять же — если этого не было сделано ранее), но и smartctrl нам тоже пригодится. Сначала смотрим на его вывод:

#smartctl -i /dev/sdg
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright © 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9361-8i
Revision:             4.68
User Capacity:        70,002,061,344,768 bytes [70.0 TB]
Logical block size:   512 bytes
Physical block size:  4096 bytes
Logical Unit id:      0x600605b00ca31460345282ee560e90ae
Serial number:        00ae900e56ee82e2245014a30cb00506
Device type:          disk
Local Time is:        Tue Apr 17 18:59:35 2018 MSK
SMART support is:     Unavailable - device lacks SMART capability.

Из этой информации запоминаем пункт «Logical Unit id». Теперь вызываем просмотр информации о томе (0 — номер контроллера, 2 — номер тома):

# storcli64 /c0 /v2 show all
Controller = 0
Status = Success
Description = None

/c0/v1 :
======

----------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache Cac sCC      Size Name   
----------------------------------------------------------------
0/1   RAID6 Optl  RW     Yes     RWBD  -   ON  54.571 TB RND
----------------------------------------------------------------

[... здесь еще много всего разного ...]

Cachebypass size = Cachebypass-64k
Cachebypass Mode = Cachebypass Intelligent
Is LD Ready for OS Requests = Yes
SCSI NAA Id = 600605b00ca31460345282ee560e90ae

И вот в строке SCSI NAA Id мы видим ранее записанную цифру, а имя тома находится в конце таблицы, если не хватает номера тома.

Надеюсь, что эта информация пригодится тем, кто предпочитает учиться не на своих ошибках.

+3 0 4265 5
Автор Kirill Kochetkov Рейтинг +4.84 Сила 11.18
Блог Программы, ПО, сайты 77 87 RSS

5 комментариев

Guest_N
Если не путаю, megaraid storage manager позволяет посмотреть какая физика завязана на логический том, а потом через физику дать на диск команду locate. Если совсем ни чего не путаю — locate можно дать на весь том сразу, тогда моргать (не по нагрузке, а просто status led) будут сразу все диски тома.
Kirill Kochetkov
Да, конечно. Но это никак не связано с ОС. Да и посмотреть какие конкретно отсеки используются для тома можно через софт контроллера. Тут задача была именно соотнести том на контроллере и том в операционной системе.
smt2
diskpart — select disk х — detail disk?
Kirill Kochetkov
diskpart в Windows, на мой взгляд, меньше данных дает. Можно попробовать ориентироваться на номер устройства на контроллере (в «Конечный объект: 1» или «Путь к расположению: PCIROOT(0)#PCI(0600)#PCI(0000)#RAID(P04T01L00)», но хотелось бы более определенного идентификатора. А название тома здесь не показывается.

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