bash script para executar um comando, quando o RAID reconstruído tiver terminado

0

Alguém tem um script para verificar quando uma reconstrução de RAID é feita e, em seguida, executar um comando?

Estou verificando o status de /proc/mdadm e quando o resync estiver pronto, ele deve executar um comando que avisa o usuário para me informar que está pronto.

Não sei qual loop é o melhor para verificar quando o RAID é feito, reconstruindo e não encontrei nenhum script desse tipo na Internet.

    
por James Doe 09.02.2018 / 11:12

1 resposta

2

A parte relevante de /proc/mdstat é semelhante a abaixo, em que U significa um dispositivo "up" e _ um dispositivo "down". Quando está se recuperando, os dispositivos são exibidos como "inativos", por isso podemos esperar até que todos os dispositivos estejam "ativos" novamente.

md0 : active raid5 sda1[0] sdd1[2] sdb1[1]
     1465151808 blocks level 5, 64k chunk, algorithm 2 [4/3] [UUU_]

Então, algo assim:

dev=md0
until grep -A1 "^$dev :" /proc/mdstat | grep -q '\[UU*\]' ; do
    sleep 2
done 
run some command here...

(O primeiro grep procura o nome do dispositivo fornecido e grep -A1 imprime a linha correspondente mais um após. O segundo procura uma sequência de U s entre os colchetes.)

É claro que isso nunca verifica se uma recuperação estava sendo executada. Precisamos de uma lógica mais inteligente para interpretar a saída completa, já que o número de linhas de saída varia.

    
por 09.02.2018 / 11:33

Tags