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 Escritura | Samba Escritura | NFS Lectura | SMB 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 IP192.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 la192.168.1.1
y la192.168.1.254
-
/srv/nfs4/share 192.168.1.0/30
daría acceso a las IP192.168.1.1
y la192.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 querw
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_check
obliga a que todos los directorios correspondan a un mismo volumen, mientras queno_subtree_check
obvia esta comprobación consiguiendo que la transferencia de archivos sea mas rápida. -
all_squash
mapea todos losuids
ygids
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:
- Zsiti
- Experimentando con Raspberry Pi
- HTPC Guides
- Instructable
- ferhatakgun.com
- How-To Geek
- Unix Permissions Calculator
- IP Calculator
Fuente: atareao