各種ツールの違い

Last-modified: 2011-02-10 (木) 17:52:42

一般的な名称の違いと区別

拡張セルフテスト(Extended SelfTest)
HDDビルトインの自己診断機能によるもの
拡張テスト(Extended Test/Advanced Test等)
メーカ製ツールによるもの
ゼロフィル・ゼロ埋め (Zerofill/Write Zeros/Low Level Format/物理フォーマット等)
メーカ製ツール・HDDフォーマットツール等で全域にゼロを書き込むこと

smart selftest(スマート セルフテスト)

smart selftestはHDDにビルトインされている自己診断プログラム。
どのような自己診断機能が実装されているかどうかもsmartそれ自身の情報で判明する。
自己診断機能には全セクタの読み出しをチェックするextended selftest(longtest)と、
ごく簡単におおざっぱな照合をするshort test、
部分的なLBA範囲を対象にチェックするselective selftestがある。
各種OS上のsmartのテストツールはコマンドを送る(機能を呼び出す)インタフェースを提供している。

entended selftest=拡張セルフテストって何をやってるの?

ビルトインのsmart extended selftestは、全セクタの読み出しができるか、
ECCエラー訂正が必要かどうかをチェックしているようだ。
エラー訂正は必要だが復元できる(データを失わずに済む)場合、
実装次第ではリアロケしてしまうこともあるかもしれないが、
読み出し不可能なセクタを無断で勝手にリアロケすることはない。
読み出し不可能なセクタに遭遇するとそこで中断終了してLBA番号をログに残す。
そのログはsmartctl(smartmontools)等で見ることができる。

HDDメーカの自社製品向け診断プログラム

メーカが自社製品専用に出している専用プログラムは
純粋なHDDビルトイン自己診断とは異なる独自の機能を使っているらしく、所要時間も短かったりする。
最初の読み出し不可能セクタで中断終了せずにHDD全体(全セクタ)をスキャンするものがほとんどだが、
HDDがエラーだらけの場合は途中でハングしてしまって結果がわからなくなってしまうこともある。
メーカの診断プログラムの更新はしばしば新発売機種に間に合わず、発売されたばかりの製品を認識できなかったりする。
古い製品が切り捨てられることもあるかもしれない。

リアロケ: Reallocation

読み出し不可能なセクタに上書き命令を出すと
(hdd regeneratorやゼロフィルやbadblocks等で上書きすると)
HDDが自動的に予備セクタを割り当てる。
それをリアロケーション:通称リアロケという。

近年の垂直磁気プラッタではエラー訂正のかかったセクタもリアロケすることがあるようだが、
それもReallocation Sector Countにカウントされるかどうかは実装次第。

badblocks

PC側インタフェースから送り出されたデータがHDDに誤りなく記録されているかどうかは
HDDの自己診断機能では確かめられない。
「読めるが書けない」「書けるが化ける」セクタがあった場合、
HDDはそれを認識していないので上書き命令を出してもリアロケされない。

たとえば書き込みデータが欠落する欠陥がある場合、最初から欠落したデータを書いているので、
HDDの自己診断では読み出し可能な正常なセクタと判断される。
ユーザ側から見ると明らかに異常があるのに自己診断機能ではチェックできないものでも、
badblocksでは書いた後に読み出して比較できるので違いがあればわかる。

そのHDDはそのままでは使えないことになるけれど、
FreeBSD/Linux等で使われているファイルシステムでは、badblocks等でユーザが作ったリストを元に、
ファイルシステムのメンテナンスプログラム等を利用して特定ブロックを使用禁止にすることができる。