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이 동일하지 않은 이유가 있습니까?
대체 접근법 :'ls -l/dev/disk/by-id'의 결과를 사용해보십시오. 지금 점심 먹으러 떠날 것이고 아마도 내가 돌아 왔을 때'ioctl'에 필요한 정확한 매개 변수를 찾을 수있을 것입니다. – starrify
예, 가능합니다. 하지만 난 이미 udev 라이브러리를 통합했습니다. 모든 oses가/dev/disk/by-id를 지원하는 것은 아닙니다. – RG337