NFS (Network File System) es un protocolo de red que permite montar un directorio de una máquina remota en nuestra máquina y trabajar en él como si fuera un directorio local. De esta manera podemos compartir un directorio (y todo lo que cuelga de él) con las demás máquinas Linux de nuestra red local.
El protocolo NFS se implementa con arquitectura cliente-servidor, por lo que necesita:
El servidor NFS trabaja sobre RPC (Remote Procedure Call), protocolo que utiliza como capa de transporte UDP.
Para ver los servicios RPC que tenemos activos y el puerto utilizado por cada uno, haremos:
$ rpcinfo -p
obteniendo (antes de instalar NFS) algo similar a:
programa vers proto puerto 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 32768 status 100024 1 tcp 32899 status
Dentro de Debian deberemos instalar los paquetes nfs-common nfs-kernel-server portmap
apt-get install nfs-common nfs-kernel-server portmap
En SuSE SLES
nfs-kernel-server nfs-client
/home/francis 192.168.0.0/255.255.255.0(rw,sync) /home/sergio 192.168.0.2(ro,sync) 192.168.0.4(rw,sync) La opción ro es para sólo lectura y rw para lectura y escritura.
$ rpcinfo -p programa vers proto puerto 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 32768 status 100024 1 tcp 32899 status 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 udp 32786 nlockmgr 100021 3 udp 32786 nlockmgr 100021 4 udp 32786 nlockmgr 100021 1 tcp 59688 nlockmgr 100021 3 tcp 59688 nlockmgr 100021 4 tcp 59688 nlockmgr 100005 1 udp 903 mountd 100005 1 tcp 906 mountd 100005 2 udp 903 mountd 100005 2 tcp 906 mountd 100005 3 udp 903 mountd 100005 3 tcp 906 mountd
$ cat /var/lib/nfs/rmtab
192.168.0.4:/home/francis /mnt nfs rw,hard,intr 0 0
Si tenemos un error similar a este :
statd nfsdrpc.nfsd: address family inet6 not supported by protocol TCP
Deberemos comentar dentro del archivo /etc/netconfig, las líneas que hagan referencia a udp6 y tcp6.
Si tenemos por ejemplo uno o varios NFS de 4 o 5 TB con una gran carga de tráfico y un load average extremadamente alto, podemos optar por estas opciones
echo 219136 > /proc/sys/net/core/rmem_default echo 219136 > /proc/sys/net/core/rmem_max echo 219136 > /proc/sys/net/core/wmem_default echo 219136 > /proc/sys/net/core/wmem_max echo 0 > /proc/sys/net/ipv4/tcp_sack echo 0 > /proc/sys/net/ipv4/tcp_timestamps echo 20 > /proc/sys/vm/swappiness echo 200 > /proc/sys/vm/vfs_cache_pressure echo 2 > /proc/sys/vm/overcommit_memory echo 80 > /proc/sys/vm/overcommit_ratio
* Si utilizas aceleradores de banda como Riverbed SteelHead, es necesario forzar a la versión 3 de NFS ya que la versión 4 no esta soportada
nfsvers=3
Compartir archivos con otros Linux : http://www.estrellateyarde.org/discover/nfs
Configurar NFS para SuSE Linux desde Yast : http://www.eloihr.net/linux/index.php?page=nfs
NFS HOWTO: nfs.sourceforge.net/nfs-howto/