RAID 재구축이 완료된 후 명령을 실행하는 bash 스크립트

RAID 재구축이 완료된 후 명령을 실행하는 bash 스크립트

RAID 재구축이 완료되면 확인하고 명령을 실행하는 스크립트가 있는 사람이 있습니까?

상태를 확인하고 /proc/mdadm있으며 resync완료되면 사용자에게 완료되었음을 알리는 명령을 실행해야 합니다.

RAID 재구축이 완료된 후 어떤 루프를 확인하는 것이 가장 좋은지 잘 모르겠고 인터넷에서 그러한 스크립트를 찾지 못했습니다.

답변1

의 관련 부분이 /proc/mdstat아래에 표시되어 있으며, 여기서 U"위" 장치와 _"아래" 장치가 표시됩니다. 다시 작동되면 장치가 "꺼짐"으로 나타나므로 모든 장치가 다시 "켜질" 때까지 기다릴 수 있습니다.

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

따라서 다음과 같습니다.

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

(첫 번째 것은 주어진 장치 이름을 찾고 일치하는 행과 그 다음에 오는 행을 인쇄합니다. 두 번째 것은 대괄호 사이의 greps 문자열을 찾습니다 .)grep -A1U

물론 이것은 처음부터 복구가 실행 중인지 확인하지 않습니다. 출력 라인 수가 다양하므로 전체 출력을 해석하려면 더 똑똑한 논리가 필요합니다.

답변2

저는 우분투 18.04LTS에서 이 작업을 하고 있으므로 grep다를 수도 있지만 A1한 줄이 제공되므로 수표가 작동하지 않습니다. 나는 그것을 grep으로 변경했고 -A2이제 최소한 당신이 말하는 내용을 반환합니다.

dev=md0
foo=$(grep -A2 "^$dev :" /proc/mdstat);echo $foo

출력 예:

md0 : active raid5 sdh1[0] sdg1[1] sdf1[2] sde1[4] 8790399744 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU] bitmap: 0/22 pages [0KB], 65536KB chunk

따라서 다음과 같이 작성해야 한다고 생각합니다.

dev=md0
until grep -A2 "^$dev :" /proc/mdstat | grep -q '\[UU*\]' ; do
    sleep 2
done 
Whatever you want to do goes here.

건배!

관련 정보