vol.10 ダイナミック(動的)なリードエラー
前回まで、リードエラーの発生について、最新のヘッド位置制御技術の紹介とその必要性を説明する統計的なデータによって、その発生の確率と発生原因、その顕在化を防ぐためのリードリトライ機能の必要性について解説しました。今回は、実際にHDDの設計をしたり、実際の動作を詳細に解析したりしたことのある人しか知ることの出来ない、しかしながら、実際には発生頻度の高いリードエラーについて説明しましょう。
1.ダイナミック(動的)なリードエラーとは?
いままでのリードエラー発生の説明は、HDDの構成部品や、部品精度、特性などの要因とその組み合わせ効果によって決まる、位置制御機能の精度によるものでした。しかし、それだけでは説明の出来ないリードエラーが実際には存在するのです。
データ復旧を手がけている人の中には、既にその現象に気づかれている人も少なくないのではないかと思います。以下にその代表的な症状について例を挙げてみます。
- ファイルコピーではリードエラーが発生しなかったHDDが、クローンドライブを作成すると、途中でリードエラーが検出されることがある。
- クローンドライブ作成中のリードエラーが規則的(同一セクタ数毎)である。
いかがでしょうか。そう言われればそんな事があった、と思い当たる方も存在するのではないでしょうか。
2.ダイナミック(動的)なリードエラーの発生原因
ダイナミックなリードエラーと名付けた理由も、この現象の発生原因によるのですが、一言で言うと、ヘッドのシーク動作(トラックを移動する動作)が原因になっているのです。下図はヘッドのシーク動作を含むリード/ライト動作時のタイミングと実際のヘッドの動きを模式的に表したものです。
HDDでは、ヘッドの移動を伴う読み書きを行う場合、詳細には以下のような動作をします。
- ヘッドの位置制御回路に、移動信号を送る。
- 最後の移動信号の後、ヘッドの過渡(ダンピング:減衰振動など)状態が落ち着き、所定の位置範囲に収まるまでに設定された、「安定待ち時間:ヘッドセトリングタイム」を待ち、読み書き動作に入る。このヘッドセトリングタイムを定常状態に入るまで、十分に長くすることは、HDDの動作速度を遅くすることになるので、過渡状態が完了するまで待たずに、最大許容偏差内に入る程度とする。
- セトリングタイム終了後、直ちにRead/Write Gate ONとして、読み書き動作に入るが、ヘッドはまだ過渡状態であり、ヘッドは定常状態ではなく、過渡状態であり当然ダンピング動作は継続している。
このときに、隣接トラックとの間隔(トラック間隔)が許容範囲であっても、図のようにヘッドの端がダンピング動作によって、隣接トラックの縁まで届いてしまうことが稀に発生するのです。そうすると、前回触れたように隣接トラックのデータが、リードエラーを引き起こすのに十分過ぎるノイズとなってしまうのです。また、書き込み動作の場合であれば、隣接トラックの縁に当たる部分の一部に、新しいデータを上書きしてしまい、隣接トラックを読み出すときにノイズとなって、リードエラーを引き起こすことになってしまうのです。
3.まとめ
ダイナミックなリードエラーは、ヘッドのトラック間シーク動作に付随する過渡(ダンピング)現象が原因で起こるので、セクタの論理番号順にシーケンシャルにヘッドアクセスするクローンドライブの作成時では、定期的にヘッドがトラックを移動するタイミングでエラーが発生し易く、また、クローンドライブ作成時とファイルアクセス時では、ヘッドシークのタイミングが異なっているので、ファイルアクセス時には発生しないセクタでもリードエラーが発生する場合があり、リードエラーとして認識され易いのです。また、ファイルにフラグメント(断片化)が発生していて、あちこちのトラック上に分散して書き込まれている場合などは、ヘッドシーク動作の頻度が高くなるので、リードエラーの発生する確率が更に高くなると言えるのです。勿論、HDDの設計側ではこのような現象の存在を認識しているので、書き込みヘッドのギャップ幅より、読み取りヘッドのギャップ幅を狭くすることなどによって、リードエラーが発生し難くなるように対策は講じているのですが、何事においても「完全である」ことは無いのが現実なのです。
(参考):ディスクだけを交換することもあるFDD(フロッピーディスクドライブ)では、このような現象の発生確率が当然高くなるので、ヘッドの書き込みギャップの両脇に、消去ギャップを設置して、データの書き込み時に、同時に直流電流を流すことで、データの書き込みと同時に、両脇の隣接トラックとの間に、強制的に無信号帯(トラック間隔)を作り出すことを、設計規格に盛り込んでいます(いたのです)。