저는 smartctl -l xerror
Seagate ST31000528AS(512바이트 섹터가 있는 1TB 디스크)에서 이것을 실행하고 있으며 다음과 같은 결과를 제공합니다(일부):
Error 597 [16] occurred at disk power-on lifetime: 11903 hours (495 days + 23 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER -- ST COUNT LBA_48 LH LM LL DV DC
-- -- -- == -- == == == -- -- -- -- --
40 -- 51 00 00 00 74 59 00 70 bc 00 00 Error: UNC at LBA = 0x74590070bc = 499709407420
Commands leading to the command that caused the error were:
CR FEATR COUNT LBA_48 LH LM LL DV DC Powered_Up_Time Command/Feature_Name
-- == -- == -- == == == -- -- -- -- -- --------------- --------------------
60 00 00 00 08 00 74 59 00 70 b8 40 00 12d+16:57:44.392 READ FPDMA QUEUED
ea 00 00 00 00 00 00 00 00 00 00 a0 00 12d+16:57:40.893 FLUSH CACHE EXT
ea 00 00 00 00 00 00 00 00 00 00 a0 00 12d+16:57:40.801 FLUSH CACHE EXT
61 00 00 00 08 00 08 a8 00 43 18 40 00 12d+16:57:40.800 WRITE FPDMA QUEUED
61 00 00 00 08 00 08 af 00 40 68 40 00 12d+16:57:40.800 WRITE FPDMA QUEUED
특히 LBA48이 제공되었기 때문에 이것이 무엇을 의미하는지 정말 혼란스럽습니다. hdparm -I
디스크에 1,953,525,168개의 섹터가 있는지 확인합니다. 499,709,407,420 예훌륭한게다가. (512바이트 섹터라도 유효하려면 256TB 디스크가 필요합니다.)
커널 로그를 보면 LBA48은 실제로 1,953,520,060일 수 있습니다. 테스트를 통해 dd
해당 hdparm --read-sector
섹터가 실제로 불량한 것으로 확인되었습니다. (실제로 그 것도 나타납니다 smartctl -l xselftest
.)
확장된 오류 로그에 실제 값보다 256배 더 큰 것처럼 보이는 LBA48이 표시되는 이유는 무엇입니까(정확히는 아님!)? 16진수 값을 보면 바이트 순서가 잘못된 것 같습니다. 이는 단지 드라이브 펌웨어 버그일 수 있습니까?
답변1
이 숫자들을 이진수 형태로 보면 499709407420과 1953520060입니다.
echo "obase=2;499709407420" | bc
111010001011001000000000111000010111100
echo "obase=2;1953520060" | bc
1110100011100000101100110111100
그룹으로 나누세요:
11101000
1110000
0
1011001
10111100
조금 재정렬하면 다음과 같습니다.
11101000
1110000
0
1011001
10111100
다음과 매우 유사합니다.
111010001011001000000000111000010111100
단순한 우연 이상의 것처럼 보일 수도 있지만, 어쩌면 내가 거기에 없는 것을 보고 있는 것일 수도 있습니다.