私は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
単なる偶然以上のように見えるかもしれませんが、たぶん私がそこにいないことを見ているのかもしれません。