Ubuntu 20.04 es compatible con NFS versión 3 (NFSv3) y 4 (NFSv4). La versión predeterminada de NFS es 4.2, que incluye compatibilidad con listas de control de acceso (ACL), copia del lado del servidor, archivos dispersos, reserva de espacio, NFS etiquetado, mejoras de diseño y mucho más.
En esta guía, aprenderemos a instalar y configurar el servidor NFS y el cliente NFS en Ubuntu 20.04.
Publicaciones relacionadas:
- Cómo configurar el servidor y el cliente NFS en Rocky/Alma Linux 8
- Cómo instalar y configurar el uso compartido de archivos Samba en Ubuntu 20.04
Requisitos
- Servidor Ubuntu 20.04 actualizado para ser utilizado como servidor y otro para el cliente
- Conectividad desde los servidores
- Acceso a Sudo desde los servidores
Tabla de contenido
- Asegúrese de que el servidor esté actualizado
- Instalar los paquetes NFS
- Inicio y activación del servidor NFS
- Habilitación del servicio NFS en Firewall
- Configuración de exportaciones en el servidor NFS
- Configuración de sistemas cliente NFS
1. Asegurarse de que el servidor esté actualizado
Antes de continuar, asegurémonos de que el servidor esté actualizado. Use este comando para lograr esto:
sudo apt update
sudo apt upgrade -y
2. Instale los paquetes NFS
El paquete nfs-kernel-server
proporciona servicios NFS para Ubuntu. El paquete del servidor NFS proporciona soporte de espacio de usuario necesario para ejecutar el servidor kernel NFS. Para instalar el paquete, ejecute:
sudo apt install -y nfs-kernel-server
En Ubuntu 20.04, la versión 2 de NFS está deshabilitada. Las versiones 3 y 4 están habilitadas. Verifique la versión instalada usando este comando:
$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
3. Iniciar y habilitar el servidor NFS
Una vez que los paquetes NFS se hayan instalado correctamente, se iniciará el servidor NFS. Confirme el estado del servicio con este comando:
$ sudo systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2022-01-17 19:24:54 UTC; 1min 40s ago
Main PID: 20614 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4624)
Memory: 0B
CGroup: /system.slice/nfs-server.service
Jan 17 19:24:52 dev-ubuntusrv.inv.re systemd[1]: Starting NFS server and services...
Jan 17 19:24:54 dev-ubuntusrv.inv.re systemd[1]: Finished NFS server and services.
El resultado anterior muestra que el servicio se inició correctamente. Para permitir que el servicio se inicie en el arranque del sistema, use este comando:
sudo systemctl enable nfs-server
Tenga en cuenta que los demás servicios necesarios para ejecutar un servidor NFS o montar recursos compartidos NFS, como nfsd
, nfs-idmapd
, rpcbind
, rpc.mountd
, lockd
, rpc.statd
, rpc.rquotad
y rpc.idmapd
se iniciará automáticamente.
4. Habilitación del servicio NFS en Firewall
Si está instalando el servidor NFS en un servidor Ubuntu remoto que está protegido por un cortafuegos, deberá habilitar el tráfico en el puerto NFS:
sudo ufw allow nfs
Verifica el cambio:
sudo ufw status
5. Configuración de exportaciones en el servidor NFS
La configuración del servidor NFS se define en /etc/default/nfs-kernel-server
y /etc/default/nfs-common
archivos La configuración predeterminada es suficiente para la mayoría de las situaciones.
Vamos a crear sistemas de archivos para exportar o compartir en el servidor NFS. Crearemos dos sistemas de archivos para mirar, /mnt/nfs_shares/files
para archivos compartidos y /mnt/nfs_shares/backup
para copias de seguridad.
Vamos a crear los directorios en el servidor
sudo mkdir -p /mnt/nfs_shares/files
sudo mkdir -p /mnt/nfs_shares/backup
Confirmar
$ sudo ls /mnt/nfs_shares
backup files
Luego agregue los sistemas de archivos anteriores en el archivo de exportaciones /etc/exports
en el servidor NFS para determinar los sistemas de archivos locales que se exportan a los clientes NFS.
Abra el archivo de exportación con su editor de texto
sudo vim /etc/exports
Luego agrega este contenido:
/mnt/nfs_shares/files 10.70.5.170(rw,sync)
/mnt/nfs_shares/backup 10.70.5.0/24(rw,sync,no_all_squash,root_squash)
Estas son las opciones de exportación que se pueden utilizar:
- rw – permite el acceso de lectura y escritura en el sistema de archivos.
- sincronizar – le dice al servidor NFS que escriba operaciones (escribir información en el disco) cuando se le solicite (se aplica de forma predeterminada).
- all_squash – asigna todos los UID y GID de las solicitudes del cliente al usuario anónimo.
- no_all_squash:se utiliza para asignar todos los UID y GID de las solicitudes de los clientes a UID y GID idénticos en el servidor NFS.
- raíz_calabaza – asigna solicitudes del usuario raíz o UID/GID 0 del cliente al UID/GID anónimo.
Una vez que los sistemas de archivos están definidos en el archivo de exportaciones, debemos ejecutar exportfs
comando para que sean exportados. El exportfs se puede ejecutar con -a
bandera que significa exportar o anular la exportación de todos los directorios, -r
lo que significa volver a exportar todos los directorios, sincronizando /var/lib/nfs/etab con /etc/exportaciones y archivos en /etc/exports.d y -v habilita la salida detallada.
sudo exportfs -arv
Esta es la salida en mi servidor
$ sudo exportfs -arv
exporting 10.70.5.170:/mnt/nfs_shares/files
exporting 10.70.5.0/24:/mnt/nfs_shares/backup
Para mostrar la lista de exportación actual, ejecute el siguiente comando. Tenga en cuenta que la tabla exportfs también aplica algunas opciones predeterminadas que no están definidas explícitamente:
$ sudo exportfs -s
/mnt/nfs_shares/files 10.70.5.170(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/mnt/nfs_shares/backup 10.70.5.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
6. Configuración de sistemas cliente NFS
Ahora que hemos configurado las exportaciones en el servidor, podemos acceder a ellas desde el sistema cliente. Inicie sesión en el sistema cliente e instale los paquetes necesarios para permitir el acceso a los recursos compartidos de NFS.
En sistemas basados en RHEL:
sudo dnf install -y nfs-utils nfs4-acl-tools
En distribuciones basadas en Debian/Ubuntu:
sudo apt install nfs-common nfs4-acl-tools
Luego podemos ejecutar el comando showmount para mostrar la información de montaje para el servidor NFS. El comando genera sistemas de archivos exportados en el servidor
showmount -e 10.70.5.221
Salida
$ showmount -e 10.70.5.221
Export list for 10.70.5.221:
/mnt/nfs_shares/backup 10.70.5.0/24
/mnt/nfs_shares/files 10.70.5.170
Cree un directorio de sistema de archivos local para montar los sistemas de archivos NFS remotos y móntelo como un sistema de archivos nfs
mkdir -p ~/backups
mkdir -p ~/nfs_files
sudo mount -t nfs 10.70.5.221:/mnt/nfs_shares/backup ~/backups
sudo mount -t nfs 10.70.5.221:/mnt/nfs_shares/files ~/nfs_files
Entonces podemos confirmar que el sistema de archivos remoto se ha montado ejecutando el mount comando y filtro nfs monturas.
sudo mount | grep nfs
Salida en mi máquina
$ sudo mount | grep nfs
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
10.70.5.221:/mnt/nfs_shares/backup on /home/ubuntu/backups type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.70.5.170,local_lock=none,addr=10.70.5.221)
10.70.5.221:/mnt/nfs_shares/files on /home/ubuntu/nfs_files type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.70.5.170,local_lock=none,addr=10.70.5.221)
Para permitir que el montaje sea persistente incluso después de reiniciar el sistema, agregue las entradas a /etc/fstab
expediente. Use estos comandos (como root) para lograr eso:
echo "10.70.5.221:/mnt/nfs_shares/backup /home/ubuntu/backups nfs defaults 0 0" >> /etc/fstab
echo "10.70.5.221:/mnt/nfs_shares/files /home/ubuntu/nfs_files nfs defaults 0 0" >> /etc/fstab
Por último, prueba si NFS la configuración funciona bien al crear un archivo en el servidor y verificar si el archivo se puede ver en el cliente.
En el servidor:
sudo touch /mnt/nfs_shares/files/file_on_server.txt
Luego, en la máquina cliente, confirme
$ ls ~/nfs_files/
file_on_server.txt
También puedes hacer lo contrario. En el cliente:
touch ~/nfs_files/file_on_client.txt
Luego en el servidor confirme:
$ ls /mnt/nfs_shares/files/
file_on_client.txt file_on_server.txt
Para desmontar el sistema de archivos remoto en el lado del cliente.
sudo umount /mnt/nfs_shares/files
sudo umount /mnt/nfs_shares/backup
Tenga en cuenta que no puede unmount
el sistema de archivos remoto si está operando dentro de él.
Conclusión
En esta guía logramos instalar y configurar un servidor y cliente NFS en Ubuntu 20.04.