Compartir archivos entre equipos Linux en red local con NFS en Raspberry

De entre los diferentes servicios que podemos instalar, quería empezar por NFS en Raspberry, porque es uno de los grandes desconocidos entre los que provenimos de otros sistemas operativos. Mas que nada, porque en esos otros sistemas operativos no existe.

En mi caso particular, vengo utilizando NFS desde años en detrimento de Samba, por el simple hecho de que en mi red local todos los equipos que tengo conectados son Linux. Y todo en base a mi experiencia personal, con independencia de los datos que mostraré mas adelante. Al menos en mi caso, las velocidades de transmisión, con independencia de los archivos a intercambiar, son sensiblemente mas elevadas cuando lo hago por NFS que cuando lo hago por SMB/CIFS.

Ahora bien, si en tu red, también tienes equipos con otros sistemas operativos, que no pueden aprovechar las bondades de NFS, tendrás que esperar al próximo artículo para ver como instalar SMB/CIFS en tu Raspberry Pi.

NFS en Raspberry

NFS vs SMB/CIFS

Adjunto te dejo los resultados de un test realizado en el que se muestran las velocidades

 NFS EscrituraSamba EscrituraNFS LecturaSMB Lectura
10 KiB (6998 files) 37s 101s 26s 58s
1 MiB (240 files) 23s 27s 24s 28s
500 MiB (1 file) 45s 45s 45s 48s
3,5 GiB (1 file) 323s 324s 330s 347s

Instalar y configurar un servidor NFS en Raspberry Pi

Evidentemente, lo primero es acceder a nuestra Raspberry Pi a través de ssh. Recordar que yo he optado a una instalación mínima, sin entorno gráfico. En mi caso, la orden sería la siguiente,

ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Instalar dependencias

Una vez ya estamos en su lado ejecutaremos la siguiente orden para instalar los componentes necesarios,

sudo apt install nfs-common nfs-server -y

Algunas modificaciones para NFS en Raspberry Pi 3

Antes de continuar con la configuración normal de NFS en Raspberry Pi, es necesario realizar unas modificaciones en el archivo /etc/netconfig. Hasta que no hice esta modificación, me resultó imposible utilizar NFS. Esto me resulta extraño, pues lo cierto es que he encontrado pocos sistios donde se muestre esta información. Como te indico es fundamental modificar el archivo /etc/netconfig.

Lo que hay que hacer es comentar las dos siguientes líneas,

udp6 tpi_clts v inet6 udp - -
tcp6 tpi_cots_ord v inet6 tcp - -

Así, en mi caso, el archivo /etc/netconfig, una vez realizadas las modificaciones, tiene el siguiente aspecto,

udp        tpi_clts      v     inet     udp     -       -
tcp        tpi_cots_ord  v     inet     tcp     -       -
#udp6       tpi_clts      v     inet6    udp     -       -
#tcp6       tpi_cots_ord  v     inet6    tcp     -       -
rawip      tpi_raw       -     inet      -      -       -
local      tpi_cots_ord  -     loopback  -      -       -
unix       tpi_cots_ord  -     loopback  -      -       -

Crear un directorio que compartir con NFS en Raspberry

Vamos a crear el directorio que queremos compartir, darle propiedad y asignarle los permisos necesarios. En mi caso yo lo he creado en /srv/nfs4/share/. Lo guardo en /srv, porque este directorio, tradicionalmente, es el que debe contener los datos de los servicios proporcionados por el sistema. Así ejecutaremos la siguiente orden,

sudo mkdir -P /srv/nfs4/share/

Ahora le vamos a cambiar el propietario, y le vamos a asignar permisos,

sudo chown pi:pi /srv/nfs4/share/
sudo chmod  755 /srv/nfs4/share/

Configurando permisos

Ahora tenemos que configurar el archivo /etc/exports que es donde se establecen los directorios que se comparten y los permisos.

El formato para este fichero es:

directorio IP(permisos)

donde,

  • directorio es el directorio que queremos compartir
  • IP es la dirección IP o rango de direcciones a las que queremos dar permiso para que accedan. Así por ejemplo,
  • /srv/nfs4/share 192.168.1.110 solo da permiso a la IP 192.168.1.110. Es decir, solo podremos acceder desde esta dirección.
  • /srv/nfs4/share 192.168.1.0/24 daría acceso a todos las IP comprendidas entre la 192.168.1.1 y la 192.168.1.254
  • /srv/nfs4/share 192.168.1.0/30 daría acceso a las IP 192.168.1.1 y la 192.168.1.2
  • /srv/nfs4/share * permitiría cualquier acceso con independencia de la IP.
  • (permisos) define las características del acceso al directorio. Así, tenemos, que
  • ro lo define como de solo lectura, mientras que rw lo define como de lectura y escritura, es decir, se pueden hacer modificaciones desde el cliente.
  • sync hace que cada las escrituras estén sincronizadas entre cliente y servidor. Evidentemente esto es mas seguro ante una posible caída del sistema, pero puede reducir el rendimiento.
  • secure obliga a que las peticiones de conexión vengan a través de un puerto inferior a 1024.
  • subtree_checkobliga a que todos los directorios correspondan a un mismo volumen, mientras que no_subtree_checkobvia esta comprobación consiguiendo que la transferencia de archivos sea mas rápida.
  • all_squashmapea todos los uids y gids al usuario anómimo.
  • root_squash mapea las peticiones de uid/gid 0 al usuario anómimo.

En mi caso particular, el archivo /etc/exports tiene acualmente el siguiente aspecto

/srv/nfs4/share 192.168.1.0/24(rw,async,no_subtree_check)

Una vez realizados todos los cambios comentados, nos queda actualizar y reiniciar el servicio,

sudo exportfs -ra
sudo update-rc.d rpcbind enable && sudo update-rc.d nfs-common enable
sudo service rpcbind restart
sudo service nfs-kernel-server restart

Con esto ya tenemos nuestro servicio NFS activo. Con la Raspberry Pi, hemos terminado. Ahora debemos configurar todos aquellos dispositivos que quieran acceder a la Raspberry Pi a través de NFS. PAra ello tan solo tienes que seguir las indicaciones del artículo “Como compartir directorios en red local con NFS en Ubuntu”.

Más información:

 

Fuente: atareao

¿Quién está en línea?

Hay 30095 invitados y ningún miembro en línea