1

最近我一直在尝试各种硬盘驱动器。现在我被困住了...

我想得到的是硬盘的序列号、型号、版本和 WWN。

对于 scsi,上述所有内容均可通过 scsi 查询获得。对于 SATA 驱动器,我使用 HDIO_GET_IDENTITY ioctl 来获取型号、序列号和修订版,但它不包括 WWN。但是我还没有找到如何获得这些驱动器的 WWN id。有人对这方面有一些了解吗?

4

2 回答 2

4

最后,在查看 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 是十六进制数字 WNN naa 中 vpd 页 0x83 中偏移量 8 处的 WWN。是同一页中偏移量 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 WW​​N不一样有什么原因吗?

于 2014-02-24T12:04:21.347 回答
3

您需要对设备进行特定的 Page83 INQUIRY 以获取其 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获得。

于 2014-02-24T05:54:55.577 回答