Difference between revisions of "Bind mounts"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(Note on using folders from another container)
m (Better wording to clarify that the additional script is not a replacement for the one above, but rather needs to be run first.)
 
(7 intermediate revisions by 4 users not shown)
Line 4: Line 4:
 
<source lang="bash">
 
<source lang="bash">
 
CTID=777
 
CTID=777
cat << EOF > /etc/vz/conf/${CTID}.mount
+
 
#!/bin/bash
+
echo '#!/bin/bash
 
. /etc/vz/vz.conf
 
. /etc/vz/vz.conf
 
. ${VE_CONFFILE}
 
. ${VE_CONFFILE}
 
SRC=/mnt/disk
 
SRC=/mnt/disk
 
DST=/mnt/disk
 
DST=/mnt/disk
 +
if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi
 
mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
 
mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
EOF
+
' > /etc/vz/conf/${CTID}.mount
 +
 
 
chmod +x /etc/vz/conf/${CTID}.mount
 
chmod +x /etc/vz/conf/${CTID}.mount
 
</source>
 
</source>
Line 17: Line 19:
 
If you want read-only mount, add <code>-r</code> option to mount command.
 
If you want read-only mount, add <code>-r</code> option to mount command.
  
{{Note|Do not use directory from other container as the source i.e. <nowiki>(SRC=/vz/private/101/home</nowiki>).<br> This '''will not''' work and result in the target folder contents appearing as empty from within the container.}}
+
{{Note|When specifying destination directory, always use /vz/root/ or ${VE_ROOT} env. variable <nowiki>(avoid using /vz/private)</nowiki>}}
 +
{{Note|When binding directories from one container to another, make sure you have proper boot order (See [[Man/vzctl.8|BOOTORDER]] param.)}}
 +
 
 +
 
 +
'''Instruction above will not work on OpenVZ 7 until you run the script below to enable Bind mounts:'''
 +
 
 +
<source lang="bash">
 +
cat <<'EOF' > /etc/vz/conf/vps.mount
 +
#!/bin/bash
 +
. ${VE_CONFFILE}
 +
VE_MOUNT=$(echo ${VE_CONFFILE} | sed 's/\.conf$/.mount/')
 +
[ -x ${VE_MOUNT} ] && . ${VE_MOUNT}
 +
exit 0
 +
EOF
 +
 
 +
chmod +x /etc/vz/conf/vps.mount
 +
</source>
  
 
== See also ==
 
== See also ==

Latest revision as of 13:17, 20 November 2017

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

echo '#!/bin/bash
. /etc/vz/vz.conf
. ${VE_CONFFILE}
SRC=/mnt/disk
DST=/mnt/disk
if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi
mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
' > /etc/vz/conf/${CTID}.mount

chmod +x /etc/vz/conf/${CTID}.mount

If you want read-only mount, add -r option to mount command.

Yellowpin.svg Note: When specifying destination directory, always use /vz/root/ or ${VE_ROOT} env. variable (avoid using /vz/private)
Yellowpin.svg Note: When binding directories from one container to another, make sure you have proper boot order (See BOOTORDER param.)


Instruction above will not work on OpenVZ 7 until you run the script below to enable Bind mounts:

cat <<'EOF' > /etc/vz/conf/vps.mount
#!/bin/bash
. ${VE_CONFFILE}
VE_MOUNT=$(echo ${VE_CONFFILE} | sed 's/\.conf$/.mount/')
[ -x ${VE_MOUNT} ] && . ${VE_MOUNT}
exit 0
EOF

chmod +x /etc/vz/conf/vps.mount

See also[edit]