Guía para solucionar el problema "la partición root (/) está llena"

Actualizado el 17 de octubre, 2016. Por BlueHosting.

En Linux, la partición root —o partición raíz— es la partición donde se instala la base del sistema operativo. También se conoce como slash, barra o /. Cualquier otro archivo dentro del sistema debe estar ubicado en un subdirectorio de esta ubicación, y cualquier archivo de usuario debería estar ubicado en un subdirectorio de /home. Cuando la partición root está cerca de alcanzar su capacidad máxima pueden ocurrir varios problemas en su servidor que no son fáciles de identificar. En este tutorial le explicamos cómo identificar y solucionar este problema.

Síntomas

Algunos de los siguientes síntomas podrían estar relacionados con este problema:

  • El sistema está inestable;
  • No se puede reiniciar el servidor Apache;
  • El servidor de correo electrónico no puede descargar correos;
  • Es imposible instalar actualizaciones o software nuevo.

Identificación del problema

Ingrese a su servidor a través de SSH y compruebe su uso de disco con el siguiente comando:

df -h

Un resultado normal lucirá como lo siguiente:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        15G  894M   13G   7% /
tmpfs           250M     0  250M   0% /dev/shm

O si está utilizando Webmin visite:

  • Con SSL: https://nsXXXXXXX.ip-XXX-XXX-XXX.net:10000/fdisk/
  • Sin SSL: http://nsXXXXXXX.ip-XXX-XXX-XXX.net:10000/fdisk/

Nota: recuerde sustituir el valor de nsXXXXXXX.ip-XXX-XXX-XXX.net con el hostname real de su servidor.

Verifique el porcentaje de uso de su partición root, si el mismo está en el orden del 80%, entonces su partición se está quedando sin espacio. Si el espacio está por encima del 90% el problema es crítico y debe solucionarlo lo más pronto posible.

Causas

Hay muchas causas para este problema, entre las más comunes:

— está haciendo un respaldo de sus sitios en otro directorio distinto al subdirectorio /home;
— hay archivos grandes extraídos en el directorio /;
— hay software masivo (como servidores para juegos en línea) instalado en un directorio perteneciente a la partición del sistema como /usr;
— está experimentando el bug de mod_gzip;
— hay un desbordamiento en la cola de correos electrónicos;
— hay acumulación de archivos log antiguos.

Soluciones

A continuación exploramos algunas soluciones que le pueden ayudar a resolver el problema:

Eliminar archivos para disminuir el porcentaje de almacenamiento

Para los primeros dos casos, solo es necesario mover los archivos y directorios en el subdirectorio /home.

Primero, debemos hallar los archivos muy pesados que necesiten ser movidos a otra ubicación. Para esto puede utilizar el comando du.

A continuación algunos ejemplos del uso de du:

  • Digamos que queremos ver una lista de los archivos en el directorio root:

    ls
    a.log  b.log  c.log  d.log
    
  • Si usamos únicamente el comando du obtendremos el espacio total que ocupan estos archivos en el directorio (sin ningún formato legible):

    du
    3411980 .
    
  • Al agregar el parámetro -chs obtenemos un formato un poco más legible:

    du -chs
    3.3G    .
    3.3G    total
    
  • Si además agregamos el comodín * se mostrará el espacio total que ocupa cada archivo en un formato legible:

    du -chs *
    2.0M    a.log
    30M     b.log
    301M    c.log
    3.0G    d.log
    3.3G    total
    
  • Otra opción para hallar el archivo más grande en un directorio es ejecutar el siguiente comando:

    ls -lh --sort=size | head -n 5
    

    El resultado se asemejará a lo siguiente:

    total 239.9M
    -rwxr-xr-x  1 root root 85.2M Sep 22  2015 archivo1
    -rwxr-xr-x  1 root root 82.7M Jul 23  2016 archivo2
    -rwxr-xr-x  1 root root 37M Jul 23  2016 archivo3
    -rwxr-xr-x  1 root root 35M Nov 10  2016 archivo4
    

Del comando anterior podemos notar que hay 239.9 MB en el directorio actual (no se toman en cuenta los subdirectorios). El archivo más grande dentro de este directorio es el archivo1. Pesa 85,2 MB.

Si este no es un archivo importante —por ejemplo: un log muy antiguo— puede eliminarlo utilizando:

rm archivo1

Nota: utilice este comando con cuidado, una vez eliminado el archivo no hay forma de recuperarlo. Tenga especial cuidado si se trata de un archivo del sistema ya que podría dañar completamente su instalación de Linux.

También puede revisar el directorio /root en busca de archivos grandes con la extensión .rpm o .tar.gz (archivos de programas instalados). No es necesario ni obligatorio conservar estos archivos, por lo tanto, puede eliminarlos o moverlos a un directorio en /home para almacenarlos. Llevemos a cabo la segunda opción (desde el directorio /root):

mkdir /home/archivos
mv *.tar.gz *.rpm /home/archivos

Descargar el peso de software masivo

Hay software que almacenan archivos muy pesados. Por ejemplo, el servidor HLDS (Half-Life Dedicated Server) se instala en /usr/local/game/hlds. Este directorio está en la partición del sistema, por lo tanto debe moverlo al directorio /home y crear un enlace simbólico para que la ubicación siga siendo válida.

Nota: si usted tiene un servidor HLDS, debe detener su funcionamiento antes de ejecutar los siguientes pasos.

Ejecute lo siguiente:

mv /usr/local/game/hlds /home/
ln -s /home/hlds /usr/local/game/hlds

Bug de mod_gzip

Es posible que el módulo mod_gzip no esté borrando los archivos temporales ubicados en /tmp y que estos estén alcanzando un tamaño importante (en el orden de los GB). Para liberar este directorio:

  1. Enumere los archivos en dicho directorio:

    ls -l /tmp/*.wrk
    -rwx------ 1 nobody nobody 53695415 sep 30 00:10 _11831_132_33.wrk
    -rwx------ 1 nobody nobody 0 sep 3 00:10 _12954_120_21.wrk
    -rwx------ 1 nobody nobody 0 sep 7 00:10 _14733_110_11.wrk
    -rwx------ 1 nobody nobody 0 sep 21 00:10 _16191_106_7.wrk
    -rwx------ 1 nobody nobody 0 aoû 19 00:10 _16585_123_24.wrk
    -rwx------ 1 nobody nobody 0 aoû 25 00:10 _16693_152_53.wrk
    -rwx------ 1 nobody nobody 0 oct 5 00:10 _17282_110_11.wrk
    -rwx------ 1 nobody nobody 0 sep 14 00:10 _17792_106_7.wrk
    -rwx------ 1 nobody nobody 0 oct 7 00:10 _18056_108_9.wrk
    
  2. Para borrarlos utilice:

    rm -rf /tmp/*.wrk
    
  3. Este es un bug conocido, pero su origen no lo es. Por el momento, la única solución para evitarlo es desactivar el mod_gzip dentro del archivo de configuración de apache (httpd.conf). Busque la siguiente línea:

    mod_gzip yes
    

Y remplace el valor yes, por no. Luego reinicie el servidor Apache para que los cambios surtan efecto:

    /etc/init.d/httpd restart

Este bug solo ocurre con algunos sitios (debido probablemente a un script PHP o CGI).

Recursos adicionales

Por favor consulte los siguientes recursos en busca de información que complemente nuestra guía. Recuerde que no podemos certificar la actualidad o precisión de contenidos externos.

  • Para más información del comando du, visite el siguiente manual de Linux.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...