Difference between revisions of "NFS"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(Known issues)
(simplification)
Line 1: Line 1:
This page describes how to mount NFS partition inside a container.
+
This page describes how to use '''NFS client''' inside a container.
  
== NFS server ==
+
'''See [[NFS server inside container]] for info about nfsd'''.
Currently OpenVZ kernel doesn't include kernel NFS server support. However you are still able to use user space [[NFS server inside container]].
 
If your OpenVZ-patched kernel has NFS kernel support compiled in (this is the case with Debian's 2.6.26 kernel, for example), you can export filesystems on the HN by usual means, just keep in mind that exporting a container's `root` will most probably not work (it can hang at mount attempt and produce symptoms as described below) - export `private` instead.
 
  
== NFS client ==
+
== Preparations ==
=== Preparations ===
+
=== Prerequisites ===
==== Prerequisites ====
 
 
You will need the following software:
 
You will need the following software:
  
Line 21: Line 18:
 
This can be done by adding the above lines into /etc/sysctl.conf on the hardware node, and then running <code>sysctl -p</code>.
 
This can be done by adding the above lines into /etc/sysctl.conf on the hardware node, and then running <code>sysctl -p</code>.
  
===== Debian Notes =====
+
=== Prepare the HN ===
 
 
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 <code>kernel.ve_allow_kthreads=1</code> in <code>/etc/sysctl.conf</code>.
 
For NFS mounts to work in the containers with the RHEL5-based kernels you must enable kernel threads in the container by setting <code>kernel.ve_allow_kthreads=1</code> in <code>/etc/sysctl.conf</code>.
Line 35: Line 28:
 
   modprobe nfs
 
   modprobe nfs
  
==== Prepare the container ====
+
=== 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 <code>--features nfs:on</code>, you will need to reboot it.
 
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 <code>--features nfs:on</code>, you will need to reboot it.
  
Line 54: Line 47:
 
</pre>
 
</pre>
  
=== Mounting NFS ===
+
== Mounting NFS ==
 
Make sure that packages <code>nfs-utils</code> and <code>nfs-utils-lib</code> or similar are installed in a container.
 
Make sure that packages <code>nfs-utils</code> and <code>nfs-utils-lib</code> or similar are installed in a container.
  
Line 72: Line 65:
 
For more details on how to setup NFS mount, see [http://nfs.sourceforge.net/nfs-howto/ar01s04.html NFS-client HOWTO]
 
For more details on how to setup NFS mount, see [http://nfs.sourceforge.net/nfs-howto/ar01s04.html NFS-client HOWTO]
  
=== Known issues ===
+
== Known issues ==
 
* There are quite a few parameters in NFS, so sometimes it doesn't work due to misconfiguration. We've created a separate
 
* 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]].
 
page describing such situations: [[NFS doesn't work]].
* Suspend and migrate operations fail if the VE has NFS partitions mounted [http://bugzilla.openvz.org/show_bug.cgi?id=616]. (In the bug report they say: "Fixed in 028stab072". So maybe this isn't an issue anymore?)
+
* Package nfs-common can not be installed. Make sure you start </code>portmap</code> before trying to install nfs-common.
 
 
== 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
 
 
 
<pre>
 
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)
 
</pre>
 
 
 
The cause of this problem is that portmap is not running. Portmap must be running before installing nfs-common.  On CentOS 5 (and possible other versions) both the netfs and portmap startup scripts need to be running.
 
 
 
Just run portmap:
 
 
 
# /etc/init.d/portmap start
 
 
 
Then, install nfs-common:
 
 
 
# apt-get install nfs-common
 
  
 
== See also ==
 
== See also ==
 
* [http://nfs.sourceforge.net/nfs-howto/ar01s04.html NFS-client HOWTO]
 
* [http://nfs.sourceforge.net/nfs-howto/ar01s04.html NFS-client HOWTO]
 +
 
[[Category: HOWTO]]
 
[[Category: HOWTO]]

Revision as of 14:47, 4 May 2011

This page describes how to use NFS client inside a container.

See NFS server inside container for info about nfsd.

Preparations

Prerequisites

You will need the following software:

  1. vzctl version 3.0.13 or higher (do vzctl --version)
  2. 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

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.

  • Package nfs-common can not be installed. Make sure you start portmap before trying to install nfs-common.

See also