Problemas de E/S del disco: comprenderlos y solucionarlos para aumentar el rendimiento del sistema

Los problemas de E/S del disco y uso del espacio son causas comunes de degradación del rendimiento en los sistemas informáticos. La baja velocidad del sistema puede afectar directamente su capacidad para recuperar y almacenar información en el disco.

En este artículo, aprenderemos por qué ocurren los problemas de E/S del disco, cuáles son los comandos de Linux que se pueden utilizar para diagnosticarlos y los métodos comunes para resolverlos.

¿Qué causa los problemas de E/S del disco?

Los problemas de E/S del disco pueden ser el resultado de la complejidad del almacenamiento, cuellos de botella en las aplicaciones, configuraciones RAID, tiempos de respuesta y diseño. Veamos algunos de estos puntos en detalle.

Almacenamiento virtual

Una capa de almacenamiento virtual o definida por software se ejecuta sobre la capa de almacenamiento físico subyacente. El almacenamiento virtual aumenta la complejidad y el número de posibles puntos de fallo debido a la contención de recursos. Esto se debe a que no puede leer y escribir datos tan rápido como el almacenamiento físico.

Cuellos de botella en las aplicaciones

Las aplicaciones que hacen un uso intensivo de la E/S suelen provocar cuellos de botella y problemas de latencia del almacenamiento. Suelen producirse cuando varias aplicaciones muy ocupadas utilizan el mismo almacén de datos. La mejor solución para los cuellos de botella de las aplicaciones es encontrar una forma de gestionarlas con poco ancho de banda de E/S de almacenamiento y utilizar una base de usuarios más amplia.

Configuración de RAID

La configuración de RAID se puede utilizar para el almacenamiento en una aplicación tanto a nivel de hardware como de software. La configuración de RAID reparte las solicitudes de E/S y las copias de datos entre varios discos. Esto aumenta la E/S y la fiabilidad del almacenamiento. Cualquier problema en el dispositivo físico o el software que gestiona la matriz RAID —por ejemplo, debido a su antigüedad, una configuración insuficiente o un software obsoleto— puede causar ralentizaciones en las solicitudes de E/S.

Tiempo de respuesta de E/S

Un aumento en el tiempo de respuesta de una E/S de almacenamiento puede degradar el rendimiento de E/S. Cuando un dispositivo de almacenamiento tarda más en responder a una solicitud de E/S, esto indica que hay un cuello de botella en la capa de almacenamiento. La carga adicional en los cuellos de botella de E/S de almacenamiento existentes genera un retraso constante en el tiempo de respuesta.

Diseño de almacenamiento deficiente

Otra causa de la lentitud de E/S de almacenamiento es el estado deficiente de los dispositivos físicos. A medida que los discos duros envejecen o experimentan un aumento de temperatura, es menos probable que alcancen sus velocidades máximas de E/S y más común que la latencia de E/S empiece a degradarse. Los discos más antiguos se deben sustituir antes de que se deterioren y provoquen errores de E/S.

El impacto de los problemas de E/S del disco

Para identificar y solucionar los problemas de E/S del disco, es importante entender cómo pueden manifestarse en su sistema. Los problemas de E/S del disco pueden afectar el rendimiento del sistema de varias maneras:

  • Un exceso de E/S puede provocar una carga elevada del sistema que podría superar la capacidad de carga máxima de 1.
  • Pueden activarse alertas, por ejemplo, cuando un servicio no está disponible o si el sistema no puede iniciar un servicio.
  • Los sitios web alojados pueden tardar mucho tiempo en cargar o dejar de responder de manera inesperada.
  • Los equipos virtuales pueden funcionar lentamente o no responder durante largos periodos de tiempo.
  • Los discos pueden funcionar mal debido al aumento de latencia durante las copias de seguridad.
  • El envío de correos electrónicos puede ralentizarse, ya que el servidor de correo electrónico necesita leer y escribir datos desde y hacia los discos duros.

Monitoreo del rendimiento del disco

Una vez que sospechamos de un posible problema de E/S del disco, podemos utilizar métricas para analizar el rendimiento de la E/S del disco. Estas son algunas de las métricas más importantes:

  • Solicitudes de lectura por segundo
  • Solicitudes de escritura por segundo
  • Total de bytes escritos y bytes escritos por segundo
  • Total de bytes leídos y bytes leídos por segundo
  • Solicitudes en espera en la cola

Identificar los problemas de E/S del disco

Una vez que hemos medido y monitoreado el rendimiento del disco utilizando las métricas anteriores, podemos utilizar comandos para identificar problemas de E/S del disco. Tres de los comandos más utilizados para la resolución de problemas son df, iostat, y vmstat.

Usar el comando df

El comando df es la forma abreviada del disk filesystem. Este es uno de los comandos más básicos para solucionar problemas de E/S del disco. Si no hay espacio disponible, las operaciones de escritura fallarán. El comando df muestra el espacio utilizado y disponible para todos los sistemas de archivos montados en Linux. Por defecto, el espacio utilizado y disponible se muestra en bloques de 1K.

Sintaxis:

df [OPTIONS] [FILES]

Ejemplo:

Al ejecutar el comando df, verás una salida similar a la que se muestra a continuación:

Fig. 1: Output of the df command Fig. 1: salida del comando df

Como se puede ver en la anterior salida, esta despliega la siguiente información para todos los sistemas de archivos montados:

  • Filesystem: nombre del sistema de archivos o dispositivo
  • 1K-blocks: tamaño total del sistema de archivos o dispositivo en bloques de 1KB
  • Utilizado: espacio total utilizado por los archivos existentes en el sistema de archivos
  • Disponible: espacio total disponible en el sistema de archivos
  • %: Percentage porcentaje de bloques utilizados por el sistema de archivos
  • Montado sobre: punto de montaje o directorio donde está montado el sistema de archivos

Usar el comando vmstat

El comando vmstat también se conoce como estadísticas de memoria virtual. Es una utilidad para monitorear el rendimiento del sistema en Linux. Deja ver información sobre procesos, memoria, programación de la CPU, disco y bloques de E/S. Muestra a los usuarios el rendimiento del sistema en tiempo real durante un periodo de muestreo. Si no se especifica una opción, el comando vmstat presentará por defecto las estadísticas desde el último reinicio del sistema.

Sintaxis:

vmstat [options][delay [count]]

El retraso y el recuento son dos parámetros importantes para el comando vmstat. Se utilizan para mostrar continuamente y en tiempo real el rendimiento del sistema a la velocidad de un intervalo especificado durante un número definido de veces.

  • Retraso es el intervalo de tiempo o retardo entre las dos actualizaciones de salida.
  • Recuento define el número de actualizaciones de salida que se mostrarán. Si no se establece este recuento, el comando vmstat se ejecuta infinitamente.

Ejemplo:

Al ejecutar el comando vmstat, obtendrás una salida similar a la que se muestra a continuación:

Fig. 2: Output of the vmstat command Fig. 2: salida del comando vmstat

Esta es la salida básica que muestra las estadísticas generales. También puede especificar los parámetros de retraso y recuento para mostrar continuamente estadísticas en tiempo real. Por ejemplo, ejecutar vmstat 5 3 mostrará las siguientes 3 estadísticas en tiempo real, cada una tras un intervalo de 5 segundos.

Fig. 3: Real-time output of vmstat command Fig. 3: salida en tiempo real del comando vmstat

La anterior salida se divide en cuatro áreas. Nos centraremos en la sección de E/S. Muestra dos columnas:

  • bi: número de bloques de datos recibidos de un dispositivo
  • bo: número de bloques de datos enviados a un dispositivo

Podemos utilizar esta información para analizar cuándo se están escribiendo o leyendo excesivamente los datos. A continuación, podemos utilizar otro comando —como iostat— para ver qué disco duro estaba asumiendo la carga y tratar de encontrar la causa raíz del problema de E/S del disco.

Usar el comando iostat

Como su nombre indica, el comando iostat se utiliza para monitorear las estadísticas de entrada/salida de un sistema. Éste genera estos informes monitoreando la relación entre la duración del tiempo activo de los dispositivos y su velocidad media de transferencia. Los informes generados se pueden utilizar para actualizar la configuración del sistema y así lograr un mejor equilibrio de entrada/salida entre varios discos físicos disponibles.

Sintaxis:

iostat [option] [interval] [count]

De forma similar a lo que hemos visto con el comando vmstat, los parámetros de intervalo y recuento se utilizan para mostrar en tiempo real actualizaciones de forma infinita o sólo para recuentos específicos.

Ejemplo:

Al ejecutar el comando iostat, obtendrás una salida similar a la que se muestra a continuación:

Fig 4: Output of the iostat command Fig. 4: salida del comando iostat

Los informes predeterminados de salida muestran las estadísticas de la CPU y las estadísticas de entrada/salida del dispositivo desde el momento en que se reinició el sistema por última vez. De las dos secciones, nos interesa más Dispositivo. Esta genera la siguiente información para todas las particiones o dispositivos:

  • Dispositivo: nombre de la partición/dispositivo
  • tps: "transferencia por segundo"; una tps más alta significa que el procesador está más ocupado
  • Blk_read/s (kB_read/s) y Blk_wrtn/s (kB_wrtn/s): velocidad de transferencia de las operaciones de lectura o escritura expresada en forma de número de bloques leídos/escritos por segundo
  • Blk_read (kB_read) y Blk_wrtn (kB_wrtn): número total de bloques leídos y escritos en este dispositivo desde el último reinicio

Corregir los problemas de E/S de disco

Los ejemplos anteriores indican que hay problemas de rendimiento del disco en el sistema. Puedes implementar varias correcciones de software y hardware para mitigar los problemas de uso de espacio y E/S.

Correcciones de software

  • Utiliza discos duros virtuales y físicos separados.
  • Instala el sistema operativo host en un disco diferente al de los equipos virtuales.
  • Optimiza los discos duros implementando particiones de disco en los sistemas operativos host y alojados.
  • Actualiza el tipo de RAID según la carga de trabajo de la aplicación para ver un rendimiento más rápido.
  • Activa el acceso directo a la memoria.

Correcciones de hardware

  • Actualiza los discos duros a una unidad de estado sólido (SSD) o un disco más rápido.
  • Divide la carga de la aplicación entre los discos duros para soportar mejor la carga de E/S.
  • Actualiza a una caché en memoria más grande para que la lectura y escritura directa de las aplicaciones desde los sistemas de archivos sea menos frecuente.
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