仮想ファイルシステム
仮想ファイルシステム (Virtual File System, VFS) は、実際のファイルシステムの上位に位置する抽象化層である。VFSの目的はクライアントアプリケーションが様々なファイルシステムに同じ方法でアクセスできるようにすることである。例えば VFS を使うと、クライアントアプリケーションはローカルな記憶装置にもネットワーク上の記憶装置にも透過的にアクセスできるため、その違いを意識する必要がない。あるいは、Windows、Mac OS、UNIXといったオペレーティングシステム (OS) の違いを超えてファイルシステムの違いを意識することなくアクセスすることが可能となる。
VFSは、カーネルと実際のファイルシステムとのインタフェースあるいは規約を定義している。従って、その規約に従うことで簡単に新たなファイルシステムをカーネルに追加することができる。規約の条件はリリースの度に非互換な変更を加えられる可能性があり、ファイルシステムは新たなリリースに対応するために修正を施したり、再コンパイルする必要がある。あるいは、OS側で規約変更を下位互換を保つように行っていれば、各ファイルシステムは新たなバージョンのOSでもそのまま使用可能となる。
[編集] 実装
Unix系システムでの最初のVFS機構は、サン・マイクロシステムズ(サン)がSunOS 2.0に導入した。その時点で、ローカルなUFSファイルシステムとリモートのNFSファイルシステムを透過的に使用することができた。このため、サンからNFSのコードをライセンス供与されたUNIXベンダー各社は、サンのVFSの設計をコピーすることが多かった。他のファイルシステムを追加することが容易になり、サンはVFS機構を利用してMS-DOSのFATファイルシステムを実装した(SunOS 4.1 まで出荷されなかった)。SunOSの実装はSystem V Release 4のVFS機構の基盤となった。
John Heidemannは、実験的なFicusファイルシステムのために SunOS 4.0で 「スタッキング (stacking)」VFS を開発した。この設計は、実装は異なるが意味的には同等のファイルシステム間でコードの再利用を可能にした(例えば、暗号化ファイルシステムは暗号化されていない他のファイルシステムのファイル名管理とストレージ管理のコードを利用することができた)。Heidemann はこの成果を 4.4BSD でも使用した。Mac OS Xを含むBSD系のOSでは、彼のStacking VFSのコードが使われている。
その他のUnix系システムでのVFS機構として、System V Release 3の File System Switch、UltrixのGeneric File System、LinuxのVFSなどがある。OS/2とWindowsでは、VFSと同等の機構をInstallable File Systemと呼ぶ。
[編集] 外部リンク
以下、英文
- Put virtual filesystems to work
- Vnodes: An Architecture for Multiple File System Types in Sun UNIX
- The Linux Virtual File-system Layer
- Linux kernel's Virtual File System
|
||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||