NFS
This page describes how to mount NFS partition inside a container.
Contents
NFS server
Currently OpenVZ kernel doesn't include kernel NFS server support. However you are still able to use user space NFS server inside container.
NFS client
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
.
Debian Notes
Debian Etch still uses vzctl version 3.0.11 and so NFS client support is not yet available. Lenny presently has version 3.0.18.
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
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.
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.
ISSUE: can't install nfs-common on ubuntu VE
Host machine is ubuntu server 8.0.4 , VE container is ubuntu from openvz template repo.
Despite following all of the above directives, I am unable to get nfs-common to install on the VE (installs fine on the host machine).
HEre is output (from inside VE)
root@clinton:/# apt-get install nfs-common Reading package lists... Done Building dependency tree Reading state information... Done nfs-common is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded. 1 not fully installed or removed. After this operation, 0B of additional disk space will be used. Setting up nfs-common (1:1.1.2-2ubuntu2.2) ... * Starting NFS common utilities [fail] invoke-rc.d: initscript nfs-common, action "start" failed. dpkg: error processing nfs-common (--configure): subprocess post-installation script returned error exit status 1 Errors were encountered while processing: nfs-common E: Sub-process /usr/bin/dpkg returned an error code (1)
This is as yet unresolved.