Compartir archivos mediante NFS (Network File System)

Hola amigos. Esta entrada la he puesto porque buscando por NFS en el wiki no encontró nada. Así que vamos a enriquecer un poco más este espacio.

NFS es el sistema de ficheros de linux en red. Es decir, montar una unidad en un PC desde otro PC, ambos con linux (para compartir ficheros multiplataforma, o impresoras, hay que utilizar protocolo SMB (samba)).

Para empezar tenemos que tener claro que los dos ordenadores con linux se ven entre sí. Podemos comprobarlo con ping. Imaginemos que el ordenador en el que vamos a montar el servidor (PC desde donde se van a compartir directorios) tiene la ip 192.168.0.2 y el cliente es 192.168.0.3, con teclear desde la terminal del cliente ping 192.168.0.2 y comprobaremos si ve el servidor. Lo recomendable es que el servidor tenga una IP estática (fija, es decir, siempre la misma ) para que a la hora de montar automáticamente una unidad no haya problemas.

Para empezar, en el servidor hay que instalar los paquetes nfs-kernel-server y portmap

# apt-get install nfs-kernel-server portmap

En el cliente hay que instalar nfs-common

# apt-get install nfs-common

Una vez hecho esto, en el servidor exportamos los directorios que queramos. Para ello hay que editar como root el fichero /etc/exports y poner en cada línea el directorio exportado, la ip o rango a donde queremos compartir y las propiedades para ese directorio. Un ejemplo sería compartir el directorio /home/usuario/Pelis a 192.168.0.3 con propiedades lectura/escritura y visualización de directorios. Podíamos verlo así:

/home/usuario/Pelis    192.168.0.3/255.255.255.0(rw,sync,subtree_check)
/home/usuario/Musica   192.168.0/255.255.255.0(ro,async)

Así exportaríamos dos directorios, uno al PC 192.168.0.3 con lectura, escritura, sincronización y visualización de subdirectorios. El directorio música a todo el rango de 192.168.0 (2,3,4,etc) con sólo lectura y sin sincronización. En este apartado también son importantes los permisos de los propios directorios. Cabe destacar que 255.255.255.0 es la máscara de red. En caso de tener subredes es importantísimo.

Luego reiniciamos el demonio (daemon o servicio) de nfs para aplicar los cambios.

# /etc/init.d/nfs-kernel-server restart

Ahora toca el turno al cliente. Primero hay que comprobar que se visualiza la exportación:

# showmount -e 192.168.0.2

Aparecería algo así:

Export list for 192.168.0.2:
/home/usuario/Pelis           192.168.0.3/255.255.255.0
/home/usuario/Musica          192.168.0/255.255.255.0

Luego creamos los directorios donde montar estas unidades:

$ mkdir /home/cliente/Pelis-Servidor
$ mkdir /home/cliente/Musica-Servidor

Y montamos:

# mount -t nfs 192.168.0.2:/home/usuario/Pelis /home/cliente/Pelis-Servidor
# mount -t nfs 192.168.0.2:/home/usuario/Musica /home/cliente/Musica-Servidor

Ya está!

Si accedemos a estos directorios, veremos el contenido del directorio en el servidor.

Ahora podemos hacer que se monten siempre estas unidades al inicio de la sesión en el cliente. Sólo hay que editar el fichero /etc/fstab (sudo nano /etc/fstab) y añadir las líneas:

192.168.0.2:/home/usuario/Pelis          /home/cliente/Pelis-Servidor   nfs   defaults 0 0
192.168.0.2:/home/usuario/Musica         /home/cliente/Musica-Servidor   nfs   defaults 0 0

Guardamos (con nano CTRL + O ) y salimos (CTRL + X)

Cuando reiniciemos, si el PC servidor está encendido, se montarán las unidades automáticamente.

Espero que les haya sido útil y aprovecho para enviar un saludo a todos los usuarios de gnu/linux!