2,253
edits
Changes
m
Robot: Automated text replacement (-VE +container)
== Mounting filesystems within a VE container ==
To mount filesystems inside a VEcontainer, you have several choices:
* NFS (the VE container will be an NFS Client) - see [[NFS]]
* FUSE - see [[FUSE]]
* Bind mount from Hardware Node
Recent Linux kernels support an operation called 'bind mounting' which makes part of a mounted filesystem visible at some other mount point. See 'man bind' for more information.
Bind mounts can be used to make directories on the hardware node visible to the VEcontainer.
OpenVZ uses two directories. Assuming our VE container is numbered 777, these directories are:
$VZROOT/private/777
$VZROOT/private -> /mnt/openvz
Putting VE container root directories onto a separate file system (not the hardware node root file system) is good storage management practice. It protects the Hardware Node root file system from being filled up by a VEcontainer; this could cause problems on the Hardware Node.
=== Requirement ===
'''On the HN we have a directory <code>/home</code> which we wish to make available (shared) to all containers.'''
You would think that you could bind mount this directory, as in: <code>mount --bind /home $VZROOT/private/777/home</code> but this does not work — the contents of <code>/home</code> cannot be seen within the VEcontainer.
This is where the second directory listed above (<code>$VZROOT/root/777</code>) is used. If a VE container is not started, this directory is empty. But after starting a VEcontainer, this directory contains what the VE container sees as its mounted file systems.
The correct command to issue on the HN is:
mount --bind /home $VZROOT/root/777/home
The VE container must be started and the destination directory must exist. The VE container will see this directory mounted like this:
# df