Espacio en disco: cuidado y monitoreo

Aparte de establecer las cuotas de usuario, un sysadmin necesita monitorear el uso del almacenamiento disponible. Debido a que el espacio en disco no es ilimitado, debemos estar al tanto del porcentaje de utilización. Esta es una tarea simple de realizar, pero que es mejor automatizar. En este post compartiremos una simple técnica para llevarlo a cabo.

Cabe la pena aclarar que el tema presentado en esta oportunidad no pretende reemplazar los sistemas robustos de monitoreo disponibles en Linux. Solamente lo presentamos como una alternativa.

Espacio en disco

En primer lugar, el siguiente comando nos devuelve la lista de sistemas de archivos y su porcentaje de uso. Por simplicidad, solamente chequearemos /var, /tmp, y /home:

df -h | grep -E '/tmp|/home|/var' | tr -s ' ' | cut -d' ' -f1,5

La salida del comando anterior, que podemos ver en la Fig. 1, nos representa dos “inconvenientes”:

  • La presencia del signo %. Para poder comparar con un límite máximo de utilización necesitamos extraer el número.
  • Para poder comparar correctamente, necesitamos acceder a cada porcentaje de uso de manera individual.

Para resolver la primera cuestión, recurriremos a (como también vemos en Fig. 1):

df -h | grep -E '/tmp|/home|/var' | tr -s ' ' | cut -d' ' -f1,5 | tr -d %
Cómo averiguar el uso del espacio de disco
Figura 1 – Cómo averiguar el uso del espacio de disco

Con respecto a la segunda, colocaremos el comando anterior dentro de un bucle for de la siguiente manera. Si ocurre el caso de que el porcentaje de utilización supera el 20%, se acumularán los mensajes en /home/alumno/usodisco.txt y se enviará por correo local al usuario alumno.

#!/bin/bash

ARCHIVO=/home/alumno/usodisco.txt

for FILESYSTEM in /tmp /home /var;
do
        USODISCO=$(df -h | grep -E $FILESYSTEM | tr -s ' ' | cut -d ' ' -f 5 | tr -d %)
        if [ $USODISCO -ge 20 ];
        then
                echo "Advertencia: El uso de $FILESYSTEM es $USODISCO%" > $ARCHIVO
        fi
done

if [ -s $ARCHIVO ];
then
        mail -s "Advertencia de uso de disco" alumno < $ARCHIVO
fi

Este script básico de ejemplo requiere que se encuentre instalado en el equipo el paquete que proporciona las herramientas de correo electrónico. En Debian este paquete se llama mailutils.

Ejemplo

Si estamos trabajando en un equipo donde el porcentaje de uso de almacenamiento es bajo, podemos cambiar el límite especificado en el script por una cantidad acorde (20 por ejemplo) para validar. En la Fig. 2 podemos ver el resultado de ejecutar el script (solamente uno de los sistemas de archivos está utilizado por encima del 20%):

Espacio en disco: resultado de la ejecución del script
Figura 2 – Espacio en disco: resultado de la ejecución del script

Como ejercicio adicional, ahora deberemos agendar la ejecución del script mediante cron con la periodicidad deseada.

Espero que este post les haya resultado de utilidad. En el próximo mejoraremos el formato de nuestro sencillo reporte.

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!