Ниже приведена команда HP ssacli
для просмотра сведений о сконфигурированном аппаратном RAID:
ssacli ctrl slot=0 show config
, и его вывод как указано ниже:
HPE Smart Array P408i-a SR Gen10 in Slot 0 (Embedded)
Internal Drive Cage at Port 1I, Box 1, OK
Internal Drive Cage at Port 2I, Box 0, OK
Port Name: 1I (Mixed)
Port Name: 2I (Mixed)
Array A (Solid State SAS, Unused Space: 0 MB)
logicaldrive 1 (447.10 GB, RAID 1, OK)
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS SSD, 480 GB, OK)
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS SSD, 480 GB, OK)
SEP (Vendor ID HPE, Model Smart Adapter) 379 (Port: Unknown)
Мне нужно выяснить имя Array , чтобы удалить его, выполнив поиск соответствующей информации о диске, которую я получаю в качестве ввода от пользователя. Например, если на диске введено значение 1I:1:1
, я должен искать эту строку в выходных данных вышеупомянутой команды. Поскольку этот диск доступен и соответствует, мне нужно извлечь имя массива (здесь оно A
), и как только я получу этот параметр массива, я смогу удалить существующую конфигурацию RAID.
ssacli ctrl slot=0 show config | grep -B 4 '1I:1:1' | grep Array | awk '{print $2}'
Проблема с вышеприведенной командой:
значение 4 в grep -B
не всегда может быть постоянным, поскольку совпадающий диск может находиться первым, вторым или третьим и т. Д. Под массивом на выходе.
может быть несколько конфигураций RAID-массива, доступных в выходных данных, поэтому могут быть массивы A
, B
, C
и т. Д., Я должен найти и извлечь ближайшую строку Array
, которая соответствует моему входному диску