UnionFS

UnionFS は Linux と FreeBSD 向けのファイルシステムサービスであり、複数の異なるファイルシステム (ブランチと呼ばれる) のファイルやディレクトリ同士を透過的に重ねる (マージする) ことができる技術である。これにより、仮想的な単一のファイルシステムを形成する。この仮想的なファイルシステム内で、複数のブランチのディレクトリ内容を同時に見ることになる。

概要 
ブランチをマージするとき、他のブランチに対する優先度が指定される。両方のブランチが同じ名前のファイルを含むときの優先度を決める。

ブランチ毎に読み込み専用にも読み書き可能にもできる。仮想的なファイルシステムへの書き込みは、特定の物理的なファイルシステムへ向けられる。例えば、変更したくない雛形のブランチを読み込み専用とし、これに別の書き込み可能なブランチをマージする事で、あたかも全体として書き込み可能のように見える。マージを解消すれば、雛形のブランチを復元する事が出来る。これはコピーオンライトとしても知られている。Live CD のように、メディアが物理的に読み込み専用のときにも有用である。

利用 
KNOPPIX では、CD-ROM や DVD 等の読み込み専用のデバイスにあるイメージファイル (knoppix.img) のファイルシステムと、書き込み可能なファイルシステム間を結合する。後者にUSBメモリ等の不揮発性メモリを用いることで、CDとUSBメモリさえ携帯すれば、普段利用している環境をどのPCでも再現出来る。

ファイルシステムの共通テンプレートや、セキュリティ対策に使うこともできる。加えて、一時的なスナップショットとしても使われる。

実装 
Linux 向けの Unionfsには二つのバージョンがある。バージョン 1.x はモジュールとしてビルドできるスタンドアロンのものである。バージョン 2.x は再設計されたものである。2007年1月の時点で、Unionfs 2.0 はアンドリュー・モートンの Linux -mm ツリー に含まれているので、Linux カーネルに最終的に含まれることが予定されている。

他のLinuxの実装として aufs もある。

Plan 9 from Bell Labs はユーザやプロセス毎に専用の名前空間を構築するために、union mount を使っている。Union mount と同じ考え方の実装は、少なくとも1995年から BSD で利用可能になっている。

GNU Hurd には UnionFS がある。2008年1月の時点で、動作するが、読み込み専用のマウントポイントになる。

脚注

外部リンク 
 C. P. Wright et al. (2004). "Versatility and Unix Semantics in a Fan-Out Unification File System (pdf)."
 Linux Unionfs の公式サイト (Unionfs は Linux カーネルに含めることが予定されている）
 Bugzilla バグデータベース Linux Unionfs 向け
 AuFS は Linux 向けの代わりとなる unionfs である。
 http://podgorny.cz/unionfs-fuse （FUSE ベースの UnionFS の実装）
 FunionFS （ログや制御などのついたもう一つの高度な FUSE ベースの UnionFS の 実装）
 Kernel Korner - Unionfs: Bringing Filesystems Together - LinuxJournal の記事
 Union Filesystem macOS 上での使用
 FreeBSD 向けの union fs の新しい実装
 union fs の実装について
 LUFS ベースの unionfs
 Linux Implementations - Linux 向けの union ファイルシステムについての優れた記事

オープンソースソフトウェア
システムソフトウェア
Linuxのファイルシステム