下面是用于查看配置的硬件 RAID 详细信息的 HP ssacli命令:
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)
我必须找出阵列名称才能通过搜索我从用户那里获得的匹配磁盘信息来删除它。例如,如果磁盘输入是1I:1:1,那么我必须在上述命令的输出中搜索这个字符串。由于该磁盘可用且匹配,我必须提取阵列名称(此处为“ A ”),一旦获得此阵列参数,我就可以继续删除此现有 RAID 配置。
ssacli ctrl slot=0 show config | grep -B 4 '1I:1:1' | grep Array | awk '{print $2}'
上述命令的问题是,
grep -B中的值 4不能始终保持不变,因为匹配的磁盘可能在输出中的 Array 下排在第一位、第二位或第三位等。
输出中可能有多个可用的 RAID 阵列配置,因此可能有 Array A、B、C等,我必须找到并检索与我的输入磁盘匹配的最近的“ Array ”字符串
下面的 perl oneliner 逐行读取文件,记录最后一个数组,直到它遇到物理驱动器 '1I:1:1' 的行: