Abaixo está o comando HP ssacli para ver os detalhes do RAID de hardware configurado:
ssacli ctrl slot=0 show config
e sua saÃda é a seguinte:
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)
Eu tenho que descobrir o nome do Array para excluÃ-lo pesquisando as informações de disco correspondentes que recebo como entrada do usuário. Por exemplo, se a entrada do disco for 1I:1:1 , terei que procurar essa string na saÃda do comando acima. Como este disco está disponÃvel e combinando, tenho que extrair o nome do Array (aqui está ' A ') e, assim que obtiver esse parâmetro do Array, posso excluir essa configuração RAID existente.
ssacli ctrl slot=0 show config | grep -B 4 '1I:1:1' | grep Array | awk '{print $2}'
O problema com o comando acima é,
o valor 4 no grep -B não pode ser sempre constante, pois o disco correspondente pode vir primeiro, segundo ou terceiro ou assim por diante em um Array na saÃda.
pode haver várias configurações de matriz RAID disponÃveis na saÃda, portanto, pode haver Array A , B , C etc., tenho que encontrar e recuperar a string " Array " mais próxima que corresponda ao meu disco de entrada
O seguinte perl oneliner lê o arquivo linha por linha, gravando o último array até encontrar a linha com a unidade fÃsica '1I:1:1':