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 は vpd ページ 0x83 のオフセット 8 にある WWN で、16 進数の 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 が同じでない理由はありますか?

于 2014-02-24T12:04:21.347 に答える
3

デバイスの wwn とシリアル番号、モデル、およびリビジョンを取得するには、デバイスに対して特定の Page83 問い合わせを行う必要があります。

私はこれを(部分的に)カバーします

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 Translation Layer 仕様 SAT-3 のセクション 10.3.4 も確認する必要があります。

SPC4 と SAT3 はどちらもhttp://www.t10.orgから入手できます。

于 2014-02-24T05:54:55.577 に答える