NFS
From OpenVZ Wiki
This page describes how to mount NFS partition inside a container.
Contents |
[edit] 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.
[edit] NFS client
[edit] Preparations
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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
[edit] 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
[edit] 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.
- Suspend and migrate operations fail if the VE has NFS partitions mounted [1]
[edit] 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) when I try to install nfs-common
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)
The cause of this problem is that portmap is not running. Portmat must be running before installing nfs-common.
Just run portmap:
# /etc/init.d/portmap start
Then, install nfs-common:
# apt-get install nfs-common
