Chapter 17. Sharing a mount on multiple mount points
Chapter 17. Sharing a mount on multiple mount points As a system administrator, you can duplicate mount points to make the file systems accessible from multiple directories. 17.1. Types of shared mounts There are multiple types of shared mounts that you can use. The difference between them is what happens when you mount another file system under one of the shared mount points. The shared mounts are implemented using the shared subtrees functionality. The following mount types are available: private This type does not receive or forward any propagation events. When you mount another file system under either the duplicate or the original mount point, it is not reflected in the other. shared This type creates an exact replica of a given mount point. When a mount point is marked as a shared mount, any mount within the original mount point is reflected in it, and vice versa. This is the default mount type of the root file system. slave This type creates a limited duplicate of a given mount point. When a mount point is marked as a slave mount, any mount within the original mount point is reflected in it, but no mount within a slave mount is reflected in its original. unbindable This type prevents the given mount point from being duplicated whatsoever. Additional resources The Shared subtrees article on Linux Weekly News 17.2. Creating a private mount point duplicate Duplicate a mount point as a private mount. File systems that you later mount under the duplicate or the original mount point are not reflected in the other. Procedure Create a virtual file system (VFS) node from the original mount point: Mark the original mount point as private: Alternatively, to change the mount type for the selected mount point and all mount points under it, use the --make-rprivate option instead of --make-private . Create the duplicate: Example 17.1. Duplicating /media into /mnt as a private mount point Create a VFS node from the /media directory: Mark the /media directory as private: Create its duplicate in /mnt : It is now possible to verify that /media and /mnt share content but none of the mounts within /media appear in /mnt . For example, if the CD-ROM drive contains non-empty media and the /media/cdrom/ directory exists, use: It is also possible to verify that file systems mounted in the /mnt directory are not reflected in /media . For example, if a non-empty USB flash drive that uses the /dev/sdc1 device is plugged in and the /mnt/flashdisk/ directory is present, use: Additional resources mount(8) man page on your system 17.3. Creating a shared mount point duplicate Duplicate a mount point as a shared mount. File systems that you later mount under the original directory or the duplicate are always reflected in the other. Procedure Create a virtual file system (VFS) node from the original mount point: Mark the original mount point as shared: Alternatively, to change the mount type for the selected mount point and all mount points under it, use the --make-rshared option instead of --make-shared . Create the duplicate: Example 17.2. Duplicating /media into /mnt as a shared mount point To make the /media and /mnt directories share the same content: Create a VFS node from the /media directory: Mark the /media directory as shared: Create its duplicate in /mnt : It is now possible to verify that a mount within /media also appears in /mnt . For example, if the CD-ROM drive contains non-empty media and the /media/cdrom/ directory exists, use: Similarly, it is possible to verify that any file system mounted in the /mnt directory is reflected in /media . For example, if a non-empty USB flash drive that uses the /dev/sdc1 device is plugged in and the /mnt/flashdisk/ directory is present, use: Additional resources mount(8) man page on your system 17.4. Creating a slave mount point duplicate Duplicate a mount point as a slave mount type. File systems that you later mount under the original mount point are reflected in the duplicate but not the other way around. Procedure Create a virtual file system (VFS) node from the original mount point: Mark the original mount point as shared: Alternatively, to change the mount type for the selected mount point and all mount points under it, use the --make-rshared option instead of --make-shared . Create the duplicate and mark it as the slave type: Example 17.3. Duplicating /media into /mnt as a slave mount point This example shows how to get the content of the /media directory to appear in /mnt as well, but without any mounts in the /mnt directory to be reflected in /media . Create a VFS node from the /media directory: Mark the /media directory as shared: Create its duplicate in /mnt and mark it as slave : Verify that a mount within /media also appears in /mnt . For example, if the CD-ROM drive contains non-empty media and the /media/cdrom/ directory exists, use: Also verify that file systems mounted in the /mnt directory are not reflected in /media . For example, if a non-empty USB flash drive that uses the /dev/sdc1 device is plugged in and the /mnt/flashdisk/ directory is present, use: Additional resources mount(8) man page on your system 17.5. Preventing a mount point from being duplicated Mark a mount point as unbindable so that it is not possible to duplicate it in another mount point. Procedure To change the type of a mount point to an unbindable mount, use: Alternatively, to change the mount type for the selected mount point and all mount points under it, use the --make-runbindable option instead of --make-unbindable . Any subsequent attempt to make a duplicate of this mount fails with the following error: Example 17.4. Preventing /media from being duplicated To prevent the /media directory from being shared, use: Additional resources mount(8) man page on your system
mount --bind original-dir original-dir mount --make-private original-dir mount --bind original-dir duplicate-dir mount --bind /media /media mount --make-private /media mount --bind /media /mnt mount /dev/cdrom /media/cdrom ls /media/cdrom EFI GPL isolinux LiveOS ls /mnt/cdrom # mount /dev/sdc1 /mnt/flashdisk ls /media/flashdisk ls /mnt/flashdisk en-US publican.cfg mount --bind original-dir original-dir mount --make-shared original-dir mount --bind original-dir duplicate-dir mount --bind /media /media mount --make-shared /media mount --bind /media /mnt mount /dev/cdrom /media/cdrom ls /media/cdrom EFI GPL isolinux LiveOS ls /mnt/cdrom EFI GPL isolinux LiveOS mount /dev/sdc1 /mnt/flashdisk ls /media/flashdisk en-US publican.cfg ls /mnt/flashdisk en-US publican.cfg mount --bind original-dir original-dir mount --make-shared original-dir mount --bind original-dir duplicate-dir mount --make-slave duplicate-dir mount --bind /media /media mount --make-shared /media mount --bind /media /mnt mount --make-slave /mnt mount /dev/cdrom /media/cdrom ls /media/cdrom EFI GPL isolinux LiveOS ls /mnt/cdrom EFI GPL isolinux LiveOS mount /dev/sdc1 /mnt/flashdisk ls /media/flashdisk ls /mnt/flashdisk en-US publican.cfg mount --bind mount-point mount-point mount --make-unbindable mount-point mount --bind mount-point duplicate-dir mount: wrong fs type, bad option, bad superblock on mount-point , missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so mount --bind /media /media mount --make-unbindable /media