GNU/Linux >> Tutoriales Linux >  >> Cent OS

Guía para principiantes de NFS en CentOS / RHEL

Introducción a NFS

Un sistema de archivos de red (NFS) permite que un servidor comparta jerarquías de directorios (sistemas de archivos) con sistemas remotos a través de una red. Los servidores NFS exportan el directorio y los clientes NFS montan el directorio exportado. A continuación, el directorio del servidor aparece en los sistemas cliente como si fueran directorios locales. NFS reduce las necesidades de almacenamiento y mejora la consistencia y confiabilidad de los datos, porque los usuarios acceden a archivos que están almacenados en un servidor centralizado.

RedHat Linux 7 no es compatible con NFS versión 2 (NFSv2). Se admiten las siguientes dos versiones:
NFS versión 3 (NFSv3).
NFS versión 4 (NFSv4).

NFS se basa en llamadas a procedimientos remotos (RPC) entre clientes y servidores. Los servicios RPC están controlados por el servicio rpcbind. El servicio rpcbind reemplaza portmap, que se usaba en versiones anteriores de Linux para asignar números de programa RPC a combinaciones de número de puerto de dirección IP. rpcbind responde a las solicitudes de servicios RPC y establece conexiones con el servicio RPC solicitado. rpcbind no se usa con NFSv4 porque el servidor escucha en el puerto TCP 2049 conocido. por lo tanto, NFSv4 tampoco interactúa con los demonios lockd y rpc.statd.

Servidor NFS y Procesos RPC

Al iniciar el servicio del servidor nfs, se inicia el servidor NFS y otros procesos RPC necesarios para atender las solicitudes de sistemas de archivos NFS compartidos. Puede usar el nombre abreviado "nfs ” en lugar de “servidor nfs ” al iniciar el servicio. Ejemplo:

# systemctl start nfs

Este es el proceso del servidor NFS que implementa la parte de nivel de usuario del servicio NFS. La funcionalidad principal está a cargo del módulo kernel nfsd. El programa de espacio de usuario simplemente especifica en qué tipo de sockets escucha el servidor del kernel, qué versiones de NFS admite y cuántos subprocesos del kernel nfsd utiliza. Utilice el comando ps –e para mostrar el número de subprocesos en ejecución.

# ps -ef | grep nfs
root      9093     2  0 11:21 ?        00:00:00 [nfsd4_callbacks]
root      9099     2  0 11:21 ?        00:00:00 [nfsd]
root      9100     2  0 11:21 ?        00:00:00 [nfsd]
root      9101     2  0 11:21 ?        00:00:00 [nfsd]
root      9102     2  0 11:21 ?        00:00:00 [nfsd]
root      9103     2  0 11:21 ?        00:00:00 [nfsd]
root      9104     2  0 11:21 ?        00:00:00 [nfsd]
root      9105     2  0 11:21 ?        00:00:00 [nfsd]
root      9106     2  0 11:21 ?        00:00:00 [nfsd]

La cantidad de subprocesos nfsd que se ejecutarán se define en /proc/fs/nfsd/threads. expediente. En este ejemplo, se especifican 8 subprocesos nfsd:

# cat /proc/fs/nfsd/threads
8

Iniciar el servicio del servidor nfs también inicia los procesos RPC. Puede usar el comando ps –e para mostrar los nombres de los procesos RPC.

# ps -e | grep -i rpc
  177 ?        00:00:00 rpciod
 9080 ?        00:00:00 rpc.statd
 9081 ?        00:00:00 rpc.idmapd
 9082 ?        00:00:00 rpcbind
 9083 ?        00:00:00 rpc.mountd
 9084 ?        00:00:00 rpc.rquotad

rpc.statd

Este proceso implementa el protocolo RPC del monitor de estado de la red (NSM), que notifica a los clientes NFS cuando se reinicia un servidor NFS sin que se apague correctamente. Esto no se usa con NFSv4.

rpc.montado

Este es el demonio de montaje NFS que implementa el lado del servidor de las solicitudes de montaje de los clientes NFSv3. Comprueba que el servidor NFS exporta actualmente el recurso compartido NFS solicitado y que el cliente puede acceder a él. Para NFSv4, el demonio rpc.mountd solo se requiere en el servidor NFS para configurar las exportaciones.

rpc.idmapd

Esto proporciona llamadas ascendentes de servidor y cliente NFSv4, que se asignan entre nombres NFSv4 en línea (que son cadenas en forma de usuario@dominio) y UID y GID locales. Para que idmapd funcione con NFSv4, se debe configurar /etc/idmapd.conf. Este servicio es necesario para su uso con NFSv4, aunque no cuando todos los hosts comparten el mismo nombre de dominio DNS.

rpc.rcuota

Este proceso proporciona información de cuota de usuario para usuarios remotos. El servicio nfs lo inicia automáticamente y no requiere configuración del usuario. El comando de cuota utiliza los resultados para mostrar las cuotas de usuario para sistemas de archivos remotos y el comando edquota para establecer cuotas en sistemas de archivos remotos.

bloqueado

Este es un subproceso del kernel que se ejecuta tanto en clientes como en servidores. Implementa el protocolo Network Lock Manager (NLM), que permite a los clientes NFSv3 bloquear archivos en el servidor. Se inicia automáticamente cada vez que se ejecuta el servidor NFS y cada vez que se monta un sistema de archivos NFS.

nfslock

Al iniciar este servicio, se inician los procesos RPC que permiten a los clientes NFS bloquear archivos en el servidor.

Configuración del servidor NFS

Para comenzar a configurar un sistema como servidor NFS, instale el paquete nfs-utils:

# yum install nfs-utils

El archivo de configuración principal para el servidor NFS es /etc/exports . Este archivo almacena una lista de jerarquías de directorios exportados que los sistemas remotos pueden montar. El formato para las entradas es:

export-point client1(options) [client2(options) ... ]

El punto de exportación es el nombre de la ruta absoluta de la jerarquía de directorios que se exportará. Uno o más sistemas cliente, cada uno con opciones específicas, pueden montar el punto de exportación. No hay espacios entre el atributo del cliente y el corchete abierto. Cuando no se especifican opciones de cliente, se aplican las siguientes configuraciones predeterminadas:

  • ro:solo lectura . Los hosts del cliente no pueden cambiar los datos compartidos en el sistema de archivos. Para permitir que los hosts del cliente realicen cambios en el sistema de archivos, especifique la opción rw (lectura/escritura).
  • sincronizar :el servidor NFS responde a las solicitudes solo después de que los cambios realizados por solicitudes anteriores se escriban en el disco. async especifica que el servidor no tiene que esperar.
  • wretraso :el servidor NFS retrasa la confirmación de solicitudes de escritura cuando sospecha que otra solicitud de escritura es inminente. Para deshabilitar el retraso, use la opción no_wdelay. no_wdelay está disponible solo si también se especifica la opción de sincronización predeterminada.
  • raíz_calabaza :evita que los usuarios raíz conectados de forma remota tengan privilegios de raíz, lo que efectivamente "aplasta" el poder del usuario raíz remoto. Las solicitudes parecen provenir del usuario nfsnobody, un usuario sin privilegios en el sistema local o según lo especificado por anonuid. Para deshabilitar el aplastamiento de raíz, especifique la opción no_root_squash.
  • no_all_squash :No cambia la asignación de usuarios remotos. Para aplastar a todos los usuarios remotos (incluido el root), use la opción all_squash.

Para especificar el ID de usuario (UID) y el ID de grupo (GID) que el servidor NFS asigna a los usuarios remotos, use las opciones anonuid y anongid de la siguiente manera:

export-point client(anonuid=uid,anongid=gid)

Las opciones anonuid y anongid le permiten crear una cuenta especial de usuario y grupo para que la compartan los usuarios remotos de NFS. De forma predeterminada, las listas de control de acceso (ACL) son compatibles con NFS. Para deshabilitar esta función, especifique la opción no_acl al exportar el sistema de archivos.

Puede utilizar caracteres comodín, como (*) y (?) en los nombres de los clientes. También puede exportar directorios a todos los hosts en una red IP. Para hacer esto, especifique un par de dirección IP y máscara de red como dirección/máscara de red. Cualquiera de las siguientes formas es válida:

192.168.1.0/24
192.168.1.0/255.255.255.0

/etc/exportaciones Ejemplos

En el siguiente ejemplo, un sistema cliente con la dirección IP 192.0.2.102 puede montar el directorio /export/con permisos de lectura/escritura. Todas las escrituras en el disco son asíncronas:

/export/directory 192.0.2.102(rw,async)

El siguiente ejemplo exporta el directorio /exports/apps a todos los clientes, convierte a todos los usuarios que se conectan al usuario nfsnobody anónimo local y hace que el directorio sea de solo lectura:

/exports/apps *(all_squash, ro)

El siguiente ejemplo exporta el directorio /spreadsheets/proj1 con permisos de solo lectura para todos los clientes en la subred 192.168.1.0 y permisos de lectura/escritura para el sistema cliente denominado mgmtpc:

/spreadsheets/proj1 192.168.1.0/24(ro) mgmtpc(rw)

Inicio del servicio NFS

El servicio rpcbind debe iniciarse antes de iniciar nfs. El siguiente comando verifica si el servicio rpcbind está habilitado y en ejecución.

# systemctl status rpcbind

Si el servicio rpcbind se está ejecutando, se puede iniciar el servicio nfs. Reinicie nfs después de realizar cualquier cambio de configuración en /etc/exports o ejecute el comando exportfs -a.

# systemctl start nfs

Compruebe si el servicio nfslock está habilitado y en ejecución. Al iniciar este servicio, se inician los procesos RPC que permiten a los clientes NFS bloquear archivos en el servidor.

# systemctl status nfslock

Utilice el comando systemctl enable para iniciar automáticamente los servicios en el momento del arranque. Utilice el nombre completo de nfs-server al habilitar el servicio NFS.

# systemctl enable nfs-server

Especifique las opciones de configuración y los argumentos colocándolos en /etc/sysconfig/nfs . Este archivo contiene varios comentarios para ayudarlo a especificar las opciones como argumentos. Use el comando showmount –e para mostrar los sistemas de archivos exportados:

# showmount –e

Utilidad de exportación

También puede configurar un servidor NFS desde la línea de comandos utilizando exportfs. Este comando permite al usuario raíz exportar o anular la exportación de directorios de forma selectiva sin cambiar /etc/exports y sin reiniciar el servicio NFS. La sintaxis del comando es:

# exportfs [options] [client:dir ...]

El argumento del cliente es el nombre del sistema cliente al que se exporta dir. El argumento dir es el nombre de la ruta absoluta del directorio que se exporta. La siguiente es una lista de algunas de las opciones:

  • -r :vuelva a exportar las entradas en /etc/exports y sincronice /var/lib/nfs/etab con /etc/exports. El archivo /var/lib/nfs/etab es la tabla maestra de exportación. rpc.mountd lee este archivo cuando un cliente envía un comando de montaje NFS.
  • -a :exporte las entradas en /etc/exports pero no sincronice /var/lib/nfs/etab. Ejecute exportfs –a después de realizar cualquier cambio de configuración.
  • -yo :Ignore las entradas en /etc/exports y use solo argumentos de línea de comandos.
  • -u :Anule la exportación de uno o más directorios.
  • -o :Especifique las opciones del cliente como se especifica en /etc/exports.

Configuración del cliente NFS

Para comenzar a configurar un sistema como cliente NFS, instale el paquete nfs-utils:

# yum install nfs-utils

Utilice el comando de montaje para montar sistemas de archivos exportados (recursos compartidos de NFS) en el lado del cliente. La sintaxis del comando es:

# mount -t nfs -o options host:/remote/export /local/directory

Las siguientes son descripciones de los argumentos:

  • -tnfs :indica que el tipo de sistema de archivos es nfs. Con esta opción, el montaje usa NFSv4 si el servidor lo admite; de lo contrario, utiliza NFSv3.
  • opciones -o :Una lista delimitada por comas de opciones de montaje
  • anfitrión :/remote/export:el nombre de host que exporta el sistema de archivos, seguido de dos puntos, seguido del nombre de ruta absoluto del recurso compartido NFS
  • /local/directorio :El punto de montaje en el sistema cliente

Por ejemplo, para montar el directorio /home exportado desde el host abc con permisos de solo lectura (opción ro) en el punto de montaje local /abc_home y evitar que los usuarios remotos obtengan mayores privilegios ejecutando un programa setuid (opción nosuid):

# mount -t nfs -o ro,nosuid abc:/home /abc_home

Para montar recursos compartidos de NFS en el momento del arranque, agregue entradas a la tabla de montaje del sistema de archivos, /etc/fstab. Las entradas tienen el siguiente formato:

# vi /etc/fstab
server:/exported-filesystem    local_mount_point   nfs   options   0 0

Por ejemplo, la entrada /etc/fstab que replica el comando de montaje en la página anterior es:

# vi /etc/fstab
abc:/home    /abc_home    nfs    ro,nosuid    0 0

El comando df muestra los sistemas de archivos montados, incluidos los sistemas de archivos montados en NFS. Para los montajes NFS, la columna "Sistema de archivos" muestra la información del servidor:/sistema de archivos exportado. Usa la -T opción para incluir una columna "Tipo":

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
host03:/Dev    nfs4      976M  2.5M 907M  1%   /remote_dev
CentOS/RHEL 7:Configuración de un servidor NFS y un cliente NFS


Cent OS
  1. Cómo configurar el servidor NFS en CentOS 7 / RHEL 7

  2. Una guía definitiva para actualizar el kernel en CentOS/RHEL/Fedora

  3. CentOS/RHEL 7:Configuración de un servidor NFS y un cliente NFS

  4. CentOS / RHEL 7:Guía para principiantes de firewalld

  5. CentOS / RHEL:Guía para principiantes de vsftpd (instalación y configuración)

Comprobar dirección IP CentOS/RHEL

Instalar gnome en RHEL 8 / CentOS 8

Instale python 2 en RHEL 8 / CentOS 8

Cómo configurar el servidor NFS en CentOS 8 / RHEL 8

CentOS / RHEL 7:Guía para principiantes de unidades de servicio systemd

Guía completa para configurar iSCSI en CentOS / RHEL 7