Solucionar problemas de rendimiento del NFS con nfsiostat y nfsstat

El protocolo del sistema de archivos de red (NFS) ayuda a proporcionar acceso local a servidores NFS remotos. Esencialmente, permite a todos los usuarios con permiso acceder a los archivos como si estuvieran almacenados en su equipo local. Con la ayuda del NFS, podemos configurar soluciones de almacenamiento centralizado y los usuarios pueden acceder a los datos incluso desde ubicaciones remotas. Se puede acceder y controlar el NFS de forma segura a través de firewalls y Kerberos. Este es un protocolo de red que proporciona autenticación para aplicaciones cliente-servidor mediante criptografía de clave secreta.

¿Para qué se utiliza el NFS?

El NFS deja que los equipos, independientemente de la arquitectura o el sistema operativo, trabajen en los mismos sistemas de archivos en una red. El NFS se puede ejecutar en diferentes sistemas operativos porque aplica un modelo abstracto de un sistema de archivos en lugar de una especificación arquitectónica.

Al trabajar con el NFS, los usuarios pueden ver todos los archivos relevantes sin importar la ubicación y trabajar con archivos remotos como si estuvieran en sus sistemas de archivos locales. Estos son otros de los beneficios que ofrece el NFS:

  • Permitir que los sistemas de archivos se monten de forma transparente para los usuarios
  • Facilitar la consistencia y fiabilidad de los datos permitiendo que los usuarios accedan a los mismos sistemas de archivos
  • Reducir los costos de almacenamiento haciendo que los equipos compartan el almacenamiento de datos en lugar de usar el espacio en disco local

Monitoreo del rendimiento del NFS

Para asegurarnos de que el rendimiento del NFS cumple con nuestras expectativas y no experimentemos problemas inesperados, necesitamos supervisar el rendimiento del NFS. Esto podría resultar en una gran cantidad de trabajo si se implementa desde cero. Por esta razón, es mejor utilizar las herramientas existentes en el ecosistema Linux. Hay dos herramientas de línea de comandos que pueden ayudar con el monitoreo: nfsstat y nfsiostat.

Usar el comando nfsstat

El comando nfsstat muestra información sobre el servidor NFS que se está ejecutando actualmente en el sistema, así como las llamadas a procedimientos remotos realizadas.

Si ejecutamos nfsstat -s en el servidor, la información sobre el servidor NFS que se muestra incluirá el número de llamadas realizadas y si hay llamadas o autenticaciones incorrectas. Si el servidor NFS tiene llamadas incorrectas, lo más probable es que el sistema de red esté experimentando problemas de latencia y debamos comprobar.

Fig. 1 : NFS server information obtained by running nfsstat -s Fig. 1: información del servidor NFS obtenida al ejecutar nfsstat -s

También podemos recopilar información del cliente NFS ejecutando nfsstat -c.

Fig. 2 : NFS client information is displayed by running nfsstat -c Fig. 2: la información del cliente NFS se muestra al ejecutar nfsstat -c

Aquí podemos ver que el cliente envió 49 solicitudes RPC y ninguna de ellas fue rechazada. RPC significa llamadas a procedimiento remoto y permite que un proceso en un equipo llame a una subrutina en otro. A menudo, RPC se utiliza para crear aplicaciones distribuidas basadas en cliente-servidor.

Mientras tanto, el cliente envió 49 solicitudes NFS en total y ninguna fue rechazada.

Usar el comando nfsiostat

La herramienta nfsiostat nos proporciona información útil sobre el comportamiento del sistema NFS al leer /proc/self/mountstats como valores de entrada. Luego entrega las solicitudes de lectura y escritura de los recursos compartidos del NFS montado.

Fig. 3 :nfsiostat howing general NFS client information Fig. 3: nfsiostat mostrando información del cliente NFS general

Aquí podemos ver la carpeta de montaje en el cliente NFS actual, que es

/mnt/donald_client_shared_folder

y el destino de montaje en el servidor NFS, que es

/mnt/donald_shares

Además, en la figura anterior podemos ver los datos detallados para las solicitudes de lectura y escritura al servidor NFS del cliente:

  • op/s: el número de operaciones realizadas por segundo (en este caso, 0,395 ops/s para las operaciones de escritura)
  • rpc(bklog): la longitud de la cola de retrasos (en este caso, ninguno)
  • kB/s: kilobyte por segundo (404,925 kB/s para las operaciones de escritura)
  • kB/op: kilobyte por operación (1024,448 kB/op para las operaciones de escritura)
  • retrans: el número de retransmisiones (0 retransmisiones en este caso)
  • avg RTT: el tiempo medio desde el momento en que el cliente envía las solicitudes de RPC hasta que recibe la respuesta
  • avg exe: el tiempo medio desde el momento en que el cliente envía las solicitudes RPC al núcleo hasta que las solicitudes se completan

De forma predeterminada, el comando nfsiostat proporcionará los resultados desde el momento en que se montó el recurso compartido. Si los datos se tienen que tomar para un intervalo periódico, el recuento se debe proporcionar como un argumento para el comando nfsiostat.

Cuál es la diferencia entre iostat y nfsiostat?

El comando iostat nos proporciona datos estadísticos de entrada y salida para los dispositivos de almacenamiento para que tengamos una idea de cómo funcionan.

Cómo solucionar problemas de rendimiento del NFS

Para diagnosticar y solucionar problemas de rendimiento del NFS de manera eficiente, sigue los pasos que se describen a continuación.

Comprobar el rendimiento de la red

En primer lugar, debemos comprobar si el sistema de red tiene algún problema de rendimiento. Podemos utilizar varias herramientas para vigilar el rendimiento de la red, tales como los comandos vnstat y tcpdump.

vnstat es una herramienta de línea de comandos que ofrece funciones de seguimiento del tráfico de red para métricas como el consumo de ancho de banda y el flujo de tráfico. vnstat utiliza la información del núcleo para generar logs de las métricas.

tcpdump es una herramienta de análisis de red que deja que los usuarios registren y analicen el flujo del tráfico de red en el sistema. tcpdump permite filtrar el valor del tráfico de red por IP, host, puerto, protocolo o aplicación.

Veamos cómo podemos usar tcpdump para comprobar el paquete de red detallado que se ha enviado o recibido.

Fig. 4: tcpdump showing transmitted and received packets Fig. 4: tcpdump mostrando los paquetes transmitidos y recibidos

Podemos utilizar vnstat para comprobar si hay un problema con el rendimiento de la red midiendo la cantidad de datos que pasan por la interfaz de red.

Fig. 5: Data in and out when measured with vnstat Fig. 5: entrada y salida de datos cuando se miden con vnstat

En el caso anterior, para los datos que han pasado por la interfaz de red enp4s0, tenemos 7,07 GB datos recibidos y 298,15 MB transmitidos. Esto da un total de 7,36 GB datos recibidos y transmitidos.

Comprobar el rendimiento del servidor NFS

Si no encontramos problemas de rendimiento de la red, necesitamos analizar el rendimiento del servidor NFS. Por ejemplo, podemos encontrar el número de llamadas RPC realizadas en el servidor con nfsstat -r. Si hay llamadas incorrectas rechazadas por la capa RPC, es probable que la red esté sobrecargada y necesitemos identificarla observando las estadísticas de esa interfaz de red.

Fig. 6 : nfsstat showing RPC calls Fig. 6: nfsstat mostrando las llamadas RPC

Comprobar el rendimiento del cliente

Lo último que debemos comprobar es el rendimiento del cliente NFS. Por ejemplo, podemos ejecutar nfsstat -c para comprobar los datos del cliente NFS. Estos incluyen el número de confirmaciones o escrituras realizadas o el número de retransmisiones para las solicitudes RPC. Si el número de retransmisiones entre el cliente y el servidor es enorme, lo más probable es que el servidor está ocupado o hay una pérdida en el pocket. El número de retransmisiones se muestra como retrans in the client rpc stats part.

Fig. 7 : nfsstat -c shows the NFS client data in detail Fig. 7: nfsstat -c muestra los datos del cliente NFS en detalle

Además, podemos combinarlo con nfsiostat -d para comprobar las estadísticas relacionadas con el directorio del servidor NFS.

Fig. 8 : nfsiostat -d showing statistics for a directory that mounts to the NFS server Fig. 8: nfsiostat -d mostrando las estadísticas de un directorio que se monta en el servidor NFS

Otras formas de utilizar nfsiostat

Los clientes aprovecharán al máximo los sistemas NFS, ya que es probable que sean científicos o ingenieros que utilicen el sistema NFS para acceder a vastos datos para modelos de capacitación. Si un cliente no puede solucionar o localizar el problema en su extremo, los administradores de red pueden iniciar la solución de problemas desde el lado del servidor.

La herramienta nfsiostat es ideal para detectar problemas desde el lado del cliente y proporciona varias opciones para recopilar métricas útiles. Veamos algunos ejemplos de su uso.

Comprueba las estadísticas generales del cliente NFS ejecutando nfsiostat sin parámetros:

Fig. 9 : nfsiostat shows general information Fig. 9: nfsiostat muestra información general

Si sospechamos que el cliente NFS está experimentando problemas de rendimiento conectándose al servidor NFS, debemos enfocarnos en las métricas avg RTT y retrans. Si el tiempo medio de RTT y el número de transmisiones son altos, esto indica que hay un problema de alta latencia en el sistema NFS. Esto hace que la conexión entre el cliente y el servidor sea inestable, además de generar problemas de tiempo de espera.

Mostrar estadísticas relacionadas con la caché con nfsiostat -a:

Fig. 10 : Showing cached data with nfsiostat -a Fig. 10: se muestran datos en caché con nfsiostat -a

Las invalidaciones de caché de página muestran el número de veces que la caché se vuelve inválida en el cliente (en este caso, es 0). Las invalidaciones de caché de atributos muestran el número de atributos en caché, tales como el tiempo de modificación o el propietario (en este caso, es 3).

Aplicar el almacenamiento en caché evita que el servidor NFS se sobrecargue con las solicitudes enviadas desde el cliente NFS. Si el tiempo de caché es alto, podemos encontrarnos con un problema de “Archivo no encontrado”. Este ocurre cuando un cliente intenta leer un archivo en el servidor utilizando datos de caché antiguos, pero el archivo en el servidor ya está actualizado. Por lo tanto, debemos establecer la configuración para aplicar adecuadamente el almacenamiento en caché y que coincida con nuestros propios casos de uso.

Mostrar estadísticas relacionadas con la caché de página con nfsiostat -p:

Fig. 11 : Showing page cache with nfsiostat -p Fig. 11: mostrando la caché de página con nfsiostat -p

Ordenar los puntos de montaje del NFS por número de operaciones por segundo ejecutando nfsiostat -s:

Fig. 12 : Sort NFS mount points with nfsiostat -s Fig. 12: ordenar los puntos de montaje del NFS con nfsiostat -s

Mostrar la salida a intervalos específicos cada ${a} segundos y la salida ${n} veces ejecutando nfsiostat ${a} ${n}:

Fig. 13 : Requests in NFS after every 4 seconds and 6 times only Fig. 13: solicitudes en el NFS cada 4 segundos y 6 veces solamente
Was this article helpful?
Supervise su entorno Linux

Verifique el estado y la disponibilidad de sus servidores Linux para obtener un rendimiento óptimo con la herramienta de monitoreo de Linux de Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us