找出哪个 cciss 磁盘是哪个 /dev/sdX 磁盘(smartmontools 和 cciss raid 控制器)

找出哪个 cciss 磁盘是哪个 /dev/sdX 磁盘(smartmontools 和 cciss raid 控制器)

我有一台 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上运行会产生相同的结果。但在 上运行会产生与在 上不同的结果。sdbsdcsddsdecciss,1sdbcciss,0sdb

我怎样才能知道使用了哪个“cciss 号码” /dev/sdd

这是在 Ubuntu Linux 14.04 上。没有/dev/cciss/*文件。

更新:这是 HP ProLiant SE316M1R2,被称为“160”。

(一个答案可能是在所有 cciss 磁盘上运行标准智能测试,并找出哪一个坏了,但我试图在所有 cciss 从 0-5 以及所有磁盘上调用-t shortand ,但除了它们之外,其他都表现得好像从未对它们进行过测试一样。)-t longcciss,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”

相关内容