仮想ファイルシステム

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

仮想ファイルシステムVFS)または仮想ファイルシステムスイッチは、より具体的なファイルシステム上にある抽象レイヤーですVFSの目的は、クライアントアプリケーションがさまざまな種類の具象ファイルシステムに統一された方法でアクセスできるようにすることです。たとえば、VFSを使用すると、クライアントアプリケーションが違いに気付くことなく、ローカルおよびネットワークストレージデバイスに透過的にアクセスできます。WindowsクラシックMac OS / macOSUnixの違いを埋めるために使用できますファイルシステム。これにより、アプリケーションは、アクセスしているファイルシステムのタイプを知らなくても、それらのタイプのローカルファイルシステム上のファイルにアクセスできます。

VFSは、カーネルと具象ファイルシステム間のインターフェース(または「コントラクト」)を指定します。したがって、契約を履行するだけで、新しいファイルシステムタイプのサポートをカーネルに簡単に追加できます。契約条件はリリースごとに互換性がないように変更される可能性があります。これには、オペレーティングシステムの新しいリリースで機能するように、具体的なファイルシステムサポートを再コンパイルし、場合によっては再コンパイル前に変更する必要があります。または、オペレーティングシステムのサプライヤが、契約に対して下位互換性のある変更のみを行う場合があります。これにより、オペレーティングシステムの特定のリリース用に構築された具体的なファイルシステムサポートが、オペレーティングシステムの将来のバージョンで機能します。

実装

Linuxカーネルのストレージスタックのさまざまな部分におけるVFSレイヤーの位置。[1]

Unixライクなシステムの最初の仮想ファイルシステムメカニズムの1つは、1985年SunOS2.0でSunMicrosystemsによって導入されました。 [2]これにより、Unixシステム呼び出しがローカルUFSファイルシステムとリモートNFSファイルシステムに透過的にアクセスできるようになりました。このため、SunからNFSコードのライセンスを取得したUnixベンダーは、SunのVFSの設計をコピーすることがよくありました。他のファイルシステムもプラグインできます。Sunで開発されたMS- DOSFATファイルシステムの実装がSunOSVFSにプラグインされましたが、SunOS4.1まで製品として出荷されませんでした。SunOSの実装は、SystemVリリース4のVFSメカニズムの基礎でした。

John Heidemannは、実験的なFicusファイルシステム用にSunOS4.0でスタッキングVFSを開発しましたこの設計は、セマンティクスが異なるが類似しているファイルシステムタイプ間でのコードの再利用を提供しました(たとえば、暗号化ファイルシステムは、非暗号化ファイルシステムのすべての命名コードとストレージ管理コードを再利用できます)。ハイデマンは、彼の論文研究の一部として4.4BSDで使用するためにこの作品を適応させました。このコードの子孫は、 macOSを含む最新のBSD派生物のファイルシステム実装を支えています

他のUnix仮想ファイルシステムには、System Vリリース3のファイルシステムスイッチ、 Ultrixの汎用ファイルシステム、およびLinuxのVFSが含まれます。OS / 2およびMicrosoftWindowsでは仮想ファイルシステムメカニズムはインストール可能ファイルシステムと呼ばれます。

Filesystem in Userspace(FUSE)メカニズムにより、ユーザーランドコードをLinux、 NetBSDFreeBSDOpenSolaris、およびmacOS 仮想ファイルシステムメカニズムにプラグインできます。

Microsoft Windowsでは、仮想ファイルシステムはユーザーランドのシェル名前空間拡張機能を介して実装することもできますただし、Windowsの最低レベルのファイルシステムアクセスアプリケーションプログラミングインターフェイスをサポートしていないため、すべてのアプリケーションが名前空間拡張として実装されているファイルシステムにアクセスできるわけではありません。 KIOGVfs / GIOは、 KDEGNOMEデスクトップ環境で(それぞれ)同様のメカニズムを提供しますが、同様の制限がありますが、FUSE技術を使用するように作成できるため、システムにスムーズに統合できます。

単一ファイルの仮想ファイルシステム

仮想ファイルシステムは、ソフトウェアを使用して具体的なファイルシステムの機能を提供する管理可能なコンテナとして機能するファイルまたはファイルのグループ(必ずしも具体的なファイルシステム内にある必要はありません)を指す場合があります。このようなコンテナの例としては、CBFSストレージやPCTaskなどのエミュレーター内の単一ファイル仮想ファイルシステム、いわゆるWinUAE、OracleのVirtualBox、MicrosoftのVirtual PCVMwareなどがあります。

このタイプのファイルシステムの主な利点は、一元化されており、簡単に削除できることです。単一ファイル仮想ファイルシステムには、任意のファイルシステム(仮想またはその他)に期待されるすべての基本機能が含まれる場合がありますが、これらのファイルシステムの内部構造へのアクセスは、多くの場合、単一ファイル仮想を利用するように特別に作成されたプログラムに制限されます。ファイルシステム(ユニバーサルアクセスを可能にするドライバーを介した実装の代わりに)。もう1つの大きな欠点は、他の仮想ファイルシステムと比較した場合にパフォーマンスが比較的低いことです。パフォーマンスの低下は主に、データが仮想ファイルシステムに書き込まれたり、仮想ファイルシステムから削除されたりするときに仮想ファイルをシャッフルするコストが原因です。

単一ファイル仮想ファイルシステムの実装

単一ファイル仮想ファイルシステムの直接的な例には、ファイルシステムデータだけでなくエミュレートされたディスクレイアウトもカプセル化するPCTaskやWinUAEなどのエミュレーターが含まれます。これにより、OSのインストールを他のソフトウェアと同じように扱いやすくなり、リムーバブルメディアを使用して、またはネットワーク経由で転送できます。

PCTask

AmigaエミュレーターPCTaskは、 4.77MHzでクロックされるIntelPC 8088ベースマシンエミュレートしました(その後、25MHzでクロックされる80486SX)。PCTaskのユーザーは、Amigaファイルシステム上に大きなサイズのファイルを作成でき、このファイルは、実際のP​​Cハードディスクであるかのようにエミュレーターから仮想的にアクセスされます。ファイルは、通常のMS-DOSまたはWindowsファイルを保存するためにFAT16ファイルシステムでフォーマットできます。[1] [2]

WinUAE

UAE for WindowsWinUAEを使用すると、Windows上の大きな単一ファイルをAmigaファイルシステムとして扱うことができます。WinUAEでは、このファイルはハードファイルと呼ばれます。[3]

UAEは、ホストファイルシステム( WindowsLinuxmacOSAmigaOS)上のディレクトリをAmigaファイルシステムとして扱うこともできます。[4]

も参照してください

  • 9P(プロトコル)  –プラン9のVFSレイヤーに直接マップする分散ファイルシステムプロトコルで、すべてのファイルシステムにネットワーク透過性のアクセスを提供します
  • 合成ファイルシステム –ディスクベースのファイルシステムのツリーで通常のファイルであるかのように見える非ファイルオブジェクトへの階層インターフェイス

メモ

  1. ^ PCXとPCTask、AmigaPCエミュレーター間のAmiga比較でのエミュレーション
  2. ^ PCTaskがどのように機能するかを説明するこの記事も参照してください
  3. ^ WinUAEに関するヘルプ(ハードファイルのセクションを参照)。
  4. ^ WinUAEに関するヘルプ(「ディレクトリの追加」セクションを参照)

参考文献

  1. ^ ヴェルナーフィッシャー; ゲオルク・シェーンベルガー(2015-06-01)。「Linuxストレージスタック図」Thomas-Krenn.AG 2015年6月8日取得
  2. ^ Kleiman、Steve R.(1986年6月)。「Vnodes:Sun UNIXでの複数のファイルシステムタイプのアーキテクチャ」(PDF)USENIXサマー86:238–247。2014年6月29日にオリジナル(PDF)からアーカイブされました2016年12月31日取得

外部リンク