Solución 1:
Eliminar el nombre del archivo en realidad no elimina el archivo. Algún otro proceso mantiene abierto el archivo, lo que hace que no se elimine; reinicie o elimine ese proceso para liberar el archivo.
Usar
lsof +L1
para averiguar qué proceso está utilizando un archivo eliminado (desvinculado).
Solución 2:
como menciona Ignacio, eliminar el archivo no liberará el espacio hasta que elimine los procesos que tienen identificadores abiertos contra ese archivo.
Sin embargo, puede recuperar el espacio sin matar los procesos. Todo lo que necesita hacer es eliminar los descriptores de archivo.
Primero ejecute lsof | grep eliminado para identificar el proceso que contiene el archivo
[[email protected] log]$ /usr/sbin/lsof |grep deleted
java 8859 hudson 1w REG 253,0 3662503356 7578206 /crucible/data/current/var/log/fisheye.out (deleted)
Luego ejecuta:
cd /proc/PID/fd
entonces
[[email protected] fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb 7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)
El "1" será el descriptor del archivo. Ahora escriba "> FD" para recuperar ese espacio
> 1
Es posible que deba repetir la operación si hay otros procesos que contienen el archivo.
Solución 3:
Una posibilidad es que los archivos que eliminó tengan más referencias en el sistema de archivos. Si ha creado enlaces fijos, varios nombres de archivo apuntarán a los mismos datos, y los datos (los contenidos reales) no se marcarán como gratuitos/utilizables hasta que se eliminen todas las referencias a ellos. Antes de eliminar archivos, escríbalos (Entrada llamada Enlaces) o haga ls -l en ellos (debe ser la segunda columna).
Si resulta que se hace referencia a los archivos en otro lugar, supongo que tendrá que usar ls -i en los archivos para encontrar el número de inodo, y luego hacer una búsqueda con -inum
Solución 4:
Si la partición se configuró para reservar cierta porción de espacio en disco solo para uso de raíz, df
no incluirá este espacio como disponible.
[[email protected]]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/optvol 625G 607G 0 100% /opt
...
Incluso después de recuperar el espacio mediante la eliminación de archivos/directorios, el usuario que no sea root no podrá escribir en una partición en particular.
Puede verificar fácilmente si ese es su caso al intentar crear un archivo en un dispositivo como usuario root y no root.
Además, puede verificar la configuración del sistema de archivos ejecutando
tune2fs -l <device> | egrep "Block count|Reserved block count
y calcular el % real por su cuenta.
Para cambiar el porcentaje de disco reservado para uso exclusivo de raíz, ejecute
tune2fs -m <percentage> <device>
Solución 5:
El archivo aún está bloqueado por el proceso de apertura. Para liberar espacio, sigue estos pasos:
-
Ejecutar
sudo lsof | grep deleted
y ver qué proceso contiene el archivo. Resultado de ejemplo:$ sudo lsof | grep deleted COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted)
-
Mata el proceso usando
sudo kill -9 {PID}
. En el ejemplo anterior, el PID es 1623.$ sudo kill -9 1623
-
Ejecute
df
para comprobar si el espacio ya está liberado. Si aún está lleno, tal vez deba esperar unos segundos y volver a verificar.