실패한 raid(하드 디스크 일련 번호) 및 (설치 이름) 또는 "OK" 출력 파일 status.txt를 내보내기 위해 bash 스크립트 또는 PHP 파일을 작성하고 싶습니다. 아래 코드를 시도했지만 완료되지 않았습니다.
2개의 출력이 예상됩니다.
status.txt if In case everything is fine.
a=OK b=OK c=OK
status.txt In case sn=DH26fd5302 failed.
a=FAIL b=DH26fd5302 c=/dev/md3
mdam 출력
[root@gtw4-de ~]# mdadm -vDs /dev/md3 | awk -F= '/^[ ]+devices/ {print $2}' | tr , '\n'
/dev/sda3
/dev/sdb3
/dev/sdc3
/dev/sdd3
[root@gtw4-de ~]# mdadm --detail --scan /dev/md3
ARRAY /dev/md3 metadata=0.90 UUID=f1c7d2cb:a4335wb:a4d2adc2:26fd5302
[root@gtw4-de ~]#
mdstat 프로세스
[root@gtw4-de ~]# cat /proc/mdstat
Personalities : [raid1] [raid10]
md6 : active raid10 sda6[0] sdd6[3] sdc6[2] sdb6[1]
7237440512 blocks 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 2/54 pages [8KB], 65536KB chunk
md5 : active raid10 sda5[0] sdc5[2] sdd5[3] sdb5[1]
153594880 blocks 512K chunks 2 near-copies [4/4] [UUUU]
md2 : active raid1 sdd2[3] sdc2[2] sdb2[1] sda2[0]
523200 blocks [4/4] [UUUU]
md3 : active raid1 sda3[0] sdc3[2] sdd3[3] sdb3[1]
209918912 blocks [4/4] [UU_UU]
bitmap: 2/2 pages [8KB], 65536KB chunk
스크립트는 [] 사이의 _만 검색하여 OK 또는 FAIL 출력을 제공하지만, 오류가 발생한 경우에는 오류가 발생한 드라이브의 UUID와 마운트 이름을 더 원합니다.
#!/bin/sh
if grep -q '\[[^]]*_.*]' /proc/mdstat
then
(find problem drive which contain _ between [] get mount name then search UUID)
else
echo "a=OK b=OK c=OK"
fi
답변1
귀하의 질문에서 귀하가 정말로 원하는 것이 무엇인지 명확하지 않습니다. 이러한 설명은 RAID 배열을 모니터링하고 이를 수행하기 위한 스크립트를 작성하고 있음을 나타내는 것 같습니다. 이를 바탕으로 mdadm
이미 완료되었습니다.
mdadm --monitor --scan
키워드에 올바른 이메일 주소 값이 있는지 확인하세요 /etc/mdadm/mdadm.conf
( MAILADDR
내 이메일 주소 값 root
은 조직 전체 모니터링 도구로 전달되었습니다).
다른 옵션도 사용할 수 있습니다 mdadm
. 예를 들어 PROGRAM
키워드,
mdadm --monitor
모니터링 중인 어레이에서 잠재적으로 흥미로운 이벤트가 감지될 때 실행할 프로그램의 이름을 제공합니다. 프로그램은 이벤트, md 장치 및 관련 구성 요소 장치인 두 개 또는 세 개의 인수를 사용하여 실행됩니다.