我有一台 HP 服务器,它有一个硬件 RAID 阵列(大部分情况下不用于 raid,磁盘只是传递到 Linux 操作系统)。我有 6 个 SSD 磁盘。2 个由阵列镜像在一起,其他 4 个暴露给操作系统。4 个中的一个坏了(通过使用 dd,我能够看到它坏了/dev/sdd
。/dev/sd{b,c,e}
一切正常)。
我想找出 的序列号/dev/sdd
,这样当有人进入服务器机房时,他们就能知道损坏的磁盘并可以将其移除。通常lshw
/ smartctrl
/etc 可以告诉你这一点。但由于有一个 raid 控制器,所以所有控制器都报告相同的序列号。但smartmontools 可以读取 raid 控制器与-d cciss,X /dev/sdY
:
smartctl -i -d cciss,1 /dev/sdd
但只有cciss,X
中的 才是重要的,而不是sdY
。在、或cciss,0
上运行会产生相同的结果。但在 上运行会产生与在 上不同的结果。sdb
sdc
sdd
sde
cciss,1
sdb
cciss,0
sdb
我怎样才能知道使用了哪个“cciss 号码” /dev/sdd
?
这是在 Ubuntu Linux 14.04 上。没有/dev/cciss/*
文件。
更新:这是 HP ProLiant SE316M1R2,被称为“160”。
(一个答案可能是在所有 cciss 磁盘上运行标准智能测试,并找出哪一个坏了,但我试图在所有 cciss 从 0-5 以及所有磁盘上调用-t short
and ,但除了它们之外,其他都表现得好像从未对它们进行过测试一样。)-t long
cciss,0
,1
答案1
哇...
(有专门适用于 HP 系统的工具)
安装hpssacli
工具:
然后查看hpssacli ctrl all show config
命令的输出:
# hpssacli ctrl all show config
Smart Array P410i in Slot 0 (Embedded) (sn: 50123456789ABCDE)
array A (SAS, Unused Space: 0 MB)
logicaldrive 1 (838.1 GB, RAID 1+0, OK)
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)
SEP (Vendor ID PMCSIERA, Model SRC 8x6G) 250 (WWID: 50123456789ABCED)
注意:运行hpssacli ctrl all show config detail
将提供更多信息...
答案2
从 smartmontools 中的某个点开始,可以使用 HP 控制器查看 HBA 模式下磁盘的状态。以下是票据和提交:https://www.smartmontools.org/ticket/1472 https://www.smartmontools.org/changeset/5216
Ubuntu 22.10 上的 smartmontools 版本 7.3-1 从 HBA 模式下的磁盘获取 SMART 信息。这是一个简单的包,我认为为其他系统编译它并不困难。
为什么我需要通过 smartmontools 来监控磁盘状态,而 HP 提供了实用程序:这些磁盘用于 CEPH 文件系统,CEPH 管理器可以监控磁盘并发送有关问题的警报。不幸的是,CEPH 只能执行“smartctl -x --json=o <dev_name>”。
补充:在找到这张票之前,我尝试从系统链接信息。我尝试将 cciss,0 映射到 /dev/sda...
# ls /sys/bus/scsi/devices/0:0:*:0/block
'/sys/bus/scsi/devices/0:0:1:0/block':
sda
'/sys/bus/scsi/devices/0:0:2:0/block':
sdb
'/sys/bus/scsi/devices/0:0:3:0/block':
sdc
'/sys/bus/scsi/devices/0:0:4:0/block':
sdd
'/sys/bus/scsi/devices/0:0:5:0/block':
sde
'/sys/bus/scsi/devices/0:0:6:0/block':
sdf
# ls /sys/bus/scsi/devices/0:0:*:0/scsi_generic
'/sys/bus/scsi/devices/0:0:0:0/scsi_generic':
sg0
'/sys/bus/scsi/devices/0:0:1:0/scsi_generic':
sg1
'/sys/bus/scsi/devices/0:0:2:0/scsi_generic':
sg2
'/sys/bus/scsi/devices/0:0:3:0/scsi_generic':
sg3
'/sys/bus/scsi/devices/0:0:4:0/scsi_generic':
sg4
'/sys/bus/scsi/devices/0:0:5:0/scsi_generic':
sg5
'/sys/bus/scsi/devices/0:0:6:0/scsi_generic':
sg6
'/sys/bus/scsi/devices/0:0:7:0/scsi_generic':
sg7
然后我会编写一个包装脚本,以“/dev/sda”形式的设备名称作为输入,设置“/dev/sda”、“/sys/bus/scsi/devices/0:0:1:0/”、“/dev/sg1”之间的对应关系,并执行“smartctl /dev/sg1”