In message <199709100426.NAA20131@hisoft.soft.hitachi.co.jp>
"[b-free 500] Re: それは機械が壊れている"
"Ryuichi Naitoh <naitoh_r@soft.hitachi.co.jp>" wrote:
naitoh_r> ファイルを 1K くらいの適当な大きさのブロックに分けてそれぞれのチェック
naitoh_r> 用の情報をもつようにするのはどうでしょうか?
naitoh_r> たとえば、書き込むときに 1K バイト毎に CRC を計算してデータといっしょ
naitoh_r> にディスクに書き込んでおき、読み込むときに再計算するという方法です。
IBM/XTあたりにそういうのがあったような。Bootstrap Project.2 で
BIOS機能一覧をみてたら、INT13の機能にそういうのがありましたよ。
セクタごとにCRCだかパリティだかを付けてたようです。
ただこういうのってハードウェアに直接触れるレベルでやるなら良い
けどソフトウェアでやるとどこにCRCを書き込むかが問題になりそう。
1セクタ510byteとかするのも変だし、別のセクタにまとめて書くと
書き込みのたびにそのセクタへのread modify writeが発生して性能
に響く上にディスクにも負荷が掛かって反って悪そうだから。
naitoh_r> # もっと低レベルな方法だと、複数のパーティションをひとつにまとめてアクセス
naitoh_r> # するようにし、パーティションのひとつをデータ訂正用に使うという方法も
naitoh_r> # ありそうです。ディスクドライバあたりで対応すれば、ファイルシステムは
naitoh_r> # 何も考えずに信頼性が上がりそうです。
ディスクの信頼性を上げるということからみても、デバイス機能に
追加するべきでファイルシステムに組み込むのは複雑すぎて良くない
でしょうね。
ただ標準機能の中でそういうことをやる必要があるかといえば
りんとしては必要ないのではないかと思います。最近のディスク
だとクラッシュはともかく通常の使用でデータ化けすると言う話は
聞いたことないですし、ディスク自体が内部で訂正をやってそうな
気もしますね。クラッシュにも耐えられる本格的なソフトウェア
RAIDをやるなら意味があるかもしれませんが、明らかにコストが
掛かるのでオプション機能にしないとまずいです。
ただオプション機能としてRAIDを組み込む際にファイルシステム
の方に必要な(あるいはあると便利な)機能がないかを調べておく
ことはやっておくべきでしょうね。
# 考えられるのはエラー情報の受け渡しとか、他にあるかな?
naitoh_r> 今資料が手元にないので、分からないのですが、NT はログをとっておくこと
naitoh_r> で、データ破壊を防いでいるのではなかったでしたっけ? この方法だと、
naitoh_r> 読み書きの回数が少なければ余分なデータをあまりもたずにデータ訂正が
naitoh_r> できそうです。
NTのは異常終了への対処で、ディスク障害への対処ではないと
思いますが…。ファイル操作をログに記録しておく方式で処理
が中断されても再起動時に操作を取り消しあるいは再実行して
ファイルシステムが矛盾した状態にならないようにしています。
仕組みとしてはデータベースのロールバック、ロールフォワード
の実現と同様のものらしいです。ただしファイルの中身のデータ
までは保証しません。
こういう機能は、データ訂正とは別に、B-Freeでも実現できると
良いですね。また、これは本当にファイルシステムで実現する
機能です。
# NTではNTFSでやってます。FATにはないはずです。
naitoh_r> > 訂正まで行うとなると、どっちにせよデータの肥大化を
naitoh_r> > まぬがれないので、検出のみにしたほうがいいとおもいます。
naitoh_r>
naitoh_r> これは、ケースバイケースだと思います。
naitoh_r> つまり、どうしてもデータ破壊を防ぎたいという場合には、ある程度の余分な
naitoh_r> 領域が必要であってもいいでしょうし、ディスクを余分に使いたくない場合には、
naitoh_r> 訂正用の情報はいらないでしょう。
naitoh_r> で、昔に比べると今はディスクの容量が増えてきているので、余分なデータが
naitoh_r> あってもいいのではないかなーとは思います。
ディスクでデータ破壊というと一番ありそうなのがディスク
クラッシュです。この場合、広い範囲でデータが壊れるので
対処するならRAIDみたく2台のディスクに同じデータを書き込む
とかいった対応が必要でしょう。で、こういうのはオプション
としてはありでも基本機能に入れるのは大袈裟ですね。
--- 林(takanori@ohsaki.meidensha.co.jp)