就像在主要问题中一样,有没有办法做到这一点?(除了引起高 io 负载)也许内核深处的一些设施可以控制这个?
我正在寻找编写一个小脚本来识别我的软件 RAID 阵列中的故障驱动器。(以某种重复模式闪烁活动灯等)
我在这里阅读了所有好主意:https ://serverfault.com/questions/64239/physically-identify-the-failed-hard-drive不幸的是,我没有标记我的任何驱动器,它们都被夹在了一起,所以看序列号就出来了。
就像在主要问题中一样,有没有办法做到这一点?(除了引起高 io 负载)也许内核深处的一些设施可以控制这个?
我正在寻找编写一个小脚本来识别我的软件 RAID 阵列中的故障驱动器。(以某种重复模式闪烁活动灯等)
我在这里阅读了所有好主意:https ://serverfault.com/questions/64239/physically-identify-the-failed-hard-drive不幸的是,我没有标记我的任何驱动器,它们都被夹在了一起,所以看序列号就出来了。
活动灯通常硬连线到主板的磁盘控制器。没有直接控制它们的操作系统工具。
但是,如果您知道哪个驱动器在软件中有问题,并且它没有安装(只是为了安全起见),您可能会dd
去或来自它(我希望不是整个驱动器都坏了?)让灯闪烁。例如:
#!/bin/bash
badDrive=$1
while true ; do
dd -if "$badDrive" -of "/dev/null" -bs 512 -count 204800 conv=noerror >/dev/null 2>&1
sleep 2
done
这将从驱动器中读取 100MiB,忽略读取错误,休眠两秒钟,然后再执行一次。传入硬盘设备路径,如/dev/sda
.
不过,在插入新驱动器之前,您需要想办法杀死脚本。否则你的性能会很差,并且可能会导致其他问题。
你可以在你的程序中调用他的
坏驱动器(检查驱动器状态)
并将其限制为 10 个周期。
这样你就可以运行 flashbaddrive,它反过来会检查驱动器状态并将其传递给 baddrive 以将故障驱动器闪存 10 秒左右并切断。
我想您必须查看 mdadm 才能以编程方式查看界面是什么样的,但它可以从命令行完成。
在硬盘盒上,它们通常使用 sata/scsi/ide 接口或控制器卡上的插头。
你知道光的来源吗?您可以搜索型号信息,直接打开和关闭查询有问题的磁盘。如果驱动器经常发生故障,您仍然可以将其从电路板上拉下来。
另一种策略是按顺序访问磁盘 /dev/sda、sdb、sdc、sde、sdf 等……然后您可以查看灯是否亮起,或者是否不亮。完全死机的驱动器可能会杀死灯,具体取决于控制器设置为访问它的方式。