lunes, 10 de junio de 2013

Compartir directorio con NFS

En este apartado vamos a explicar como compartir un directorio entre la Raspberry Pi y cualquier equipo de nuestra red, siempre y cuando, este último tenga como sistema operativo UNIX.

Este tutorial está relacionado con el siguiente artículo que publicaremos, llamado "Servidor de descargas".

El NFS o Network File System es un sistema de archivos virtual que permite que una máquina UNIX conectada a una red, pueda montar un sistema de archivos de otra máquina e interactuar sobre él como si fuera propio. De esta manera, se constituye un medio de compartición de archivos totalmente transparente para el usuario de la máquina cliente.

Paso 1:

Instalamos los paquetes necesarios en nuestra Raspberry Pi:
  • nfs-kernel-server
  • nfs-common
  • portmap

Nos mostrará un mensaje de error, debido a que todavía no hemos configurado NFS.


Paso 2:

Una vez instalados los programas necesarios, debemos indicarle que directorios deseamos compartir, modificando el fichero /etc/exports.


Nota:
Todas las IPs y rutas de directorios (origen y destino) que utilicemos, se deberán adaptar a la configuración de cada persona.

Agregamos la siguiente linea:

/mnt/disco/particion_1/descargas       192.168.1.132(rw,sync,secure,no_subtree_check)


La primera parte es el directorio que queremos compartir, se puede indicar el que queramos, pero en nuestro caso, es el que utilizaremos para el servidor de descargas.
En la segunda parte de la linea, le diremos al sistema con quien queremos compartir y como queremos hacerlo. Se pueden utilizar tanto una  única IP  como un rango, siendo muy conveniente trabajar con IP fijas.
Si en lugar de utilizar un rango de IP queremos añadir otra dirección, deberemos añadir otra linea.
Lo que aparece entre paréntesis sirve para indicar como lo queremos compartir.
  • rw: permite que se realicen modificaciones en el directorio exportado desde el cliente.
  • sync: la opción sync provoca que todas las escrituras a disco desde el cliente NFS estén sincronizadas con el servidor. Esto ofrece mayor seguridad ante caídas del sistema, aunque también puede reducir el rendimiento.
  • secure: esta opción hace que las peticiones de conexión tengan que provenir obligatoriamente de un puerto inferior a 1024.
  • no_subtree_chek: subtree_check es la encargada de comprobar que las carpetas compartidas pertenezcan todas a un mismo volumen, no_subtree_check no hace esa comprobación, por lo que la transferencia de la lista de archivos es mas rápida.
Paso 3:

Instalamos en la máquina cliente los siguientes paquetes:
  • nfs-common
  • portmap

Paso 4:

Creamos en la máquina de destino, el directorio donde montaremos la carpeta compartida mediante NFS.


Paso 5:

Una vez hemos realizado todos los pasos anteriores, volvemos a la Raspberry y aplicamos los cambios mediante la instrucción exportfs -a.


Paso 6:

Una vez hemos aplicado los cambios, desde el cliente montamos el directorio. El comando ejecutado consta de tres partes:
  • El comando en si, mount.
  • IP del servidor y la ruta del directorio donde se encuentran los datos de salida.
  • Carpeta de destino.
Nota: Los directorios tanto de origen como destino tienen que tener todos los permisos (777) ya que el fichero exports será el que acotará los permisos.


Paso 7:

En caso de que no pueda montar el directorio de destino, reiniciaremos los siguientes servicios:
  • rpcbind
  • nfs-kernel-server


Paso 8:

Por último, si queremos que se monte la carpeta automáticamente cada vez que iniciemos el equipo cliente, debemos añadir la siguiente linea en el fichero /etc/fstab (cliente):

192.168.1.130:/mnt/disco/particion_1/descargas /mnt/compartida nfs rw,sync,hard,intr 0 0


4 comentarios:

  1. muy bueno, a ver si lo aplico en casa con mi Raspberry y mi Ubuntu para las copias de seguridad con Back in Time

    ResponderEliminar
    Respuestas
    1. Muchas gracias. Back in Time no lo conocía. En cuanto pueda haré un tutorial para hacer copias de seguridad, pero del Raspberry.

      Eliminar
  2. cada vez que reinicio la raspberrypi, tengo que reiniciar los servicios rpcbind y nfs-kernel-server, sino, no puedo acceder al directorio por NFS, esto es normal? Alguna solucion? De momento lo tengo con un script que lo reinicia cada vez que se inicia la raspberry, pero nose si es muy ortodoxo... Muy buen tutorial por lo demas, quiza para el proximo estaria bien poner los comandos completos en texto, en lugar de imagen.

    ResponderEliminar
    Respuestas
    1. A mi también me sucedía lo mismo e investigue un poco pero no encontré la manera de solucionarlo. Siento no poder ayudarte pero ya no utilizo NFS, ahora estoy con Samba y la verdad es que funciona muy bien.
      Respecto a lo de los comandos en texto, tienes razón, ya que es bastante más cómodo para la persona que sigue el tutorial pero decidí hacerlo mostrando las fotos, ya que así la persona que lo está siguiendo puede ver que funciona realmente. Lo mejor sería combinar ambas cosas, pero la verdad es que hacer los post da más trabajo de lo que yo pensaba.

      Eliminar