@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

エラー処理とブロックサイズ

ddまたはdcflddを使う場足場合に、ブロックサイズを幾つで指定するかがエラー処理では影響が出る内容かと思います。dcfldd がデフォルトブロックサイズを幾つで読み込むのか知らないのですが、例えばパフォーマンスを上げる目的で大きなブロックサイズを指定すると、エラーセクタにより失われるセクタ数が増加するかと思います。*1
この辺りのエラー処理については、上原先生からも途中でコメントなどがあり興味深い項目なのですが、dcfldd って読み取り時にエラーを検知した場合、自動的に最小ブロックサイズでリトライするとかの機能があったりするもんなんでしょうかね?*2
例えば、ブロックサイズを 4096 バイトで実行中に、エラーセクタなどを発見した場合、512 バイトでリトライして取るとかあるのかなぁと。まぁこのような処理がそもそもどうか?というのも一つ議論のポイントとしてはあるかもしれません。特にエラーが多い HDD ではエラーセクタの処理を繰り返し行うと時間がかかるので、少し先までスキップさせてしまうという考えもあると思いますが、ソフトウェアベースでは難しいかもしれませんね。
ま、エラーが多い HDD がお相手の場合には、Linux とか Windows 環境下ではエラーに対処しきれずに OS やアプリケーションそのものが落ちてしまうという状況が発生するので、その様なケースでは(所有機材があればなんですが)専用装置とかに切り替えが必要だと思います。

*1:ハッシュ値の計算結果もブロックサイズで影響を受けたりするので悩めるところなんですが

*2:この辺りも結局 OS の読み込み処理段階ではどのサイズで読み込んでいるのかとエラー処理がどうなっているのかなどの面も考慮しなければいけないよね、というのはかなり昔のケーキオフで指摘があった気がする