Dos cosas podrían estar sucediendo aquí.
Primero , su sistema de archivos ha reservado algo de espacio que solo root
puede escribir, para que el proceso crítico del sistema no se caiga cuando los usuarios normales se queden sin espacio en disco. Es por eso que ves 124G de 130G usados, pero cero disponibles. Quizás los archivos que eliminó redujeron la utilización hasta este punto, pero no por debajo del umbral para los usuarios normales.
Si esta es tu situación y estás desesperado, puedes modificar la cantidad de espacio reservado para root
. Para reducirlo al 1 % (el valor predeterminado es el 5 %), su comando sería
# tune2fs -m 1 /dev/sda3
Segundo , el sistema operativo no liberará espacio en disco para los archivos eliminados que todavía están abiertos. Si eliminó (digamos) uno de los archivos de registro de Apache, deberá reiniciar Apache para liberar espacio.
Si elimina un archivo que está siendo utilizado por un proceso, ya no podrá ver el archivo por ls
. El proceso aún está escribiendo en ese archivo hasta que detenga el proceso.
Para ver esos archivos eliminados, simplemente ejecute lsof|grep delete
Otras 2 formas de hacer que el disco esté lleno problema:
1) oculto bajo un punto de montaje: Linux mostrará un disco lleno con archivos "ocultos" bajo un punto de montaje. Si tiene datos escritos en el disco y monta otro sistema de archivos sobre él, Linux toma nota correctamente del uso del disco aunque no pueda ver los archivos debajo del punto de montaje. Si tiene montajes nfs, intente desmontarlos y verifique si se escribió algo accidentalmente en esos directorios antes del montaje.
2) archivos corruptos: Veo esto ocasionalmente en la transferencia de archivos de Windows a Linux a través de SMB. Un archivo no puede cerrar el descriptor de archivo y termina con un archivo de basura de 4GB.
Esto puede ser más tedioso de arreglar, porque necesita encontrar el subdirectorio en el que se encuentra el archivo, pero es fácil de arreglar porque el archivo en sí es fácilmente extraíble. Yo uso el du
comando y haga una lista de los subdirectorios raíz para averiguar dónde se está utilizando el espacio de archivos.
cd /
du -sh ./*
El número de directorios de nivel superior suele ser limitado, por lo que configuro el legible para humanos bandera -h
para ver qué subdirectorio es el acaparador de espacio.
Luego, ingresa al niño problemático y repite el proceso para todos los elementos que contiene. Para facilitar la detección de elementos grandes, cambiamos el du ligeramente y lo combinamos con una ordenación.
cd /<suspiciously large dir>
du -s ./* | sort -n
que produce una salida de menor a mayor por tamaño de byte para todos los archivos y directorios
4 ./bin
462220 ./Documents
578899 ./Downloads
5788998769 ./Grocery List
Una vez que detecte el archivo de gran tamaño, generalmente puede eliminarlo.