for disk in `sudo fdisk -l | grep -Eo '(/dev/[sh]d[a-z]):' | sed -E 's/://'`;
do
sudo hdparm -i $disk | grep -Eo 'SerialNo=.*' | sed -E 's/SerialNo=//';
done
由于您的阵列没有 SES smarts 并且磁盘活动 LED 不能直接驱动,例如您需要固件支持。您唯一可以做的另一件事是尽可能地静默 I/O,然后使用类似dd或sg_read成员本身的东西来跨步读取磁盘的模式,使用活动 LED 创建一个唯一可识别的闪烁模式,这是一个糟糕的如果你愿意,人的灯塔。这确实是您唯一的选择,除非降低阵列是一种选择。
磁盘工具(位于系统 -> 管理中)将为您提供所有磁盘的序列号。
这就是我所看到的(查看序列的右上角)。您会注意到该驱动器位于 mdadm RAID 阵列中。磁盘工具可以穿透阵列以访问原始磁盘。
我的 PC 中有 6 个相同型号的磁盘,所以我画了一张小图,显示它们在机箱中的位置和序列号,这样我可以在紧急情况下通过序列号快速定位它们。
反之亦然,如果一个磁盘死了,我只需要找出哪些磁盘出现了,我可以消除它们,直到我知道哪个序列丢失了。
编辑:我正在尝试改进我的 bash-fu,所以我编写了这个命令行版本,只是为了给你一个你机器中当前的磁盘序列号列表。
fdisk
可能会排除一些错误,但这不会污染列表:(如果需要,您可以将其分解为一行 - 为了便于阅读,我已将其分解)
编辑2:
ls /dev/disk/by-id/
稍微容易一些;)如果您无法将驱动器序列号或端口指示与磁盘的空间位置匹配,您可以运行
cat /dev/sdz >/dev/null
(sdz
故障驱动器在哪里)并通过其 LED 定位驱动器(如果您不在嘈杂的服务器机房中,则通过耳朵)。如果驱动器甚至无法启动,那应该足以判断它是哪一个。下次一定要在磁盘上贴上可见的标签。提供的信息
udisks
(在命令行或GNOME 磁盘工具中)包括磁盘序列号。在我拥有的磁盘上,序列号印在上面和正面(包含连接器的磁盘的另一侧),既作为数字又带有条形码。不幸的是,大多数 PC 机箱都无法在不拔出磁盘的情况下读取这些序列...您还可以在 中找到序列号
/dev/disk/by-id/
。由于您的磁盘处于脱机状态,我假设内核当前没有“看到”它?在这种情况下,您可能不得不通过排除:您想要具有未列出的序列号的磁盘......
对于软件突袭,这是一个常见问题。假设您的硬件支持,硬件突袭往往具有允许您闪烁与驱动器关联的 LED 的功能。
但是对于软件 RAID,每个驱动器都有一些独特的元数据。您可以使用
mdadm -E /dev/sda1
阵列中每个驱动器的命令从每个驱动器读取它,修改设备以匹配您的环境。因此,如果您遇到驱动器给您带来问题并且当前处于脱机状态的情况。我会在每个在线驱动器上运行它,记录每个驱动器的次要编号。然后使用支持 MD 的 Live CD,system rescue cd 是一个不错的选择,一次只连接一个驱动器并运行此命令来查找罪魁祸首。这可能不像您想要的那样简单,但它应该可以工作。lsscsi
如果磁盘未处于运行状态,这是一个很好的迹象。所以 /proc/mdstat 会告诉你哪个成员失败了。假设您没有漂亮的驱动器笼,则必须按序列号向下钻取,sg_inq 应该会有所帮助。
如果您确实有一个好的驱动器笼,您应该能够启用磁盘信标以帮助识别有故障的成员。
http://www.mail-archive.com/[email protected]/msg07307.html
要获取所有硬盘的序列号,请运行:
这很简单。例如,这是我 PC 上的输出:
如您所见,我已将/dev/sdh1和/dev/sdg1加入/dev/md0
由于您的阵列没有 SES smarts 并且磁盘活动 LED 不能直接驱动,例如您需要固件支持。您唯一可以做的另一件事是尽可能地静默 I/O,然后使用类似
dd
或sg_read
成员本身的东西来跨步读取磁盘的模式,使用活动 LED 创建一个唯一可识别的闪烁模式,这是一个糟糕的如果你愿意,人的灯塔。这确实是您唯一的选择,除非降低阵列是一种选择。这种可维护性使外部存储阵列与众不同。由于您没有通过草草记下序列号及其位置来提前计划,因此您无法通过简单的设置差异来识别故障驱动器。这是您为部署的解决方案付出的代价,无论您是否意识到这一点,但嘿,生活和学习。