[b-free 502] Re: それは機械が壊れている

Ryuichi Naitoh (naitoh_r@soft.hitachi.co.jp)
Wed, 10 Sep 1997 17:42:37 +0900

隆一です。

From: Takanori Hayashi <takanori@ohsaki.meidensha.co.jp>
Subject: [b-free 501] Re: それは機械が壊れている
Date: Wed, 10 Sep 1997 16:55:11 +0900

> 林です。

どうも、久しぶりです。

> 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が発生して性能
> に響く上にディスクにも負荷が掛かって反って悪そうだから。

うーん、見落としていました(笑)。
やっぱり、ハードウェアの信頼性が低い時代にはそういう工夫をしていたので
すね。

ソフトウェアでやるとしたら、ディスクの物理セクタとは別の論理的なデータ
単位で付加情報をつけることになると思います。つまり、ファイルシステムに
1K バイト書き込む毎にディスクには 1K + パリティ情報が書き込まれるとか。

> ディスクの信頼性を上げるということからみても、デバイス機能に
> 追加するべきでファイルシステムに組み込むのは複雑すぎて良くない
> でしょうね。
> ただ標準機能の中でそういうことをやる必要があるかといえば
> りんとしては必要ないのではないかと思います。最近のディスク
> だとクラッシュはともかく通常の使用でデータ化けすると言う話は
> 聞いたことないですし、ディスク自体が内部で訂正をやってそうな
> 気もしますね。クラッシュにも耐えられる本格的なソフトウェア
> RAIDをやるなら意味があるかもしれませんが、明らかにコストが
> 掛かるのでオプション機能にしないとまずいです。
> ただオプション機能としてRAIDを組み込む際にファイルシステム
> の方に必要な(あるいはあると便利な)機能がないかを調べておく
> ことはやっておくべきでしょうね。
> # 考えられるのはエラー情報の受け渡しとか、他にあるかな?

確かにエラー訂正を標準で行う必要はないと思います。
特に最近の(それなりに)信頼性の上がったハードウェアでは、データ破壊もそ
う起きないでしょう。

標準でエラー訂正が入ったファイルシステムをサポートするというのもそれは
それで B-Free OS のウリになるとは思いますが。電源をズドンと落としても、
平気で立ち上がってくる OS とかいって(DOS か?)。

ただ、ハードウェア資源の消費については、今のハードウェア環境ではかなり
余裕があると思うので、コストはあまり気にする必要はないと思います。
(2GB のディスクで 100MB をエラー訂正に使っても、あまり気にならないでしょ
う?)
むしろ、エラー訂正のための処理を追加することによってファイルシステムの
性能が劣化する方が心配です。

逆にいえば、何かのウルトラ C 級のアルゴリズムを使えばエラー訂正をして
も性能が落ちないならば、何も考えずに標準で入れてしまっても、いいと思い
ます。

> naitoh_r> 今資料が手元にないので、分からないのですが、NT はログをとっておくこと
> naitoh_r> で、データ破壊を防いでいるのではなかったでしたっけ? この方法だと、
> naitoh_r> 読み書きの回数が少なければ余分なデータをあまりもたずにデータ訂正が
> naitoh_r> できそうです。
>
> NTのは異常終了への対処で、ディスク障害への対処ではないと
> 思いますが…。ファイル操作をログに記録しておく方式で処理
> が中断されても再起動時に操作を取り消しあるいは再実行して
> ファイルシステムが矛盾した状態にならないようにしています。
> 仕組みとしてはデータベースのロールバック、ロールフォワード
> の実現と同様のものらしいです。ただしファイルの中身のデータ
> までは保証しません。
> こういう機能は、データ訂正とは別に、B-Freeでも実現できると
> 良いですね。また、これは本当にファイルシステムで実現する
> 機能です。
> # NTではNTFSでやってます。FATにはないはずです。

これは、BSD などでやっている Log-structured file system とは違うのです
よね? むしろ、ジャーナルファイルシステムに近い?
このアトミックな操作の結果を保証するのは重要そうですね。
ひょっとすると、ファイルシステムの API の追加が必要かもしれませんが、
B-Free FS に入れてもいいと思います。

> naitoh_r> > 訂正まで行うとなると、どっちにせよデータの肥大化を
> naitoh_r> > まぬがれないので、検出のみにしたほうがいいとおもいます。
> naitoh_r>
> naitoh_r> これは、ケースバイケースだと思います。
> naitoh_r> つまり、どうしてもデータ破壊を防ぎたいという場合には、ある程度の余分な
> naitoh_r> 領域が必要であってもいいでしょうし、ディスクを余分に使いたくない場合には、
> naitoh_r> 訂正用の情報はいらないでしょう。
> naitoh_r> で、昔に比べると今はディスクの容量が増えてきているので、余分なデータが
> naitoh_r> あってもいいのではないかなーとは思います。
>
> ディスクでデータ破壊というと一番ありそうなのがディスク
> クラッシュです。この場合、広い範囲でデータが壊れるので
> 対処するならRAIDみたく2台のディスクに同じデータを書き込む
> とかいった対応が必要でしょう。で、こういうのはオプション
> としてはありでも基本機能に入れるのは大袈裟ですね。

やっぱり、大袈裟ですか?

p----------------------------------------------------------------------q
| FROM R.Night |
| E-mail: |
| rnaitoh@st.rim.or.jp |
b----------------------------------------------------------------------d