私のUbuntu 13.10システムは、昨日のパフォーマンスが非常に低下しました。カーネルログを見てみると、1年未満の3TB SATAディスクの特定のセクタで問題を発見しました。
Nov 4 20:54:04 mediaserver kernel: [10893.039180] ata4.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov 4 20:54:04 mediaserver kernel: [10893.039187] ata4.01: BMDMA stat 0x65
Nov 4 20:54:04 mediaserver kernel: [10893.039193] ata4.01: failed command: READ DMA EXT
Nov 4 20:54:04 mediaserver kernel: [10893.039202] ata4.01: cmd 25/00:08:f8:3f:83/00:00:af:00:00/f0 tag 0 dma 4096 in
Nov 4 20:54:04 mediaserver kernel: [10893.039202] res 51/40:00:f8:3f:83/40:00:af:00:00/10 Emask 0x9 (media error)
Nov 4 20:54:04 mediaserver kernel: [10893.039207] ata4.01: status: { DRDY ERR }
Nov 4 20:54:04 mediaserver kernel: [10893.039211] ata4.01: error: { UNC }
Nov 4 20:54:04 mediaserver kernel: [10893.148527] ata4.00: configured for UDMA/133
Nov 4 20:54:04 mediaserver kernel: [10893.180322] ata4.01: configured for UDMA/133
Nov 4 20:54:04 mediaserver kernel: [10893.180345] sd 3:0:1:0: [sdc] Unhandled sense code
Nov 4 20:54:04 mediaserver kernel: [10893.180349] sd 3:0:1:0: [sdc]
Nov 4 20:54:04 mediaserver kernel: [10893.180353] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov 4 20:54:04 mediaserver kernel: [10893.180356] sd 3:0:1:0: [sdc]
Nov 4 20:54:04 mediaserver kernel: [10893.180359] Sense Key : Medium Error [current] [descriptor]
Nov 4 20:54:04 mediaserver kernel: [10893.180371] Descriptor sense data with sense descriptors (in hex):
Nov 4 20:54:04 mediaserver kernel: [10893.180373] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Nov 4 20:54:04 mediaserver kernel: [10893.180384] af 83 3f f8
Nov 4 20:54:04 mediaserver kernel: [10893.180389] sd 3:0:1:0: [sdc]
Nov 4 20:54:04 mediaserver kernel: [10893.180393] Add. Sense: Unrecovered read error - auto reallocate failed
Nov 4 20:54:04 mediaserver kernel: [10893.180396] sd 3:0:1:0: [sdc] CDB:
Nov 4 20:54:04 mediaserver kernel: [10893.180398] Read(16): 88 00 00 00 00 00 af 83 3f f8 00 00 00 08 00 00
Nov 4 20:54:04 mediaserver kernel: [10893.180412] end_request: I/O error, dev sdc, sector 2944614392
Nov 4 20:54:04 mediaserver kernel: [10893.180431] ata4: EH complete
ファイルkern.log
サイズは約33MBで、ほとんど上記の繰り返しエラーで埋められており、繰り返しメッセージでもセクタはあまり変わらないようです。
現在ディスクに発生する可能性のある問題をテストして解決するために、アンマウントされたディスクで次のコマンドを実行しています。約12時間かかり、ディスクが大きすぎるため、さらに24/48時間かかります。
e2fsck -c -c -p -v /dev/sdc1
私の質問は:このドライブに問題がありますか?それともここで一般的な問題を見ていますか?不良セクタを修正または無視することが意味があるのか、保証期間が残っている間にディスクを交換する必要があるのか疑問に思います。上記のコマンドに関する知識が少し不足しているので、役に立つかどうか疑問です。
すぐに更新してください!
e2fsckは多くの「inodeで宣言されたブロック」が多く、2日後についに完了しました。ファイルシステムをマウントしようとするとエラーが発生し、読み取り専用に戻りました。
Nov 11 08:29:05 mediaserver kernel: [211822.287758] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Nov 11 08:29:05 mediaserver kernel: [211822.301699] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: errors=remount-ro
セクターを手動でお読みください。
sudo dd count=1 if=/dev/sdc of=/dev/null skip=2944614392
dd: reading ‘/dev/sdc’: Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 5.73077 s, 0.0 kB/s
書いてみてください:
sudo dd count=1 if=/dev/zero of=/dev/sdc seek=2944614392
dd: writing to ‘/dev/sdc’: Input/output error
1+0 records in
0+0 records out
0 bytes (0 B) copied, 2.87869 s, 0.0 kB/s
どちらもReallocated_Sector_Ct
まだゼロです。
ドライブが頻繁に省電力モードに切り替わります。これでファイルシステムの問題かもしれないと思いますか?私は100%でない。
答え1
不良セクタは常にHDD故障を示し、実際にこれらのI / Oエラーが表示された場合、一部のデータが失われた可能性があります。まだ実行していない場合は、バックアップを作成してセルフテストを実行し、smartctl -t long /dev/disk
SMARTデータを確認してくださいsmartctl -a /dev/disk
。可能であれば他のものを購入してください。
不良セクタは回復できず、予約されたセクタとのみ交換できます。これは、アクセスするたびに予約されたセクタをさらに照会する必要があるため、HDDのパフォーマンスを低下させます。ファイルシステム階層でこれらのセクタを不良としてマークすると、アクセスできないために役立ちます。ただし、ディスクによってどのセクタが再割り当てされたかを確認するのは難しいため、ファイルシステムが影響を受ける領域を回避することはわかりません。
答え2
セクタを再割り当てするためのドライブを取得するには、通常、そのドライブに何かを書き込む必要があります。しかし、dd
(DiskDskip
estroyer)は常に動作し、非常に安全ではありません。とseek
オプションを混ぜると足に銃を撃つのは簡単ですskip
平らな最初のN
ブロックを/dev/zero
作成し、対応する「オフセット」からブロックを作成します。ハードディスクのセクタ0。
セクタをゼロで上書きするには、次を使用する必要がありますhdparm
。
% sudo hdparm --read-sector 833192656 /dev/sda
/dev/sda:
reading sector 833192656: FAILED: Input/output error
はい、セクタ833192656もスマートテストに失敗しました。 0を書き込むには、次のようにします--write-sector
。
% sudo hdparm --write-sector 833192656 /dev/sda
/dev/sda:
Use of --write-sector is VERY DANGEROUS.
You are trying to deliberately overwrite a low-level sector on the media.
This is a BAD idea, and can easily result in total data loss.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.
保護のためにhdparm
スイッチを次に渡さないと、実際には何も記録されません。--yes-i-know-what-i-am-doing
hdparm
% sudo hdparm --yes-i-know-what-i-am-doing --write-sector 833192656 /dev/sda
/dev/sda:
re-writing sector 833192656: succeeded
% sudo hdparm --read-sector 833192656 /dev/sda
/dev/sda:
reading sector 833192656: succeeded
0000 0000 0000 0000 0000 0000 0000 0000
[ ... more zeroes here... ]
0000 0000 0000 0000 0000 0000 0000 0000
%
答え3
いいえ、不良セクタはそうではありません。いつもドライブエラーを示します。場合によっては、電源が切れた状態で書き込みが進行中の場合、そのセクタのデータが破損して読み取ろうとするとエラーが発生することがあります。そのセクタに新しいデータを書き込もうとすると、物理的な問題がないため、おそらくうまく機能します。
ドライブで実行して、各セクタを読み書きすることができますbadblocks -n
。あるいは、あなたの場合は、問題のセクタ番号を既に知っているので、そのdd
セクタにゼロを書くことができます。を使用してSMART統計を表示できますsmartctl -a
。失敗したセクタの読み取り数を示す保留中の再割り当ての数を表示する必要があり、セクタの書き込みを試行すると数が減少します。再割り当てされたセクタの数が増える可能性があります。この場合、セクタは物理的に破損し、スペアプールに再マップされます。これはドライブがすぐに廃棄されることを示す信号です。そうでなければ、それはただの説説であり、今は大丈夫でしょう。
まず、セクターをお読みください。
dd count=1 if=/dev/sda of=/dev/null skip=nnnn
失敗した場合、番号は正しいです。以下を使用してゼロにすることができます。
dd count=1 if=/dev/zero of=/dev/sda seek=nnnn
Enterを押す前に、コマンドを正しく入力したことを再確認してください。