如何物理识别RAID阵列中的单个驱动器?


16

我有一个带有4个eSATA磁盘的外部驱动器托架。我的系统有一个4端口eSATA卡,以及一对内部硬件RAID1驱动器。外部驱动器是在软件RAID1对作为/dev/md0/dev/md1。两者都已配置为LVM物理卷以创建我的storagevgLVM卷组。最近,有一个驱动器脱机(我怀疑是电缆),但是似乎并没有一个很好的方法来物理识别我需要检查的驱动器,特别是由于启动顺序在启动之间是不同的。如何找到需要注意的磁盘?

Answers:


15

磁盘实用程序(位于系统->管理中)将为您提供所有磁盘的序列号。

这就是我所看到的(在序列的右上角看)。您会注意到该驱动器在mdadm RAID阵列中。磁盘工具可以穿透阵列进行原始磁盘访问。

磁盘工具

我的PC上有6个相同型号的磁盘,因此我画了一张小图,显示了它们在机箱中的位置以及序列号,以便在紧急情况下可以快速找到它们。

反之亦然,如果磁盘死了,我只需要查找正在显示哪些磁盘,就可以消除它们,直到我知道缺少哪个序列。

编辑:我正在尝试改善我的bash-fu,所以我写了此命令行版本以仅向您提供计算机中当前磁盘序列号的列表。fdisk可能会剔除一些错误,但这不会污染列表:

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

(如果需要,您可以将其分解为一行-为了便于阅读,我将其分解了)

编辑2: ls /dev/disk/by-id/有点容易;)


如果已经在外部记录了序列号,则可以很好地使用序列号。对于无法关闭电源但具有热插拔驱动器的系统,最好能够通过LED定位故障驱动器。
Kees Cook

您还会注意到,磁盘工具中有一个“位置”标识符,显示了驱动器插入主机适配器的哪个端口。您可能能够在不拔出驱动器的情况下确定哪个端口是哪个端口。这实际上工作。
奥利(Oli)

在您的情况下,将RAID阵列停止5分钟,拔下每个驱动器并获取序列号应该不是很合理,也不需要关闭计算机电源……但是除非您愿意,否则必须将RAID关闭。它重建。
奥利(Oli)

“位置”并不总是有用的,例如,在PATA的情况下,通常在一个端口上有2个磁盘,并且如果您的磁盘都设置为“ AUTO”以进行主/从协商,则可能无法找出哪个是哪个?不过,它可能适用于SATA
2010年

1
PATA驱动器是否仍然存在?从那以后我就只使用SATA ...好吧,因为112gig磁盘被认为是很大的。查找端口问题在这里实际上并不重要,因为我们正在谈论的是外部驱动器托架。但是可以。在消费类主板上,您可能需要查阅手册以了解什么是端口...即使如此,软件也可能将它们赋予不同的顺序。
奥利(Oli)

5

如果您在将驱动器序列号或端口指示与磁盘的空间位置匹配时遇到问题,则可以运行cat /dev/sdz >/dev/null(发生sdz故障的驱动器在哪里),并通过其LED(如果不在嘈杂的服务器机房中,则通过耳朵)来定位驱动器。 )。如果驱动器甚至无法启动,则足以确定驱动器是哪一个。请确保下次在磁盘上放置可见标签。


这是纯粹的天才,因为它的副作用是让灯光始终亮着,而其他所有灯光都在闪烁
HDave

3

udisks给出的信息(在命令行或GNOME磁盘实用程序中)包括磁盘序列号。在我拥有的磁盘上,序列号以数字和条形码的形式印刷在正面和背面(包含连接器的另一面)。不幸的是,大多数PC机箱都无法在不拉出磁盘的情况下读取这些序列...

您还可以在中找到序列号/dev/disk/by-id/

由于您的磁盘处于脱机状态,因此我认为当前内核尚未“看到”它吗?在这种情况下,您可能必须消除:您希望磁盘的序列号未列出...


2

通过软件突袭,这是一个常见问题。硬件突袭往往具有一项功能,该功能允许您在与硬件相关的前提下使与驱动器关联的LED闪烁。

但是,使用软件RAID时,每个驱动器都有一些唯一的元数据。您可以使用mdadm -E /dev/sda1阵列中每个驱动器的命令从每个驱动器读取它,并修改设备以匹配您的环境。因此,如果驱动器出现问题并且当前处于脱机状态。我将在每个在线驱动器上运行此命令,并记录每个驱动器的次要号。然后,使用支持MD的Live CD,系统急救cd是一个不错的选择,一次只能连接一个驱动器,然后运行此命令来查找罪魁祸首。这可能不是您想要的那样简单,但是应该可以。


也许可能有一些通过Linux获得的序列号也印在了物理驱动器上?
erjiang 2010年

1

lsscsi

$ lsscsi -l
[0:0:0:0]磁盘ATA TOSHIBA THNS128G AGLA / dev / sda
  状态=运行queue_depth = 1 scsi_level = 6类型= 0 device_blocked = 0超时= 30
[1:0:0:0] cd / dvd HL-DT-ST DVDRAM GT30N LT09 / dev / sr0
  状态=运行queue_depth = 1 scsi_level = 6类型= 5 device_blocked = 0超时= 30

如果磁盘未处于运行状态,这是一个很好的信号。因此,/ proc / mdstat会告诉您哪个成员失败了。假设您没有一个不错的驱动器笼,则必须按序列号向下钻取,sg_inq应该可以帮助您。

如果确实有良好的驱动器框架,则应该能够启用磁盘信标以帮助识别故障成员。

http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg07307.html


1

要获取所有硬盘的序列号,请运行:

lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial


KNAME MOUNTPOINT   FSTYPE   SIZE MAJ:MIN NAME   STATE   RM ROTA RO TYPE LABEL         MODEL            SERIAL
sda                         3.7T   8:0   sda    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX4
sda1                        3.7T   8:1   `-sda1          0    1  0 part
sdb   /mnt/backup3 ext4     3.7T   8:16  sdb    running  0    1  0 disk backup_netops WDC WD4000F9YZ-0 WD-WCCXXX1
sdc                         3.7T   8:32  sdc    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX3
sdc1  /mnt/backup2 ext4     3.7T   8:33  `-sdc1          0    1  0 part
sdd                         3.7T   8:48  sdd    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX2
sdd1  /mnt/backup1 ext4     3.7T   8:49  `-sdd1          0    1  0 part

0

这很简单。例如,这是我的PC上的输出:

andrea@centurion:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdh1[1] sdg1[0]
      312568576 blocks [2/2] [UU]

unused devices: <none>

如您所见,我将/ dev / sdh1/ dev / sdg1加入了/ dev / md0


1
是的,但这并不能告诉我它们在外部驱动器机箱中的实际位置。
Kees Cook

0

由于您的阵列没有SES智能卡,并且磁盘活动LED不能直接驱动,例如,您需要固件支持。您唯一可以做的另一件事就是尽最大可能使I / O静默,然后使用类似ddsg_read对成员本身的东西跨入磁盘读取模式,从而使用活动LED来创建唯一可识别的闪烁模式,这很糟糕。男人的灯塔,如果愿意的话。实际上,这是您唯一的选择,除非降低阵列的选择。

这种可维护性是区别外部存储阵列的原因。由于您没有通过刻划序列号及其位置来预先计划,因此您无法通过简单的设置差异来确定故障驱动器。无论您是否意识到,这都是您为部署的解决方案付出的代价,但是,请耐心地生活和学习。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.