NFS
This page describes how to use NFS client inside a container.
Note: see NFS server inside container for info about nfsd.
Mounting filesystems from the hardware node can be performed more elegantly using Bind mounts. |
Contents
Preparations
Prerequisites
You will need the following software:
- vzctl version 3.0.13 or higher (do
vzctl --version
) - kernel version 2.6.18-028test006 or higher (2.6.18-028stab* will do), or any recent RHEL5-based or 2.6.20-based kernel.
Note: In all the kernels earlier than 028stab038, kernel NFS support can be given to a container by setting:
sunrpc.ve_allow_rpc = 1 fs.nfs.ve_allow_nfs = 1 kernel.ve_allow_kthreads = 1
This can be done by adding the above lines into /etc/sysctl.conf on the hardware node, and then running sysctl -p
.
Prepare the HN
For NFS mounts to work in the containers with the RHEL5-based kernels you must enable kernel threads in the container by setting kernel.ve_allow_kthreads=1
in /etc/sysctl.conf
.
# modprobe nfs
You will probably want the nfs module to load automatically on reboots. One way to do this is to put the modprobe command in your /etc/rc.d/rc.local file:
modprobe nfs
Alternatively, you can add a new line with nfs
to your /etc/modules or /etc/modules.conf file.
Prepare the container
To allow a container to use NFS filesystem, you will need to start it with "nfs" feature enabled. If the container is running while you set the --features nfs:on
, you will need to reboot it.
# vzctl set 101 --features "nfs:on" --save # vzctl start 101
After this you may see nfs in /proc/filesystems
# vzctl exec 101 cat /proc/filesystems ext3 ext2 nodev rpc_pipefs nodev proc nodev nfs nodev sysfs nodev tmpfs nodev devpts
Mounting NFS
Make sure that packages nfs-utils
and nfs-utils-lib
or similar are installed in a container. Also make sure that the portmap
(or rpcbind
) service is started, otherwise the mount with default options will fail and require the -nolock
option.[1]
Assuming that you already have NFS server set up at 192.168.0.1:/nfs_pub
, mounting will be simple
# vzctl enter 100 # mkdir /nfs # mount -t nfs 192.168.0.1:/nfs_pub /nfs # cat /proc/mounts simfs / simfs rw 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 devpts /dev/pts devpts rw 0 0 nfs /nfs nfs rw,vers=3,rsize=32768,wsize=32768,hard,proto=tcp,timeo=600,retrans=2,sec=sys,addr=192.168.0.1 0 0
For more details on how to setup NFS mount, see NFS-client HOWTO
Known issues
- There are quite a few parameters in NFS, so sometimes it doesn't work due to misconfiguration. We've created a separate page describing such situations: NFS doesn't work.
- Package nfs-common can not be installed. Make sure you start
portmap
before trying to install nfs-common.
See also
/etc/default/nfs-common
configuration file.