MOUNT_UNION(8)

名称
mount_union - ユニオン (重ね合わせ) ファイルシステム

書式
mount_union [-br] [-o options] directory uniondir

解説
mount_union コマンドは、 directory と uniondir の両方のディレクトリツリーの内容を見えるようにしたまま、 directory を uniondir の上に接続します。デフォルトでは、 directory が 上 の層になり、 uniondir が 下 の層になります。

オプションは以下のものがあります:

-b  デフォルトの上下関係を入れ換えます。つまり、 directory が下になり、 uniondir が上になります。しかし、 uniondir はマウントポイントのままです。

-o  -o フラグの後に、オプションをカンマで区切って並べて指定します。 指定可能なオプションとその意味は mount(8) を参照してください。

-r  mount_null(8) でのマウントと同様に、下の層を完全に隠してしまいます。

ファイルシステムのセキュリティを維持するためには、 ファイルシステムをマウントするユーザは、スーパーユーザか、 マウントポイントのディレクトリに書込み許可を持つ者でなければなりません。

ファイル名の探索は上の層から行われ、それから下の層で探索が行われます。 下の層でディレクトリを見つけたが、上の層にはそのエントリがない場合には、 上の層に シャドゥ ディレクトリが作られます。このディレクトリは、 union マウントを行ったユーザが所有者となります。モードは、 “rwxrwxrwx” (0777) をその時点で有効な umask で変更したものになります。

あるファイルが上の層に存在している場合に、下の層にある同じ名前のファイルに アクセスする手段はありません。必要なら null マウント と union マウントを組み合わせて、下の層にも別のパス名でアクセスできるように しておくとよいでしょう。

オブジェクトへのアクセスは、ディレクトリの場合を除いて、通常の ファイルシステムアクセスチェックを経て行われます。ディレクトリの場合、 ユーザは上の層と下の層の両方のディレクトリにアクセスできなければなりません (両方存在している必要があります)。

uniondir 中のオブジェクトの作成や変更要求は、いくつかの特別な場合を除いて 上の層に渡されます。下の層に存在するファイルを書込みのために オープンしようとすると、上の層にそのファイルの 完全な コピーが作成され、上の層のコピーをオープンすることになります。同様に、 下の層のファイルを切り詰めてサイズを 0 にしようとすると、上の層に空のファイル を作成することになります。これら以外の下の層のファイルの変更が必要な操作は 失敗し、 EROFS が返されます。

union ファイルシステムは、個々のファイルシステムを扱っているというよりも、 名前空間を扱っていると考えるべきでしょう。union 操作は、 uniondir をルートとするディレクトリツリーに再帰的に適用されます。 uniondir の下にマウントされるファイルシステムには、 すべて union 操作が適用されます。これは、 mount(8) の union オプションとは異なります。 union オプションの場合は、マウントポイントのみに適用され、 ファイル名の探索のみに使われます。

使用例
コマンド

    mount -t cd9660 -o ro /dev/cd0a /usr/src
    mount -t union /var/obj /usr/src

は、CD-ROM ドライブを /dev/cd0a を /usr/src にマウントし、その上に /var/obj を重ねています。これによって、書込みのできない CD-ROM 上のソースツリーが 書き込めるように見えます。

コマンド

    mount -t union -o -b /sys $HOME/sys

は、ユーザのホームディレクトリの下にある sys ディレクトリに、システムのソースディレクトリを下にして重ね合わせます。 こうすることによって、個々のユーザが他のユーザに変更箇所が見えないように しながら、新しいカーネルを作ったりすることができるようになります。 下の層は、依然として /sys からアクセスできることに注意してください。

関連項目
intro(2), mount(2), unmount(2), fstab(5), mount(8), mount_null(8), fsck_ffs(8)

バグ
ホワイトアウトをサポートしていないので、ユニオンファイルシステム でマウントしているときに、下の層のファイルの削除 や名前の変更は行うことはできません。 ホワイトアウトのサポートのないファイルシステム上に union ディレクトリをマウントしようとすると EOPNOTSUPP (``Operation not supported'') が返されます。 ホワイトアウトをサポートするには、既存の FFS ファイルシステムに対して option of fsck_ffs(8) を -c オプションつきで実行すればできます。

ユニオンされているディレクトリツリー上で find(1) を実行すると、上の層にシャドーディレクトリが作成されるという副作用が あります。

歴史
mount_union コマンドは 4.4BSD で初めて登場しました。