最近我一直在用硬盘尝试各种各样的东西。现在我被卡住了......
我想得到的是硬盘的串口,型号,版本和WWN。
对于scsi,所有上述内容都可以通过scsi查询获得。对于SATA驱动器,我使用HDIO_GET_IDENTITY ioctl来获取模型,序列和修订,但它不包括WWN。但是我还没有找到如何为这些驱动器获取WWN ID。任何人都对这方面有一些了解吗?
答案 0 :(得分:3)
您需要对设备进行特定的Page83查询才能获得 它的wwn以及序列号,型号和修订版。
我在
处覆盖了这个(部分)https://www.jmcpdotcom.com/~jmcp/WhatIsAGuid.pdf
您需要设置EVPD = 1,页码= 0x83,然后查找指定符类型0x2(EUI-64)或0x3(NAA)。基于EUI-64的指示符包含在SPC-4rev 36表7.8.6.5中,基于NAA的内容包含在SPC-4rev 36表7.8.6.6中。
对于连接SATA的设备,您还应该查看SCSI / ATA转换层规范SAT-3中的第10.3.4节。
SPC4和SAT3均可从http://www.t10.org获得。
答案 1 :(得分:3)
在查看linux / hdreg.h和来自磁盘制造商的一些文档后,我发现信息包含在HDIO_GET_IDENTITY IOCTL中。但它相当模糊。
http://lxr.free-electrons.com/source/include/linux/hdreg.h?v=2.6.32
在第595行,有一些未指明的词。其中4个词包含WWN。你可以这样得到它们:
sprintf(wwnstr,"0x%04x%04x%04x%04x",hd.words104_125[4],hd.words104_125[5],hd.words104_125[6],hd.words104_125[7]);
无论如何,已经注意到可以使用SCSI查询来获取SATA磁盘上的WWN数据。以下是我编写的一个小程序示例,它发送查询并获取数据。
这是一个scsi磁盘,WWN HEX是vpd页面0x83中的偏移8处的WWN,其中包含十六进制数字WNN naa。是同一页面中偏移量为56的字符串!
model: ST3600057SS
serial: 3SL1DBA00
revision: EN03
wnn HEX: 0x5000C500286ACC13
wnn naa.: 0x5000C500286ACC10
但是在SATA磁盘上完成相同的程序将导致:
model: SAMSUNG HD103UJ
serial: S13PJ1DQ403064
revision: 1AA0
wnn HEX: 0x533133504A314451
wnn naa.: 0x
如您所见,WWN未指定为字符串。
2 WWN有不同的原因吗?