识别 Raid 失败驱动器“序列号”和“安装名称”导出到 txt

识别 Raid 失败驱动器“序列号”和“安装名称”导出到 txt

我想编写bash脚本或php文件来导出失败的raid(硬盘序列号)和(安装名称)或“确定”的输出文件status.txt我尝试了下面的一些代码远未完成

期望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.confMAILADDR我的是root,它又转发到组织范围的监控工具)。

还有其他可用选项mdadm。例如,PROGRAM关键字,

mdadm --monitor给出在它正在监视的任何阵列上检测到潜在的有趣事件时要运行的程序的名称。该程序使用两个或三个参数运行,它们是事件、md 设备以及可能的相关组件设备。

相关内容