2014-02-24 2 views
1

최근 하드 드라이브로 모든 것을 시도해 왔습니다. 이제 막혀있어 ...SATA 디스크의 WWN을 얻으려면

내가 얻고 싶은 것은 하드 드라이브의 시리얼, 모델, 개정판 및 WWN입니다.

(scsi 용)은 모두 scsi 조회로 얻을 수 있습니다. SATA 드라이브의 경우 HDIO_GET_IDENTITY ioctl을 사용하여 모델, 직렬 및 개정판을 얻지 만 WWN이 포함되지 않습니다. 그러나 나는 그 드라이브에 대한 WWN ID를 얻을 수있는 방법을 찾지 못했습니다. 누구나이 분야에 대한 지식이 있습니까?

+0

대체 접근법 :'ls -l/dev/disk/by-id'의 결과를 사용해보십시오. 지금 점심 먹으러 떠날 것이고 아마도 내가 돌아 왔을 때'ioctl'에 필요한 정확한 매개 변수를 찾을 수있을 것입니다. – starrify

+0

예, 가능합니다. 하지만 난 이미 udev 라이브러리를 통합했습니다. 모든 oses가/dev/disk/by-id를 지원하는 것은 아닙니다. – RG337

답변

2

linux/hdreg.h와 디스크 제조사의 일부 문서를 본 끝에 HDIO_GET_IDENTITY IOCTL에 정보가 포함되어 있음을 발견했습니다. 그러나 그것은 오히려 모호해진다. 라인 595에서

http://lxr.free-electrons.com/source/include/linux/hdreg.h?v=2.6.32

몇 지정되지 않은 단어가있다. 이 단어 중 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는 16 진수 숫자의 경우 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 WWN이 동일하지 않은 이유가 있습니까?

3

wwn과 일련 번호, 모델 및 버전을 얻으려면 장치에 특정 Page 83 문의를해야합니다.

I 커버이

당신은 0x2로의 지정자 유형을 찾아 다음 EVPD = 1, 페이지 코드 = 0x83을 설정하고 필요

https://www.jmcpdotcom.com/~jmcp/WhatIsAGuid.pdf

(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에서 사용할 수 있습니다.

+0

scsi 조회가 WWN에 도달하기 위해 대부분의 SATA 드라이브에서 작동하지 않는 것 같습니다. 나는 몇 가지 예 아래에 설명했다. – RG337

+0

제 의견으로는 page83 문의 (12) *가 wwn을 제공해야합니다.그렇지 않으면 표준을 준수하는지 SATL 구현을 매우 면밀히 점검 할 것입니다. 위에서 지적한 정보는 Solaris에서 작동합니다. –

+0

당신은 정확하지만, 나중에 페이지의 wwn 문자열은 처음에는 16 진수 바이트와 같지 않습니다. 내 대답을 업데이트했습니다! 도와 주셔서 감사합니다 – RG337

관련 문제