分散ファイルシステム

前にひらさんが、「分散OSと透過性」とか、「ファイルシステムの面白さに目覚めた」という話を書かれていたので、ファイルシステムから見た分散OSの透過性について何か書けないかなと思いながら、日記自体の更新が止まっていた。

ファイルシステムの仕事は簡単に言うと次の三つに集約できる。

  • 名前管理
  • ファイル操作
  • 領域管理

名前管理とは名前空間の管理、すなわち、ファイル名とファイルの実体の対応を管理すること。UNIXならファイル名とinodeの対応になる。ファイル操作とは、open-read-write-closeといった操作を提供すること。領域管理はファイルをどのディスクブロックに割り当てるか対応づけること。これらはローカルファイルシステム分散ファイルシステムも同じである。

分散OSで特に重要になるのが名前管理である。名前空間をどのように構築するかには二つのアプローチがあって、Amoebaのようにシステムでグローバルな名前空間を提供する方法と、NFSのように各ホストが独立した名前空間を持っていて、リモートマウントを使って名前空間を繋ぐ方法である。位置透過性を考えると、各ホスト独立した名前空間を持っている場合、プロセスがあるホストから別のホストに移動した場合、今までアクセスできていたファイルにアクセスできなくなる可能性がある。一方、名前空間を名前サーバによって集中管理する場合は、名前サーバが性能のボトルネックになりやすい。ファイルアクセスには局所性があることが多いので、性能上はリモートマウントが有利なケースが多い。

Plan9はリモートマウント型のシステムだが、ユニオンマウント可能なので、名前空間の構築における柔軟性が高く、バランスのとれたシステムになっているのではないだろうか。