ユニオンFS

ユニオン
開発者オープンソースコミュニティ
フルネーム統合ファイルシステム
特徴
ファイルシステムの権限POSIX
透過的な圧縮いいえ
透過的な暗号化いいえ(ただし、ブロックデバイスレベルで提供できます)
他の
サポートされているオペレーティングシステムLinuxFreeBSDNetBSD
Webサイトunionfs.filesystems.org

Unionfs は、 LinuxFreeBSDNetBSD向けのファイルシステムサービスであり、他のファイルシステムへのユニオンマウントを実装しています。Unionfs は、ブランチと呼ばれる別々のファイルシステムのファイルとディレクトリを透過的にオーバーレイし、単一の一貫性のあるファイルシステムを形成します。マージされたブランチ内で同じパスを持つディレクトリの内容は、新しい仮想ファイルシステム内の単一のマージされたディレクトリにまとめて表示されます。

ブランチをマウントする際に、一方のブランチのもう一方のブランチに対する優先度を指定します。そのため、両方のブランチに同じ名前のファイルが含まれている場合、一方のブランチがもう一方のブランチよりも優先されます。

それぞれのブランチは、読み取り専用または読み書き可能なファイルシステムのいずれかであり、仮想的なマージされたコピーへの書き込みは、特定の実ファイルシステムに向けられます。これにより、ファイルシステムは書き込み可能であるように見えますが、実際には書き込みによってファイルシステムが変更されることはありません。これはコピーオンライトとも呼ばれます。これは、 Live CDのように、メディアが物理的に読み取り専用である場合に望ましい場合があります。

Unionfsはもともとストーニーブルック大学のエレズ・ザドックと彼のチームによって開発されました。[ 1 ] [ 2 ] [ 3 ]

用途

Knoppixでは、 CD-ROMまたはDVD上のファイルシステムと、書き込み可能なドライブ( USBメモリなど)上のknoppix.img (Knoppix 7の場合はknoppix-data.img)というイメージファイルに含まれるファイルシステムとの結合が可能であり、書き込み可能なドライブが読み取り専用ファイルシステムよりも優先されます。これにより、ユーザーはシステム上の任意のファイルを変更することができ、新しいファイルはイメージに保存され、CD上のファイルの代わりに透過的に使用されます。[ 4 ]

Unionfsは、複数のファイルシステムに共通のテンプレートを作成するためにも使用できます。また、セキュリティ上の理由から、アドホックなスナップショットシステムとして使用されることもあります。

Dockerは、Unionfsに着想を得たAufsなどのファイルシステムを用いてDockerイメージを階層化します。ベースイメージに対してアクションが実行されると、レイヤーが作成され、ドキュメント化されます。各レイヤーには、アクションの再現方法が完全に記述されています。この戦略により、レイヤーの更新のみが伝播されるため、Dockerの軽量イメージが可能になります(例えば、完全なVMと比較して)。[ 5 ]

UbuntuLTSPは、LinuxターミナルサーバープロジェクトのUbuntu実装であり、シンクライアントまたはシッククライアントをPXEブートするときにUnionfsを使用します。[ 6 ]

その他の実装

Linux版Unionfsには2つのバージョンがあります。バージョン1.xはモジュールとしてビルドできるスタンドアロンバージョンです。バージョン2.xは、より新しく、再設計され、再実装されたバージョンです。

aufsはunionfsの代替バージョンです。[ 7 ]

Miklos Szerediによって書かれたoverlayfsはOpenWRTで使用され、Ubuntuでも検討され、長年の開発と議論[9]を経て、201410月26日にLinuxカーネルのバージョン3.18でメインラインに統合されました[ 8 ]

unionfs-fuseは独立したプロジェクトであり、カーネルモジュールやパッチではなく、ユーザー空間ファイルシステムプログラムとして実装されています。Unionfsと同様に、コピーオンライトと読み取り専用または読み書き可能なブランチをサポートしています。[ 10 ]

Bell Labsオペレーティング システムのPlan 9 では、ユーザーまたはプロセスごとに カスタム名前空間を構築するために、ユニオン マウントを広範に使用します。

ユニオンマウントは少なくとも1995年からBSDでも利用可能となっている。 [ 11 ]

GNU HurdにはUnionfsの実装があります。[ 12 ] 2008年1月現在、これは動作しますが、マウントポイントは読み取り専用になります。

mhddfs はUnionfs と同様に動作しますが、空き容量が最も多いドライブ間でファイルを分散配置できます。ユーザー空間ファイルシステムとして実装されています。

mergerfsはFUSEベースのユニオンファイルシステムで、ファイルへのアクセスと書き込みのための複数のポリシーとその他の高度な機能(xattr、ROとRWの混在ドライブの管理、リンクCoWなど)を提供します。[ 13 ]

サン・マイクロシステムズは、 1986年頃にSunOS 3で、コピーオンライトやホワイトアウト(下位層のファイルを上位層から隠す)などの機能を備えた階層化ファイルシステムの最初の実装を透過ファイルサービスとして導入しました。 [ 14 ]

2011年7月にリリースされたiOSデバイスの脱獄ツールJailbreakMe 3.0は、 unionfs技術を使用してオペレーティングシステムの変更のインストールプロセスを高速化します。[ 15 ]

参照

参考文献

  1. ^ Wright, Charles P.; Zadok, Erez (2004年12月). 「カーネルコーナー:Unionfs:ファイルシステムの統合」 . Linux Journal . 2004 (128): 8. ISSN  1075-3583 .
  2. ^ 「ファイルシステムとストレージラボのGitサーバー」ストーニーブルック大学. 2016年6月17日時点のオリジナルよりアーカイブ。 2017年7月17日閲覧プロジェクト: unionfs-3.9.y.git; 所有者: Erez Zadok
  3. ^ 「ファイルシステムとストレージラボ:コンピュータサイエンス学科」ストーニーブルック大学ラボコーディネーター兼主任研究員:エレズ・ザドック教授
  4. ^ Schulz, Werner P. (2016年12月15日). 「ハードドライブへのインストール:UNIONFS」 . Knoppix . 2017年7月17日閲覧
  5. ^ 「Dockerの概要:ユニオンファイルシステム」 Docker , Inc. 2017年7月13日. 2017年7月17日閲覧
  6. ^ Georgopoulos, Alkis (2010年12月24日). 「UbuntuLTSP/LTSPWithoutNFS」 . 2014年4月27日時点のオリジナルよりアーカイブ2017年7月17日閲覧。
  7. ^ "aufsホームページ" . 2017年7月2日. 2017年7月17日閲覧
  8. ^ Torvalds, Linus (2014年10月26日). 「overlayfsのマージとd_splice_alias()の失敗終了時のリーク修正」 . 2017年7月17日閲覧
  9. ^ Corbet, Jonathan (2011年6月15日). 「Overlayfsの議論」 . 2017年7月17日閲覧
  10. ^ Podgorny, Radek (2016年11月21日). 「unionfs-fuse – ユーザー空間unionfs実装」 . GitHub . 2017年7月17日閲覧
  11. ^ペンドリー、ジャン=サイモン、マクキューシック、マーシャル・カーク(1995年1月)。「4.4BSD-LiteのUnionマウント」USENIX 1995技術会議議事録2017年7月17日閲覧
  12. ^ Schwinge, Thomas (2014年2月26日). 「unionfs」 . GNU Hurd . 2017年7月17日閲覧
  13. ^ "trapexit/mergerfs" . GitHub . 2018年10月21日閲覧
  14. ^ Sun/Release 3.0 . 第1巻. Interleaf Technical Publishing. 1988年. pp. 15‑1–18, 16‑1–19.
  15. ^ Imran, Awais (2011年6月19日). 「Comex、JailbreakMe 3.0の脱獄プロセスを高速化へ。iPad 2の脱獄も間もなく開始!」 Redmond Pie . 2017年7月17日閲覧
  • GitHubZIPsFS - ZIP ファイルを透過的に展開する FUSE ベースのユニオンファイルシステム