いろいろやってみたが
仕事だと怖くて不良セクタのHDDは使えないのですが、個人だともったいないので色々調べた記録。
badblockでのチェックを試みたが1ヶ月以上かっても終わらない
HDDに[ 1 ]を書き込んで[ 0 ]を書き込んでsmartctlでの結果を比較するような形の方が良いだろう
HDDの復旧は、最近のHDDでは『書き込めなかったら、予備セクタを割り当てる』という振る舞いをするので
とにかくddで全領域書き込んでみれば良い、ということかも。もちろん新しいHDDを買うのがベスト。
badblock -w だと、もう少しましな文字列を書き込むので、より良い、という点は残るかも
あとbadblockを使う時は badblockのセクタ番号を取得するためだが、smartctlでも値を取得できる。 複数セクタがダメになっている、とかでなければ、smartctlの値の方が正確かも。 badblockの値を使うことにネガティブな意見が多い http://unix.stackexchange.com/questions/92076/how-can-i-check-for-bad-blocks-on-an-lvm-physical-volume ファイルシステムのツールか、HDDが不良セクタを使おうとしたら予備領域割り当てるし、smart機能を使った方がよい、という意見
私の考え
- 結局の所、HDDのbadblockを調べて,ddでゼロを書き込むしかない。ような? というか、その方が確実のような気がする。
手軽にやれそうなのでext4でフォーマットしてfsckでテストしてみた
mkfs.ext4 /dev/sdb1
nohup fsck -p -t -y -f -c /dev/sdb1 &英語のページだがext2, ext3, raiserfs, LVMでの方法が乗っている
http://linoxide.com/linux-how-to/how-to-fix-repair-bad-blocks-in-linux/
検査の手順
# cd /
# badblocks -s -o badblocks.hda4 /dev/hda4このオプションならば非破壊。
-s は経過表示 -o ファイル名 は、不良セクタがあったときのブロック番号のファイル化です。(登録時に使う)
なお、すでに不良セクタが登録されている場合は
# badblocks -s -i badblocks.hda4 -o badblocks2.hda4 /dev/hda4とすることで登録済みの領域をスキップ。
作成される badblocks2.hda4 は、新規の不良セクタ分のみです。既存のは出力されません。
不幸にも検出されてしまったら、
# cd /
# fsck -l badblocks.hda4 /dev/hda4 (オプションは小文字のエルです。)という形で不良セクタを登録する。
# 不良セクタを出力
nohup bash -c ‘badblocks -v -s /dev/sdj1 > ~/badblock_$(date +%Y%m%d%H%M).txt 2>&1’ &
上記を改善してみた下記
-w : 破壊的( 実際、読み込みだけでは検出できないエラーがあった. 2017/03/05 )
-p <number> : 指定された回数だけテストを実行
-o </path/to/output-file> : 不良セクタを標準出力ではなく <output-file> に出力
#!/bin/bash device=$1 filename=$(smartctl -i ${device} | grep -E ‘Device Model|Serial Number’ | awk -F’:’ ‘{print $2}’ | sed ‘s/ *//’ | sed ‘s/ //’ | tr ‘\n’ ’’) badblocks -v -p 100 -w -s /dev/sdb -o ~/badblock_${filename}_$(date +%Y%m%d%H%M).txt 2>&1
# 参考させていただいたサイト
* [RAID5で不良セクタが発生したときってどうすればいいの?](http://neet.waterblue.net/2011/10/23/raid5%E3%81%A7%E4%B8%8D%E8%89%AF%E3%82%BB%E3%82%AF%E3%82%BF%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%A3%E3%81%A6%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84/)
* この人は直しているかも? [CoCoon HDD換装 XFS エラー 修復](http://nishioi.blogspot.jp/2006/04/cocoonhddxfs.html)
* [Linuxでディスクのエラーや不良セクタのチェックと修正をする方法](http://kaworu.jpn.org/ubuntu/Linux%E3%81%A7%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%84%E4%B8%8D%E8%89%AF%E3%82%BB%E3%82%AF%E3%82%BF%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%A8%E4%BF%AE%E6%AD%A3%E3%82%92%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
* [不良セクタの検査と登録](http://hp.vector.co.jp/authors/VA008536/libretto/badblocks.html)