[b-free 519] Re: ファイルシステムの信頼性

Takanori Hayashi (takanori@ohsaki.meidensha.co.jp)
Fri, 12 Sep 1997 17:48:18 +0900

林です。

In message <199709120657.PAA23846@hisoft.soft.hitachi.co.jp>
"[b-free 518] Re: ファイルシステムの信頼性"
"Ryuichi Naitoh <naitoh_r@soft.hitachi.co.jp>" wrote:
naitoh_r> > やっぱり違うと思いますが。訂正データは、ディスクの読み書きの異常に
naitoh_r> > 備えるもので基本的にデバイスの管轄、ログは一連の書き込みシーケンスを
naitoh_r> > 原子化するものでファイルシステムの管轄、目的から管轄レベルから全然
naitoh_r> > 違うと思いますけど。両方の目的に適合するような冗長データを作ることは
naitoh_r> > できるかもしれませんが、同一に論ずるものでもないでしょう。
naitoh_r>
naitoh_r> なるほど。
naitoh_r> ロギングと訂正データの機能が重ならないならば、両方とも採用するというのも
naitoh_r> ひとつの手ですね。
naitoh_r>
naitoh_r> 管轄レベルは両方ともファイルシステムで同じではないですか?
naitoh_r> デバイスドライバでデータ訂正を管理するというのもありかと思いますが、
naitoh_r> ファイル毎にデータ破壊がおこっているかどうかを知るためにも、ファイル
naitoh_r> システム内で管理した方がいいと思います。

異常が発生するのはディスクにおいてなので、異常の検出はデバイスより
上には上げるべきではないでしょう。ファイル単位での処理のためにエラー
情報をファイルシステムに上げるというのはありですけど。
エラー通知は、デバイス読み書きへの返り値として返すことができます。
データ訂正したとか訂正できなかったとか。訂正した場合はデータは正しい
ものが受け取れているわけです。
# ファイルシステムでやってはいけないとは言いませんが…。

naitoh_r> もちろん、キャッシュがある場合には write システムコール終了時点での
naitoh_r> ディスクへの書き込みを保証することは無理だと思います。
naitoh_r> キャッシュがある時に、書き込みを保証するとしたら、書き込み完了待ちのシ
naitoh_r> ステムコールを追加するくらいですね。
naitoh_r> NT って、ファイル毎のフラッシュというのは指定できましたっけ?

FlushFileBuffersというAPIがあります。
# フラッシュはまさに書き込み完了待ちシステムコールですね。

naitoh_r> ただ、キャッシュがなくても速度の低下がそれほどなければ、キャッシュを使
naitoh_r> 用しないという選択もあり得ます。

書き込み時のオプションか、オープン時の指定でキャッシュしない、
あるいはキャッシュするがフラッシュ完了まで書き込みシステムコール
から戻らないようにする指定ができても良いですね。書き込むたびに
フラッシュを呼んでも良いわけですが…。

naitoh_r> > そういえばBTRON1の仕様にフラッシュとかありました? ないならAPIを追加
naitoh_r> > しないといけないかも。
naitoh_r>
naitoh_r> そういえば、他の OS の FS として NTFS しか議論していませんが、他にも
naitoh_r> 信頼性を上げるための工夫をしている FS として何があるでしょうか?
naitoh_r>
naitoh_r> 私としては、Log-structured file system に注目しているのですが。
naitoh_r> (しかし、この辺の新しいファイルシステムの話はあまり表には出てこないで
naitoh_r> すね。。。)

最近の動向にはあまり詳しくないけど、ファイルシステムの傾向
としてはデータベースファイルシステムでは? ファイルシステム
自身がデータベース機能を持つわけですが。レジストリもデータ
ベースの一種だし。
B-Freeでもやってみます? トランザクティブなファイル操作とか
レコード条件を指定しての実身検索とか。
# 簡単な検索機能はBTRON1にもあるか。

# 性能の確保が大変でしょうけど。

---
    林(takanori@ohsaki.meidensha.co.jp)