2.03.2011

Servidor NFS sobre Debian, distintos clientes.

En el post anterior sobre la instalación de un servidor web lighttpd decía que lo hice en una pc antigua que volvió a la vida jeje. Bueno otra cosa que conseguí fue un disco IDE de 80Gb en muy buenas condiciones (verifiqué su estado con herramientas como smartctl y hdparm) al cual lo primero que hice fúe vaciarlo y crear una partición ext3 del tamaño completo del disco. En primera instancia pense en ponerlo en mi equipo ya que su disco sata de 320Gb está casi lleno. Pero al ver que las portátiles de mi madre y padre no tienen respaldos actuales y que son muchos gigas de información importante, decidí darle más uso al equipo que hace de servidor web y montar otro servidor, pero esta vez un servidor NFS.

Al ser un servidor, es del tipo de servicios cliente/servidor; es decir que habrá un programa servidor que controla en este caso las ubicaciones a compartir y un programa cliente que es el que permite hacer uso de esas ubicaciones dadas por el servidor.  En mi caso, el servidor es Debian Squeeze y los clientes son dos, un Arch y un Mint (Ubuntu 8.04)

SERVIDOR
Primero instalamos los siguientes paquetes para el servidor:
aptitude install nfs-kernel-server portmap nfs-common nfswatch
Es muy probable que nfs-common y portmap ya estén instalados, el paquete nfswatch es opcional y sirve para el monitoreo por consola del tráfico del servidor NFS.

Al configurar el paquete nfs-kernel-server, si el archivo /etc/exports ha sido editado por nosotros con anterioridad, nos preguntará si queremos instalar el nuevo o mantener el actual, le decimos que mantenga el actual y terminamos la instalación.

Ahora debemos montar la partición que deseamos compartir si es que no lo tenemos montado, además es necesario que la partición esté definida en el /etc/fstab para que inicie con el sistema. Mi entrada en el fstab es la siguiente:
UUID=4759f913-3a47-4006-8738-935dcf58b904 /media/disconfs    ext3    defaults    0    2
Uso el método UUID porque es más confiable en caso de que por alguna razón el disco cambie de posición física, por ejemplo en el cable IDE, en ese caso el sistema ya no lo tendrá como sdb1 sino como sdc1 y tendremos problemas, pero el UUID nunca cambia :) Podemos revisar el manual de fstab (man fstab) para conocer las opciones que lleva defaults y todas las demás. Bien, ahora que sabemos la ruta de montaje de la partición, editamos el archivo /etc/exports y añadimos (siguiendo mi ruta anterior):
/media/disconfs 192.168.1.0/24(rw,sync,no_root_squash)
Con esto le decimos que exporte la ruta /media/disconfs a todo el rango dentro de 192.168.1 (.0/24) con las opciones de lectura/escritura (rw), que mantenga sincronizadas las tranferencias (sync) y que mantenga los permisos de root en caso de que haya tranferencias con este usuario (no_root_squash).

El último paso será especificar el dominio (host o ip) en el archivo /etc/idmapd.conf:
Domain = 192.168.1.108
Con esto está listo el servidor, solo debemos reiniciarlo para que tome los cambios:
/etc/init.d/nfs-kernel-server restart
CLIENTES
Primero voy a configurar el cliente que tiene Arch.

Se instala el paquete nfs-utils:
pacman -S nfs-utils
Se edita el archivo /etc/idmapd.conf y se especifica el mismo Domain que pusimos en el servidor:
Domain = 192.168.1.108
Se inician los servicios necesarios (se iniciarán solos en el próximo inicio del sistema)
/etc/rc.d/rpcbind start
/etc/rc.d/nfs-common start
Ahora montamos manualmente la partición para comprobar que el montaje funciona correctamente:
mount -t nfs 192.168.1.108:/media/disconfs /mnt/
Copiamos o movemos algo a la partición recién montada para comprobar que la transferencia tampoco tiene problemas:
cp /home/usuario/archivo /mnt/ && ls /mnt/
Si el archivo está ahí quiere decir que nuestro punto de montaje funciona, si queremos que la partición esté disponible cada vez que iniciamos el sistema debemos añadir la siguiente línea en el archivo /etc/fstab:
192.168.1.108:/media/disconfs /media/disconfs nfs rw,hard,intr 0 1
Se puede investigar sobre las opciones correspondientes a nfs de fstab y optimizar la tranferencia de los ficheros como rsize y wsize pero eso lo dejaremos para una próxima oportunidad.

En el caso de un cliente Debian, el procedimiento es prácticamente el mismo con la diferencia que no se usa el paquete nfs-utils, sino el paquete nfs-common. Así que se inicia el servicio ( /etc/init.d/nfs-common start) y se monta la partición remota o directamente se la añade al fstab.

Ya tenemos un servidor de archivos!!
Espero como siemrpe haya sido de utilidad.

Saludos.