物理识别故障硬盘

pri*_*uff 32 hardware linux hard-drive

因此,假设您的服务器有 6 个健康的硬盘驱动器。驱动器出现故障(无法安装/检测,因错误而退出 RAID)或出现故障(SMART 变得更糟等)。您需要更换坏驱动器。当您打开机箱时,您会看到……六个相同的硬盘驱动器。

你怎么知道哪个不再健康/安装/运行?

系统将是 linux,最有可能是 ubuntu 服务器,最多使用简单的软件 RAID。硬盘驱动器将是 SATA 并直接连接到主板。(没有raid控制器)

在我选择正确的驱动器之前,我不想随机断开驱动器的连接。这些驱动器在我看来都是一样的;我想有一些常见的方法可以识别我不知道的驱动器。有没有人有任何指示/提示/最佳实践?谢谢!

编辑:我曾希望以一种手动波浪的方式将其“概括”,但结果却是“不完整”和“可怕”。我的错!

Tom*_*ter 28

就像您解释的那样,我在(塔式)服务器上遇到了这个确切的问题,这很简单:

smartctl 将输出驱动器的序列号

供应商有时会提供他们自己的特定工具,例如 hdparm,它们也可以执行相同的操作。

所以输出坏驱动器的序列号,然后用牙医的镜子和手电筒找到驱动器。

在机架上,您通常会像其他人所说的那样有指示灯,但我敢打赌,这同样适用。

  • 出色的!我现在无法尝试,但看起来这就是答案!现在,我将在安装时暴露的位置用其序列号的最后 N 位数字(假设每个服务器都是唯一的)标记我的硬盘驱动器。另外,通过谷歌搜索,该命令看起来是“smartctl -i” (2认同)

小智 20

在驱动器上贴标签(取决于托盘的设计)可能不可行。当驱动器死机时,贴纸可能会变干并脱落。

ledctl(来自包 ledmon)真的是解决这个问题的方法。

ledctl locate=/dev/disk/by-id/[drive-id]
Run Code Online (Sandbox Code Playgroud)

或者

ledctl locate=/dev/sda
Run Code Online (Sandbox Code Playgroud)

将点亮机箱上指定驱动器的驱动器故障灯。我提供了两个示例来说明如何识别驱动器并不重要。您可以使用序列号、名称等...任何可用的信息都可以使用。在 /dev/ 和 /dev/disk/ 路径下以多种方式引用驱动器。

要关闭灯光,只需再次执行它,将 locate 更改为 locate_off ,如下所示:

ledctl locate_off=/dev/sda
Run Code Online (Sandbox Code Playgroud)


Ste*_*nds 9

如果您没有定位灯并且无法轻松找到驱动器外部的序列号,有时这种俗气的技术会有所帮助:在该特定驱动器上创建大量活动,然后查找活动 LED 常亮的驱动器。最好对序列号进行更详细的检查,但这可以帮助缩小搜索范围。

例如:

# while true; do dd if=/dev/disk/by-id/scsi-drive-that-is-dying of=/dev/null; sleep 1; done

(从技术上讲,while 循环不是必需的,但它会在您前往数据中心时让事情继续进行。如果“dd”由于某种原因而失败,“sleep 1”有助于避免快速循环造成的高 CPU 使用率。 .驱动器被断开。)

  • 这是纯粹的天才!它对我来说非常有效,它带有 8HDD 热插拔机箱,带有基本的“电源”和“操作”LED 指示灯。谢谢你! (2认同)
  • 我无法抗拒基于这个出色的答案编写一个失败证明[bash脚本](https://serverfault.com/a/1108701/175321)。 (2认同)

Bar*_*rim 6

通常,您必须希望以某种方式标记连接,然后根据故障设备的身份进行工作。例如……有人必须发表评论来纠正我……如果您有两个 IDE 通道,每个通道上最多有 2 个驱动器,您可以有 sda、sdb、sdc 和 sdd。如果 sdd 失败,它将是第二个 IDE 通道电缆上的第二个驱动器。

如果它是 SATA 并且就像我在后室的系统一样,那么每个 SATA 驱动器的端口都会被标记。同样,驱动器号从 a 开始,无论驱动器上升到什么位置,从 SATA 连接器的端口 0 开始并向上移动。

如果有任何制造差异,dmesg |grep sd 或 dmesg|grep hd 应该会产生一些线索。

如果您有可用的序列号,我认为 hdparm 命令可能会在软件中提供给您,以便您可以通过这种方式进行跟踪。如果是这种情况,您可能希望在某处标记驱动器,以便在发现问题时不必担心。

...我知道还有另一个原因我更喜欢硬件 RAID 而不是软件 RAID...闪烁的灯。真的很喜欢闪烁的灯光。

编辑:smartctl,而不是 hdparm,给出序列号。我的错。


小智 5

某些驱动器会公开一个定位“文件”,/sys您可以在其中回显 1 来打开定位指示灯,或回显 0 来关闭定位指示灯。

$ for light in $( find /sys -name "locate" ) ; do echo 1 > $light ; sleep 10 ; echo 0 > $light; done
Run Code Online (Sandbox Code Playgroud)