Diagnóstico de Problemas de Espacio en Disco

LinuxBeginner
Practicar Ahora

Introducción

Quedarse sin espacio en disco es un problema común para administradores de sistemas y desarrolladores. Cuando un disco se llena, las aplicaciones pueden fallar y el sistema puede volverse inestable. Saber cómo diagnosticar y resolver rápidamente estos problemas es una habilidad crítica.

En este laboratorio, asumirá el rol de un administrador de sistemas que ha recibido una alerta sobre poco espacio en disco. Aprenderá un enfoque sistemático para identificar qué está consumiendo el espacio y cómo recuperarlo de forma segura. Utilizará un conjunto de herramientas estándar de línea de comandos de Linux: df, du, find y truncate. Al finalizar este laboratorio, tendrá confianza en su capacidad para manejar emergencias básicas de espacio en disco.

Verificar el Uso del Disco

En este paso, comenzará su investigación obteniendo una visión general del uso del espacio en disco en todos los sistemas de archivos montados. La mejor herramienta para este trabajo es el comando df (disk free - espacio libre en disco).

El comando df informa sobre la cantidad de espacio en disco utilizado y disponible en los sistemas de archivos. Usarlo con la opción -h (human-readable - legible por humanos) hace que la salida sea mucho más fácil de leer al mostrar los tamaños en potencias de 1024 (por ejemplo, Kilobytes, Megabytes, Gigabytes).

Ejecute el siguiente comando en su terminal para verificar el uso actual del disco:

df -h

Verá una salida similar a esta. Preste mucha atención a la columna Use% (Porcentaje de Uso), especialmente para el sistema de archivos raíz, que está montado en /. Un porcentaje alto aquí indica un problema potencial.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        40G   38.5G  1.5G  96% /
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs          1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vdb1        20G  1.2G   19G   6% /home/labex/project
...

A partir de la salida del ejemplo, puede ver que el sistema de archivos raíz (/dev/vda3, montado en /) está al 96% de su capacidad. Esto confirma que hay un problema de espacio en disco que debe abordarse.

Encontrar Archivos Grandes

En este paso, después de identificar que el disco se está llenando, su siguiente tarea es averiguar qué directorios están consumiendo más espacio. El comando du (disk usage - uso de disco) es perfecto para esto. Estima el uso del espacio en disco de los archivos.

Usaremos du con las siguientes opciones:

  • -s: (summarize - resumir) para mostrar solo un total para cada argumento.
  • -h: (human-readable - legible por humanos) para imprimir los tamaños en un formato más legible (por ejemplo, 1K, 234M, 2G).

Vamos a comprobar el tamaño del contenido dentro de su directorio project. Su directorio de trabajo actual es ~/project, por lo que puede usar una ruta relativa.

Ejecute el siguiente comando para ver el tamaño de cada archivo y subdirectorio en el directorio ~/project:

du -sh ~/project/*

El comando producirá una salida que muestra el tamaño de cada elemento. Debería ver el archivo grande que se creó durante la configuración del laboratorio.

3.0G /home/labex/project/large_data_archive.dat

Esta salida le indica que un archivo llamado large_data_archive.dat dentro de su directorio de proyecto está ocupando 3.0GB de espacio. Si bien esta es una fuente de consumo de espacio, la salida de df del paso anterior sugirió un problema mayor, que podría estar ubicado fuera del directorio home.

Localizar Archivos de Registro (Log) Grandes

En este paso, investigará otra causa común de problemas de espacio en disco: los archivos de registro (logs) grandes. Los registros del sistema y de las aplicaciones a menudo se almacenan en el directorio /var/log. Si no se gestionan adecuadamente, estos archivos pueden crecer indefinidamente.

El comando find es una utilidad potente para buscar archivos y directorios. Puede usarlo para localizar archivos basándose en varios criterios, como el nombre, el tipo y el tamaño.

Usaremos find para buscar cualquier archivo (-type f) en el directorio /var/log que sea mayor de 10 Megabytes (-size +10M). Dado que el directorio /var/log es propiedad del usuario root, deberá usar sudo para otorgar privilegios administrativos para que el comando pueda inspeccionar todos los archivos.

Ejecute el siguiente comando en su terminal:

sudo find /var/log -type f -size +10M

El comando escaneará el directorio especificado e imprimirá la ruta de cualquier archivo que coincida con los criterios. Su salida podría mostrar más de un archivo.

/var/log/syslog
/var/log/journal/deaaf690a67544aaaa83c02167a202c6/user-6000@0005fc8f16f7df1a-7ea5bde2c8c33f92.journal~

La salida muestra claramente que /var/log/syslog es mayor de 10MB. Aunque también pueden estar presentes otros archivos grandes como los registros de journal, nos centraremos en syslog para este ejercicio. Ahora ha identificado un archivo de registro específico y grande que está contribuyendo al problema de espacio en disco.

Limpiar un Archivo de Registro (Log)

En este paso, ahora que ha identificado un archivo de registro grande, necesita liberar el espacio que está consumiendo. Simplemente eliminar el archivo con rm a veces puede causar problemas si un servicio está escribiendo activamente en él. Un método más seguro es vaciar el contenido del archivo sin eliminar el archivo en sí.

El comando truncate está diseñado para este propósito. Puede reducir o extender el tamaño de un archivo a un tamaño especificado. Al establecer el tamaño en cero, efectivamente vacía el archivo.

Usará truncate con la opción -s 0, que establece el tamaño del archivo en 0 bytes. De nuevo, necesitará sudo porque está modificando un archivo del sistema.

Ejecute el comando a continuación para borrar el contenido de syslog:

sudo truncate -s 0 /var/log/syslog

Un comando truncate exitoso no produce ninguna salida. Para verificar que funcionó, puede usar el comando ls -lh para comprobar el nuevo tamaño del archivo.

ls -lh /var/log/syslog

La salida ahora debería mostrar el tamaño del archivo como 0.

-rw-r----- 1 syslog adm 0 Oct 22 15:31 /var/log/syslog

Ha limpiado el archivo de registro grande de manera exitosa y segura, liberando espacio en disco.

Verificar la Solución

En este paso, realizará la acción final y más importante: verificar que sus esfuerzos han resuelto el problema de espacio en disco. Usará el comando df -h nuevamente, tal como lo hizo en el primer paso.

Al comparar la nueva salida con la original, puede confirmar que se ha liberado espacio en disco.

Ejecute el comando df -h una vez más:

df -h

Debería ver una salida donde el Use% (Porcentaje de Uso) para el sistema de archivos raíz (/) es menor que en el Paso 1.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        40G   37G  3.0G  92% /
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs          1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vdb1        20G  1.2G   19G   6% /home/labex/project
...

El uso ha bajado del 96% al 92%, lo que confirma que truncar el archivo de registro funcionó. Para completar la limpieza, también puede eliminar el archivo de datos grande que encontró en su directorio de proyecto.

rm ~/project/large_data_archive.dat

Ahora, ejecute df -h por última vez para ver el resultado final de todas sus acciones de limpieza. El espacio disponible debería haber aumentado aún más. Esto confirma que ha diagnosticado y resuelto con éxito el problema de espacio en disco.

Resumen

¡Felicidades por completar el laboratorio! Ha diagnosticado y resuelto con éxito un problema común de espacio en disco en un sistema Linux.

En este laboratorio, aprendió un flujo de trabajo práctico, paso a paso:

  1. Utilizó df -h para obtener una visión general del uso del disco y confirmar un problema.
  2. Utilizó du -sh para inspeccionar el tamaño de directorios específicos e identificar archivos grandes.
  3. Utilizó find para buscar archivos basándose en criterios específicos, como el tamaño, para localizar archivos de registro grandes.
  4. Aprendió a usar truncate -s 0 como una forma segura de vaciar un archivo sin eliminarlo.
  5. Finalmente, verificó su solución volviendo a ejecutar df -h para ver el espacio recuperado.

Estos comandos son herramientas esenciales para cualquier usuario de Linux o administrador de sistemas. Con este conocimiento, ahora está mejor preparado para mantener sus sistemas funcionando sin problemas.