BMC获取磁盘hdd/ssd/nvme信息

发布于:2024-09-17 ⋅ 阅读:(207) ⋅ 点赞:(0)

1.参考代码

2.BMC获取磁盘剩余寿命

目前市场上有博通raid卡,博通hba卡,microchipraid/hba卡等。在BMC端获取磁盘信息还是有差别的。

2.1 raid卡获取sata ssd剩余寿命的方法

对于brcm raid卡,可以使用所谓的2种方式:SL_STP_PASSTHRUSL_SCSI_PASSTHRU.
也就是说,对于sata ssd,可以使用ata指令获取smart信息,对于sas ssd,则需要使用scsi指令获取数据。

如果是sata盘,并且使用raid卡,可以参考文档:d2161r5-ATAATAPI_Command_Set_-_3.pdf中:
在这里插入图片描述
在这里插入图片描述
对于这种方式,microchip raid/hbabrcm raid卡获取sata ssd,从测试结果上看均支持。但是对于brcm hba卡来说,如果接了sata ssd,这种发送ata指令就不可行了。

2.2 brcm hba卡获取satassd的剩余寿命

使用brcm hba卡获取sata ssd盘的剩余寿命,采取ata指令行不通,是否有办法呢?在协议上其实早有定义,如文档:ATA Command Pass-Through.pdfSCSI2ATACommand.pdfspc5r19.pdf等。

spc5r19.pdf中,可以看到内容:
在这里插入图片描述
在这里插入图片描述
根据上面2张图,找到文档:sbc4r15(SBC-4).pdf,如下图:
在这里插入图片描述
定位:SAT-3,找到文档:sat5r08.pdf:
在这里插入图片描述
在这里插入图片描述
根据以上内容,代码上做好数据填充即可。

数据填充内容,可以参考:https://github.com/doug-gilbert/sg3_utils中的代码:examples\sg_sat_smart_rd_data.c

  • 举例

当前系统中接入一个HBA卡,在OS里面使用sg_raw发送数据,内容如:
在这里插入图片描述
smart信息怎么解析? 可以参考文档:8035R2_0.PDF或者8055.PDF或者SFF-8035i.pdf

如下截图,来自:8035R2_0.PDF:
在这里插入图片描述
那么,有最大30attribute data,每一个attribute数据内容(12个字节)又是怎么分布的? 可以参考下图:
在这里插入图片描述
事实上,看上图还是不能完全解释清楚每一个attribute包含的数据内容是什么。那可以参考:https://github.com/smartmontools/smartmontools中的文件:smartmontools\atacmds.h,有一个结构体:

/* ata_smart_attribute is the vendor specific in SFF-8035 spec */ 
#pragma pack(1)
struct ata_smart_attribute {
  unsigned char id;
  // meaning of flag bits: see MACROS just below
  // WARNING: MISALIGNED!
  unsigned short flags; 
  unsigned char current;
  unsigned char worst;
  unsigned char raw[6];
  unsigned char reserv;
} ATTR_PACKED;
#pragma pack()
STATIC_ASSERT(sizeof(ata_smart_attribute) == 12);

至此,raid/hba卡获取sata ssd剩余寿命的办法基本上讲完了。

2.3 raid/hba获取sas ssd盘的剩余寿命的办法

因为sas盘接口都是使用的scsi指令,sas盘的剩余寿命也不再与sata ssd盘的信息存储格式相同,需要使用另外一种方法。

查看文档:spc5r19.pdf,找到内容:
在这里插入图片描述
继续查找文档:sbc4r15(SBC-4).pdf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 举例:
    系统上接一张HBA卡,并接上一张sas ssd盘,如图:

在这里插入图片描述
先使用smartctl看一下使用寿命情况:
在这里插入图片描述
然后,使用工具sg_raw

在这里插入图片描述
至此,sata ssdsas ssd获取剩余寿命的方法均讲完。

3.获取盘属性信息TBD…


网站公告

今日签到

点亮在社区的每一天
去签到