Difference between revisions of "NFS server inside container"
m (→User-space NFS server) |
(grammar, formatting fixes and improvements, added link to Kernel build) |
||
Line 7: | Line 7: | ||
Binary RPMs that are provided by OpenVZ community contain kernels compiled | Binary RPMs that are provided by OpenVZ community contain kernels compiled | ||
without NFS server support. Thus you have to | without NFS server support. Thus you have to | ||
− | recompile the kernel with CONFIG_NFSD=m. After booting in this kernel you'll be able | + | [[Kernel build|recompile the kernel]] with <code>CONFIG_NFSD=m</code>. After booting in this kernel you'll be able |
to use NFS server on [[HN]]. | to use NFS server on [[HN]]. | ||
In-kernel NFS server runs kernel threads to service requests of clients. | In-kernel NFS server runs kernel threads to service requests of clients. | ||
− | But for security reasons kernel threads are prohibited in [[VE]]! So you won't | + | But for security reasons kernel threads are prohibited in [[VE]]s! So you won't |
be able to run NFS server inside [[VE]] without patching the kernel. | be able to run NFS server inside [[VE]] without patching the kernel. | ||
== User-space NFS server == | == User-space NFS server == | ||
Advantage of user-space NFS server is that it can be ran without any support in the kernel. | Advantage of user-space NFS server is that it can be ran without any support in the kernel. | ||
− | Also if it crashes | + | Also if it crashes — there is no crash of a system: just one process crashes, not kernel! |
− | The disadvantage of user-space NFS server is its | + | The disadvantage of user-space NFS server is its productivity: no one can be faster then in-kernel implementation. |
One well-known implementation of NFS server is "The LINUX User-Space NFS Server" by Olaf Kirch. | One well-known implementation of NFS server is "The LINUX User-Space NFS Server" by Olaf Kirch. | ||
− | Some Linux distributions contain this package: Debian Sarge (nfs-user-server), | + | Some Linux distributions contain this package: Debian Sarge (<code>nfs-user-server</code>), OpenSUSE 10.0 (<code>nfs-server</code>). |
For other distributions you can download sources (for example from Debian repository) and compile it. | For other distributions you can download sources (for example from Debian repository) and compile it. | ||
− | There is a small trick you have to know about runing mountd and nfsd (these two daemons and portmap constitute | + | There is a small trick you have to know about runing <code>mountd</code> and <code>nfsd</code> (these two daemons and <code>portmap</code> constitute a user-space server). You should run them with <code>-r</code> option: |
− | user-space server). You should run them with -r option: | ||
<pre> | <pre> | ||
# portmap | # portmap | ||
Line 31: | Line 30: | ||
If major equals 0 then daemons suppose that it is NFS and don't want to re-export it. Symptoms are | If major equals 0 then daemons suppose that it is NFS and don't want to re-export it. Symptoms are | ||
that clients will always get a "permission denied" error. Simfs (the file system on what VE is located) | that clients will always get a "permission denied" error. Simfs (the file system on what VE is located) | ||
− | is assosiated with so called unnamed device, which major equals 0. | + | is assosiated with so called unnamed device, which major equals 0. So, to prevent daemons from checking for |
− | re-exporting | + | re-exporting — just use this <code>-r</code> option. |
− | + | “The LINUX User-Space NFS Server” by Olaf Kirch implements NFSv2. It means that only files with sizes less | |
− | than 2GB are | + | than 2GB are processed. If you intend to use such big files then you should use another user-space NFS server |
− | implementation: | + | implementation: [http://unfs3.sourceforge.net/ unfs3]. It implements v3 of NFS protocol standard. |
[[Category: HOWTO]] | [[Category: HOWTO]] | ||
[[Category: Networking]] | [[Category: Networking]] |
Revision as of 10:52, 24 August 2006
There are two ways to setup NFS server on common HN: use a user-space NFS server daemon or use an in-kernel implementation of NFS server. Some peculiarities appear if you intend to run NFS server in VE.
Kernel NFS server
Binary RPMs that are provided by OpenVZ community contain kernels compiled
without NFS server support. Thus you have to
recompile the kernel with CONFIG_NFSD=m
. After booting in this kernel you'll be able
to use NFS server on HN.
In-kernel NFS server runs kernel threads to service requests of clients.
But for security reasons kernel threads are prohibited in VEs! So you won't
be able to run NFS server inside VE without patching the kernel.
User-space NFS server
Advantage of user-space NFS server is that it can be ran without any support in the kernel. Also if it crashes — there is no crash of a system: just one process crashes, not kernel! The disadvantage of user-space NFS server is its productivity: no one can be faster then in-kernel implementation.
One well-known implementation of NFS server is "The LINUX User-Space NFS Server" by Olaf Kirch.
Some Linux distributions contain this package: Debian Sarge (nfs-user-server
), OpenSUSE 10.0 (nfs-server
).
For other distributions you can download sources (for example from Debian repository) and compile it.
There is a small trick you have to know about runing mountd
and nfsd
(these two daemons and portmap
constitute a user-space server). You should run them with -r
option:
# portmap # rpc.mountd -r # rpc.nfsd -r
The reason is that these daemons check major number of device where the directory to export resides.
If major equals 0 then daemons suppose that it is NFS and don't want to re-export it. Symptoms are
that clients will always get a "permission denied" error. Simfs (the file system on what VE is located)
is assosiated with so called unnamed device, which major equals 0. So, to prevent daemons from checking for
re-exporting — just use this -r
option.
“The LINUX User-Space NFS Server” by Olaf Kirch implements NFSv2. It means that only files with sizes less than 2GB are processed. If you intend to use such big files then you should use another user-space NFS server implementation: unfs3. It implements v3 of NFS protocol standard.