|
|
| Line 1: |
Line 1: |
| | Bind mounts can be used to make directories on the hardware node visible to the container. | | Bind mounts can be used to make directories on the hardware node visible to the container. |
| | | | |
| − | == Filesystem layout ==
| + | This is how you can make host system's <code>/mnt/disk</code> directory available to a container 777: |
| − | OpenVZ uses two directories. Assuming our container is numbered 777, these directories are:
| |
| − | | |
| − | * <code>VE_PRIVATE</code>: $VZDIR/private/777
| |
| − | * <code>VE_ROOT</code>: $VZDIR/root/777
| |
| − | | |
| − | {{Note|<code>$VZDIR</code> is usually <code>/vz</code>, on Debian systems however this is <code>/var/lib/vz</code>. In this document this is further referred to as <code>$VZDIR</code> -- substitute it with what you have.}}
| |
| − | | |
| − | <code>VE_PRIVATE</code> is a place for all the container files. <code>VE_ROOT</code> is the mount point to which <code>VE_PRIVATE</code> is mounted during container start (or when you run <code>vzctl mount</code> | |
| − | | |
| − | {{Warning|If you want to do a bind mount for container, you need to '''use <code>VE_ROOT</code>''' (not <code>VE_PRIVATE</code>!) and '''make sure that container is mounted''' (this can be checked using <code>vzctl status</code>).}}
| |
| − | | |
| − | == Mounting ==
| |
| − | | |
| − | Put a script in OpenVZ configuration directory (<code>/etc/vz/conf/</code>) with the name <code>''CTID''.mount</code> (where <code>''CTID''</code> is container ID, like 777). This script will be executed every time you run <code>vzctl mount</code> or <code>vzctl start</code> for a particular container. If you need to the same for all containers, use the global mount script named <code>vps.mount</code>.
| |
| − | | |
| − | From any mount script you can use the following environment variables:
| |
| − | * <code>${VEID}</code> -- container ID (like <code>777</code>).
| |
| − | * <code>${VE_CONFFILE}</code> -- container configuration file (like <code>/etc/vz/conf/777.conf</code>)
| |
| − | | |
| − | Now, in order to get the value of <code>VE_ROOT</code> you need to source both the global OpenVZ configuration file, and then the container configuration file, in that particular order. This is the same way vzctl uses to determine <code>VE_ROOT</code>.
| |
| − | | |
| − | === Mount script example ===
| |
| − | | |
| − | Here is an example of such a mount script (it can either be <code>/etc/vz/conf/vps.mount</code> or <code>/etc/vz/conf/''CTID''.mount</code>)
| |
| | <source lang="bash"> | | <source lang="bash"> |
| | CTID=777 | | CTID=777 |
| Line 35: |
Line 11: |
| | EOF | | EOF |
| | chmod +x /etc/vz/conf/${CTID}.mount | | chmod +x /etc/vz/conf/${CTID}.mount |
| | + | </source> |
| | + | |
| | + | If you want read-only mount, add <code>-r</code> option to mount command. |
| | | | |
| | == See also == | | == See also == |
Bind mounts can be used to make directories on the hardware node visible to the container.
This is how you can make host system's /mnt/disk directory available to a container 777:
CTID=777
cat << EOF > /etc/vz/conf/${CTID}.mount
#!/bin/bash
source /etc/vz/vz.conf
source ${VE_CONFFILE}
mount -n -t simfs /mnt/disk ${VE_ROOT}/mnt/disk -o /mnt/disk
EOF
chmod +x /etc/vz/conf/${CTID}.mount
If you want read-only mount, add -r option to mount command.
See also