最近我一直在用harddrives嘗試各種各樣的東西。現在我卡...獲取SATA硬盤的WWN
我想得到的是硬盤驅動器的序列,型號,修訂和WWN。
對於scsi以上所有可通過scsi查詢獲得。對於SATA驅動器,我使用HDIO_GET_IDENTITY ioctl來獲取型號,串行和修訂版本,但不包括WWN。但是我還沒有找到如何讓這些驅動器的WWN ID。任何人都有這方面的知識?
最近我一直在用harddrives嘗試各種各樣的東西。現在我卡...獲取SATA硬盤的WWN
我想得到的是硬盤驅動器的序列,型號,修訂和WWN。
對於scsi以上所有可通過scsi查詢獲得。對於SATA驅動器,我使用HDIO_GET_IDENTITY ioctl來獲取型號,串行和修訂版本,但不包括WWN。但是我還沒有找到如何讓這些驅動器的WWN ID。任何人都有這方面的知識?
最後在查看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是WWN在vpd頁面0x83中的偏移量爲8的十六進制數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是不是有相同的理由?
您需要對設備進行特定的Page83詢問以獲取 其Wwn以及序列號,型號和修訂版。
我覆蓋該(部分地)在
https://www.jmcpdotcom.com/~jmcp/WhatIsAGuid.pdf
需要設置EVPD = 1,頁代碼= 0×83,然後尋找一個指示符類型0X2的(EUI-64)或0x3 (NAA)。基於EUI-64的指示符在SPC-4rev36表7.8.6.5中進行了介紹,而基於NAA的指示符則在SPC-4rev36表7.8.6.6中進行了介紹。
對於SATA連接的設備,您還應該查看SCSI/ATA轉換層規範SAT-3中的第10.3.4節。
SPC4和SAT3均可從http://www.t10.org獲得。
另一種方法:嘗試使用'ls -l/dev/disk/by-id'的結果。我現在要去吃午飯,也許當我回來時,我可以尋找'ioctl'所需的確切參數。 – starrify
是的,你可以。但我已經集成了udev庫。加上並不是所有的軟件都支持/ dev/disk/by-id。 – RG337