GNU/Linux >> Tutoriales Linux >  >> Linux

Preguntas de la entrevista del sistema de archivos de red de Linux (NFS)

¿Qué es NFS?

Network File System (NFS) es uno de los productos para compartir archivos informáticos más antiguos que existen en la actualidad. Sigue siendo el más popular para compartir directorios de archivos entre sistemas UNIX y Linux. NFS permite que los servidores designen directorios específicos para ponerlos a disposición de los hosts designados y luego permite que los sistemas cliente se conecten a esos directorios montándolos localmente.

NFS se puede proteger mediante reglas de firewall (iptables), contenedores TCP (para permitir y denegar el acceso al host) y SELinux (para limitar cómo los protocolos de intercambio de archivos pueden compartir recursos NFS). Aunque NFS era intrínsecamente inseguro cuando se creó (los datos se comparten sin cifrar y el acceso de los usuarios es bastante abierto), las características de la versión 4 de NFS han ayudado a mejorar la seguridad general de NFS.

¿Qué son los procesos de servidor NFS y 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.

¿Cómo configurar el servidor NFS y el cliente NFS en CentOS/RHEL?

Lea las publicaciones a continuación para configurar el servidor NFS y las máquinas cliente.

Guía para principiantes de NFS en CentOS/RHEL
CentOS/RHEL 7:Configuración de un servidor NFS y un cliente NFS

¿Cuáles son los archivos de configuración para el servidor NFS?

La configuración principal del servidor NFS es el archivo /etc/exports. Este es el archivo que usa para especificar qué directorios desea compartir con los clientes NFS. La sintaxis de este archivo es:

Directory      hostname(options)

El valor de Directorio debe reemplazarse con el nombre del directorio que desea compartir (por ejemplo, /usr/share/doc). El valor nombre de host debe ser un nombre de host de cliente que se pueda resolver en una dirección IP. El valor de las opciones se usa para especificar cómo se debe compartir el recurso.

Por ejemplo, la siguiente entrada en el archivo /etc/exports compartiría el directorio /usr/share/doc con el cliente NFS client01 (con las opciones de lectura y escritura) y el cliente NFS client02 (con la opción de solo lectura). ):

# vi /etc/exports
/usr/share/doc      client01(rw) client02(ro)

Tenga en cuenta que hay un espacio entre el nombre y las opciones de client01 y client02, pero no hay espacio entre el nombre de host y su opción correspondiente.

Comprender el archivo /etc/exports

¿Cuáles son las opciones de uso compartido de NFS más utilizadas en /etc/exports

?

Hay muchas opciones diferentes para compartir NFS, incluidas estas:

  • rw :Compartir como lectura-escritura. Tenga en cuenta que aún se aplican los permisos normales de Linux. (Tenga en cuenta que esta es una opción predeterminada).
  • ro :Compartir como solo lectura.
  • sincronizar :Los cambios en los datos del archivo se realizan en el disco inmediatamente, lo que tiene un impacto en el rendimiento, pero es menos probable que provoque la pérdida de datos. En algunas distribuciones, este es el valor predeterminado.
  • asincrónico :Lo contrario de sincronización; los cambios de datos de archivo se realizan inicialmente en la memoria. Esto acelera el rendimiento, pero es más probable que provoque la pérdida de datos. En algunas distribuciones, este es el valor predeterminado.
  • raíz_calabaza :asigne el usuario raíz y la cuenta de grupo del cliente NFS a las cuentas anónimas, normalmente la cuenta de nadie o la cuenta de nfsnobody. Consulte la siguiente sección, "Asignación de ID de usuario", para obtener más detalles. (Tenga en cuenta que esta es una opción predeterminada).
  • no_root_squash :asigne la cuenta de grupo y usuario raíz del cliente NFS a las cuentas de grupo y raíz locales.
Opciones comunes de montaje de NFS en Linux

¿Cómo obtener información sobre el rendimiento de los recursos compartidos de NFS?

El comando nfsiostat funciona como el comando iostat excepto solo para los puntos de montaje NFS. El nfsiostat obtiene información de /proc/self/mountstats y proporciona información sobre el rendimiento de entrada/salida de los recursos compartidos de NFS montados en el sistema. El comando nfsiostat lo proporciona nfs-utils paquete.

A continuación se muestra un resultado de muestra del comando nfsiostat.

La siguiente tabla muestra una breve descripción de cada columna en la salida acerca de.

Campo Descripción
op/s Este es el número de operaciones por segundo.
archivo rpc Esta es la longitud de la cola de trabajos pendientes.
kB/s Este es el número de kB escritos/leídos por segundo.
kB/op Este es el número de kB escritos/leídos por cada operación.
retransmitir Este es el número de retransmisiones.
RTT medio (ms) Esta es la duración desde el momento en que el kernel del cliente envía la solicitud RPC hasta el momento en que recibe la respuesta.
promedio de exe (ms) Esta es la duración desde el momento en que el cliente NFS realiza la solicitud RPC a su kernel hasta que se completa la solicitud RPC, esto incluye el tiempo RTT anterior.

A continuación se muestra una sintaxis para usar el comando nfsiostat.

# nfsiostat --help
Usage: nfsiostat [interval] [count] [options] [mount point]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit

  Statistics Options:
    File I/O is displayed unless one of the following is specified:

    -a, --attr          displays statistics related to the attribute cache
    -d, --dir           displays statistics related to directory operations
    -p, --page          displays statistics related to the page cache

  Display Options:
    Options affecting display format:

    -s, --sort          Sort NFS mount points by ops/second
    -l LIST, --list=LIST
                        only print stats for first LIST mount points

Aquí,
intervalo – tiempo en segundos entre cada informe.
cuenta – número de informes que se generarán con [intervalo] segundos de diferencia. Si no especifica el recuento aquí, el informe se generará continuamente en el intervalo especificado.
opciones – Las diversas opciones se explican en los ejemplos a continuación.
mount_point – puede especificar un punto de montaje NFS específico para el cual se mostrarán las estadísticas. En este caso, solo se genera un informe para el punto de montaje especificado.

¿Cómo ver los recursos NFS compartidos actualmente?

El comando exportfs se puede usar en el servidor NFS para mostrar lo que se comparte actualmente:

# exportfs
/share          [world]

¿Cómo compartir un recurso NFS usando la línea de comandos?

El comando exportfs también se puede usar para compartir temporalmente un recurso, suponiendo que los servicios NFS ya se hayan iniciado:

# exportfs -o ro 192.168.1.100:/usr/share/doc
# exportfs
/usr/share/doc  192.168.1.100
/share          [world]

El -o opción se utiliza para especificar las opciones de acciones. El argumento incluye el nombre de los sistemas para compartir, así como el directorio para compartir, separados por dos puntos (:).

Si realiza cambios en el archivo /etc/exports, cualquier recurso compartido recién agregado se habilitará después de reiniciar. Si desea habilitar estos cambios de inmediato, ejecute el siguiente comando:

# exportfs –a

¿Cómo montar NFS compartido en los sistemas cliente?

Una vez que el recurso compartido NFS se exporta desde el servidor NFS, se puede montar en los clientes elegibles usando la siguiente sintaxis de comando:

# mount [NFS server IP or hostname]:/share/path /client/path

Por ejemplo, si /exports/downloads se comparte desde el servidor NFS 10.10.10.100, podemos montarlo en el servidor del cliente como directorio /mnt/downloads usando el siguiente comando:

# mount 10.10.10.100:/exports/downloads /mnt/downloads

¿Cómo desmontar un sistema de archivos NFS?

Después de montar un sistema de archivos NFS, desmontarlo es simple. Utiliza el comando umount con el punto de montaje local o el nombre del sistema de archivos remoto. Por ejemplo:

# umount /mnt/nfs_mnt

o:

# umount 10.10.10.100:/nfs_share

¿Cómo obtener una lista de clientes conectados al servidor NFS?

Para obtener una lista de clientes conectados al servidor NFS, use el comando showmount desde el indicador de terminal. Para mostrar también los directorios a los que están conectados los clientes, utilice:

# showmount -a

¿Cuál es el puerto predeterminado que utiliza el servidor NFS?

Por defecto, el servidor NFS usa el puerto 2049.

¿Qué puertos deben estar abiertos en el cortafuegos para que NFS funcione?

Los puertos TCP y UDP 2049 (nfs) y 111 (rpcbind) deben estar abiertos para que un servidor NFS funcione correctamente. El servidor también debe abrir los puertos TCP y UDP 20048 para que el comando showmount pueda consultar los directorios compartidos NFS disponibles desde rpc.mountd en el servidor.

¿Cómo ver los recursos compartidos de NFS desde los sistemas cliente?

Desde un sistema cliente Linux, puede usar el comando showmount para ver qué directorios compartidos están disponibles desde una computadora seleccionada, como en este ejemplo:

$ showmount -e server.example.com
/export/myshare client.example.com
/mnt/public *

El resultado de showmount muestra que el directorio compartido llamado /export/myshare está disponible solo para el host client.example.com. Sin embargo, el directorio compartido /mnt/public está disponible para cualquiera.

¿Cómo ver los puntos de montaje NFS montados en el cliente NFS?

Utilice el siguiente comando para ver los puntos de montaje NFS montados en un servidor cliente NFS:

# mount -t nfs4

Salida de ejemplo:

# mount -t nfs4
10.10.10.100:/mnt on /mnt/fed type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.20.200,local_lock=none,addr=10.10.20.200)

El resultado del comando mount -t nfs4 muestra solo los sistemas de archivos montados desde servidores de archivos NFS.

¿Cómo montar sistemas de archivos NFS en el momento del arranque?

Para configurar un sistema de archivos NFS para que se monte automáticamente en un punto de montaje específico cada vez que inicie su sistema Linux, debe agregar una entrada para ese sistema de archivos NFS al archivo /etc/fstab.

Este es el formato para agregar un sistema de archivos NFS a su sistema local:

host:directory    mountpoint   nfs   options   0   0

El primer elemento (host:directorio) identifica la computadora del servidor NFS y el directorio compartido. mountpoint es el punto de montaje local en el que se monta el directorio NFS. Le sigue el tipo de sistema de archivos (nfs). Cualquier opción relacionada con el montaje aparece a continuación en una lista separada por comas. (Los dos últimos ceros configuran el sistema para no volcar el contenido del sistema de archivos y no ejecutar fsck en el sistema de archivos).

Los siguientes son ejemplos de entradas NFS en /etc/fstab:

# vi /etc/fstab
nfs_server01:/data    /mnt/data      nfs    bg,rsize=8192,wsize=8192  0  0

¿Cómo usar autofs para montar sistemas de archivos NFS bajo demanda?

La función autofs monta sistemas de archivos de red a pedido cuando alguien intenta usar los sistemas de archivos. Con la función autofs configurada y activada, puede hacer que cualquier directorio compartido NFS disponible se monte a pedido. Para utilizar la función autofs, debe tener instalado el paquete autofs.

Con autofs habilitado, si conoce el nombre de host y el directorio compartido por otra computadora host, simplemente cambie (cd) al directorio de montaje de autofs (/net o /var/autofs por defecto). Esto hace que el recurso compartido se monte automáticamente y sea accesible para usted. Los siguientes pasos explican cómo activar la función autofs en Fedora o RHEL:

1. Como usuario raíz, abra /etc/auto.master archivo y busque la siguiente línea:

# vi /etc/auto.master
/net -hosts

Esto hace que el directorio /net actúe como punto de montaje para los directorios compartidos de NFS a los que desea acceder en la red.

2. Para iniciar el servicio autofs en CentOS/RHEL 7 o un sistema posterior, escriba lo siguiente como usuario root:

# systemctl start autofs.service

3. En CentOS/RHEL 7 o un sistema posterior, configure el servicio autofs para que se reinicie cada vez que inicie su sistema:

# systemctl enable autofs

¿Cómo configurar firewalld en el servidor NFS?

Para que el servidor NFS funcione, habilite los servicios nfs, mountd y rpc-bind en la zona correspondiente en la aplicación de configuración del firewall o usando firewall-cmd:

# firewall-cmd --add-service=nfs --zone=internal --permanent
# firewall-cmd --add-service=mountd --zone=internal --permanent
# firewall-cmd --add-service=rpc-bind --zone=internal --permanent


Linux
  1. Mejore el rendimiento del sistema Linux con noatime

  2. Configuración rápida del servidor NFS en el sistema Redhat 7 Linux

  3. 40 preguntas de la entrevista de Linux para estudiantes de primer año, parte 2

  4. Preguntas de la entrevista de Linux:permisos básicos de archivos y directorios

  5. Preguntas de la entrevista de Linux - Impresión de Linux (CUPS)

Montar automáticamente el recurso compartido NFS en Linux usando autofs

Comando Fsck en Linux (Sistema de archivos de reparación)

Mis comandos de solución de problemas de red de Linux

Administración del sistema de archivos de red (NFS) en Linux

¿Qué es el sistema de archivos de Linux? Guía fácil

Las 50 preguntas y respuestas más frecuentes de la entrevista sobre Linux