Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

19.2.3. マウントの共有

場合によっては、特定のシステム管理タスクでは、ディレクトリーツリー内の複数の場所から同じファイルシステムにアクセスする必要がある場合があります(例: chroot 環境を準備する場合など)。これは可能で、Linux では、必要に応じて多くのディレクトリーに、同じファイルシステムをマウントできます。さらに、mount コマンドは、特定のマウント を複製する手段を提供する --bind オプションを実装します。以下のような使用法になります。
$ mount --bind old_directory new_directory
このコマンドは、両方の場所からファイルシステムにアクセスできますが、元のディレクトリー内にマウントされているファイルシステムには適用されません。これらのマウントも追加するには、以下のコマンドを使用します。
$ mount --rbind old_directory new_directory
また、可能な限り柔軟性を確保するために、Red Hat Enterprise Linux 7 は 共有サブツリー として知られる機能を実装します。この機能により、以下の 4 つのマウントタイプを使用できます。
共有マウント
共有マウントでは、指定したマウントポイントの正確なレプリカを作成できます。マウントポイントが共有マウントとしてマークされている場合は、元のマウントポイント内のすべてのマウントが複製マウントポイントに反映されます (その逆も同様です)。マウントポイントの種類を共有マウントに変更するには、シェルプロンプトで以下を入力します。
$ mount --make-shared mount_point
または、選択したマウントポイントと、その下のすべてのマウントポイントのマウントタイプを変更する場合は、次のコマンドを実行します。
$ mount --make-rshared mount_point
使用例は、例19.4「共有マウントポイントの作成」 を参照してください。

例19.4 共有マウントポイントの作成

その他のファイルシステムが一般的にマウントされている場所は、リムーバブルメディアの /media/ ディレクトリーと、ファイルシステムを一時的にマウントされた /mnt/ ディレクトリーという 2 つです。共有マウントを使用して、この 2 つのディレクトリーが同じコンテンツを共有できます。root として、/media/ ディレクトリーを共有 としてマークします。
# mount --bind /media /media
# mount --make-shared /media
以下のコマンドを使用して、/mnt/ 内に複製を作成します。
# mount --bind /media /mnt
これで、/media/ 内のマウントが /mnt/ にも表示されていることを確認できます。たとえば、CD-ROM ドライブに空でないメディアが含まれ、/media/cdrom/ ディレクトリーが存在する場合は、以下のコマンドを実行します。
# mount /dev/cdrom /media/cdrom
# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
同様に、/mnt/ ディレクトリーにマウントされているファイルシステムが /media/ に反映されていることを確認できます。たとえば、/dev/sdc1 デバイスを使用する空でない USB フラッシュドライブがプラグインしており、/ mnt/flashdisk/ ディレクトリーが存在する場合は、以下を入力します。
# # mount /dev/sdc1 /mnt/flashdisk
# ls /media/flashdisk
en-US  publican.cfg
# ls /mnt/flashdisk
en-US  publican.cfg
スレーブマウント
スレーブマウントにより、指定したマウントポイントの限定的な複製の作成が可能になります。マウントポイントがスレーブマウントとしてマークされている場合は、元のマウントポイント内のすべてのマウントが複製マウントポイントに反映されますが、スレーブマウント内のマウントは元のポイントに反映されません。マウントポイントのタイプをスレーブマウントに変更するには、シェルプロンプトで以下を入力します。
mount --make-slave mount_point
または、選択したマウントポイントのマウントタイプと、その下のすべてのマウントポイントを変更することもできます。
mount --make-rslave mount_point
使用例は、例19.5「スレーブマウントポイントの作成」 を参照してください。

例19.5 スレーブマウントポイントの作成

この例は、/media/ ディレクトリーのコンテンツが /mnt/ にも表示されるが、/ mnt/ ディレクトリーのマウントは / media/ に反映されないことを示しています。root として、最初に /media/ ディレクトリーを共有としてマークします。
~]# mount --bind /media /media
~]# mount --make-shared /media
次に、/mnt/ に複製を作成しますが、その複製を「slave」としてマークします。
~]# mount --bind /media /mnt
~]# mount --make-slave /mnt
/media/ 内のマウントが /mnt/ にも表示されていることを確認します。たとえば、CD-ROM ドライブに空でないメディアが含まれ、/media/cdrom/ ディレクトリーが存在する場合は、以下のコマンドを実行します。
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
また、/mnt/ ディレクトリーにマウントされているファイルシステムが / media/ に反映されていないことを確認します。たとえば、/dev/sdc1 デバイスを使用する空でない USB フラッシュドライブがプラグインしており、/ mnt/flashdisk/ ディレクトリーが存在する場合は、以下を入力します。
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg
プライベートマウント
プライベートマウントはデフォルトのマウントタイプで、共有またはスレーブマウントとは異なり、伝播イベントは受信または転送されません。マウントポイントをプライベートマウントとして明示的にマークするには、シェルプロンプトで以下を入力します。
mount --make-private mount_point
または、選択したマウントポイントと、その下のすべてのマウントポイントのマウントタイプを変更できます。
mount --make-rprivate mount_point
使用例は、例19.6「プライベートマウントポイントの作成」 を参照してください。

例19.6 プライベートマウントポイントの作成

例19.4「共有マウントポイントの作成」 のシナリオを考慮して、以下のコマンドで root で以下のコマンドを使用して、共有マウントポイントが作成されていることを前提としています。
~]# mount --bind /media /media
~]# mount --make-shared /media
~]# mount --bind /media /mnt
/mnt/ ディレクトリーをプライベートとしてマークするには、以下を入力します。
~]# mount --make-private /mnt
これで、/media/ 内のマウントのいずれも /mnt/ にも表示されていないことを確認 できるようになりました。たとえば、CD-ROM ドライブに空でないメディアが含まれ、/media/cdrom/ ディレクトリーが存在する場合は、以下のコマンドを実行します。
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
~]#
また、/mnt/ ディレクトリーにマウントされているファイルシステムが /media/ に反映されていないことを確認することもできます。たとえば、/dev/sdc1 デバイスを使用する空でない USB フラッシュドライブがプラグインしており、/ mnt/flashdisk/ ディレクトリーが存在する場合は、以下を入力します。
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg
バインド不可能なマウント
特定のマウントポイントが何度も複製されないようにするために、バインド解除可能なマウントが使用されます。マウントポイントのタイプをバインド不可なマウントに変更するには、シェルプロンプトで以下を入力します。
mount --make-unbindable mount_point
または、選択したマウントポイントと、その下のすべてのマウントポイントのマウントタイプを変更できます。
mount --make-runbindable mount_point
使用例は、例19.7「バインドできないマウントポイントの作成」 を参照してください。

例19.7 バインドできないマウントポイントの作成

/media/ ディレクトリーが root として共有されないようにするには、以下を実行します。
# mount --bind /media /media
# mount --make-unbindable /media
これにより、その後、このマウントの複製を作成しようとすると、エラーが発生して失敗します。
# mount --bind /media /mnt
mount: wrong fs type, bad option, bad superblock on /media,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail  or so