假设您的服务器有 6 个健康的硬盘。一个硬盘发生故障(无法安装/检测、因错误退出 RAID)或正在发生故障(SMART 越来越差等)。您需要更换坏的硬盘。打开机箱后,您会看到……六个相同的硬盘。
如何判断哪一个不再健康/不再安装/不再运作?
系统将是 Linux,最有可能是 ubuntu 服务器,使用最多简单的软件 RAID。硬盘将是 SATA 并直接连接到主板。(无 RAID 控制器)
我不想随意断开驱动器,直到我选出正确的驱动器。在我看来,这些驱动器都一模一样;我想有一些我不知道的常用方法来识别哪个驱动器是哪个驱动器。有人有什么指示/技巧/最佳实践吗?谢谢!
编辑:我本来想以一种手势的方式将其“概括”,但它只是给人一种“不完整”和“可怕”的感觉。我的错!
答案1
正如您所解释的,我在(塔式)服务器上遇到了这个确切的问题,这很简单:
smartctl 将输出驱动器的序列号
供应商有时会发布他们自己的特定工具,如 hdparm,它可以执行相同的操作。
因此输出坏驱动器的序列,然后使用牙医的镜子和手电筒来找到该驱动器。
在机架式安装上,你通常会看到指示灯,就像其他人说的那样,但我相信情况也是如此。
答案2
在驱动器上贴上贴纸(取决于托盘的设计)可能不可行。驱动器损坏时,贴纸可能会变干并脱落。
ledctl(来自 ledmon 包)确实是解决此问题的方法。
ledctl locate=/dev/disk/by-id/[drive-id]
或者
ledctl locate=/dev/sda
将点亮机箱上指定驱动器的驱动器故障指示灯。我提供了两个示例来说明如何识别驱动器并不重要。您可以使用序列号、名称等...您可以使用任何可用的信息。驱动器在 /dev/ 和 /dev/disk/ 路径下以多种方式引用。
要关闭灯,只需再次执行该操作,将locate改为locate_off,如下所示:
ledctl locate_off=/dev/sda
答案3
如果您没有定位灯,无法轻松找到驱动器外部的序列号,有时这种低俗的技术会有所帮助:在该特定驱动器上创建大量活动,然后查找活动 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 使用率。)
答案4
一些驱动器会显示一个定位“文件” /sys
,您可以在其中回显 1 来打开定位指示灯,或回显 0 来关闭定位指示灯。
$ for light in $( find /sys -name "locate" ) ; do echo 1 > $light ; sleep 10 ; echo 0 > $light; done