【问题标题】:Constantly checking to see if secondary hard drive failed不断检查以查看辅助硬盘驱动器是否发生故障
【发布时间】:2012-04-16 06:25:48
【问题描述】:

我想经常(每 30 秒)检查一下辅助(sdb)硬盘是否出现故障。这样做的最佳方式是什么。我应该通过简单地查看 /dev/sdb 是否存在来检查,还是有更好的方法? 另外我想从辅助硬盘驱动器检查主驱动器是否失败,如果是,我想执行重启命令。

目前我正在考虑做

为了检查辅助硬盘驱动器是否发生故障,我不断在 while 循环中执行此操作

if [ -e /dev/sda ];
then
    echo "Secondary Hard drive is connected"
    sleep 30s
else
    echo "Secondary Hard drive died"
fi

为了检查主硬盘驱动器是否出现故障,我不断地在 while 循环中执行此操作

if [ -e /dev/sda ];
then
    echo "Hard drive is connected"
    sleep 30s
else
    echo "Hard drive died"
    reboot
fi

我不知道如何模拟硬盘故障,但我想就如何做到这一点以及代码是否有效的输入和/或建议。 提前感谢任何人的帮助:)

【问题讨论】:

  • 只是好奇:你用你的辅助硬盘做什么?
  • 一个 cron 作业会比在循环中运行代码更有效率,不是吗?
  • 您可能需要考虑这一点:硬盘驱动器故障可能并不总是对应于从/dev消失的设备文件
  • @ArjunShankar 我只是要以非常高的频率将大量数据写入硬盘驱动器,并想看看何时发生故障,以及何时发生故障我希望得到通知其中。硬盘是 sdd,空间很小(10MB)。只是我正在尝试的一个有趣的项目,并希望找到一种方法来检测硬盘驱动器故障。

标签: linux bash unix hard-drive


【解决方案1】:

问题在于 /dev/sd_ 的存在与驱动功能没有明确的联系。我认为该驱动器可能会着火,并且您可能仍然有一个 /dev 节点。

如果您的硬件支持,请尝试查看S.M.A.R.T.,特别是something like smartd

【讨论】:

  • +1。如果 HDD 支持 SMART,这是正确的方法。另外:linux.die.net/man/8/smartd
  • 我刚试过这个。这正是我们所需要的。非常感谢:)
【解决方案2】:

考虑使用 RAID1 (md) - 在这种情况下,系统会自动进行检查和所有内务管理。

注意:如果硬盘崩溃,直接重启可能不是一个好主意。

【讨论】:

    【解决方案3】:

    digitalRoss 发布的这个 S.M.A.R.T 链接似乎解决了问题 http://sourceforge.net/projects/smartmontools/?_test=b hard drive try checks if statement if /dev/sdb exists

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-14
      • 2011-07-18
      • 2014-04-20
      • 1970-01-01
      • 2014-02-21
      • 2010-09-14
      • 2011-04-29
      相关资源
      最近更新 更多