Tengo servidores de archivos que se utilizan para almacenar archivos. Los archivos pueden residir allí durante una semana o un año. Desafortunadamente, cuando elimino archivos del servidor, el df
comando no refleja el espacio liberado. Finalmente, el servidor se llena ( df
muestra el 99%) y mi script no envía más archivos allí, excepto que puede haber unas pocas docenas de GB de espacio libre allí.
Tengo noatime
bandera en las particiones montadas si eso hace alguna diferencia.
linux
filesystems
disk-space-utilization
Aminah Nuraini
fuente
fuente
Respuestas:
Eliminar el nombre de archivo en realidad no elimina el archivo. Algún otro proceso mantiene el archivo abierto, lo que hace que no se elimine; reinicie o elimine ese proceso para liberar el archivo.
Utilizar
para averiguar qué proceso está utilizando un archivo eliminado (no vinculado).
fuente
Como menciona Ignacio, eliminar el archivo no liberará espacio hasta que elimine los procesos que tienen identificadores abiertos para ese archivo.
Sin embargo, puede reclamar 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
Luego ejecuta:
entonces
El "1" será el descriptor del archivo. Ahora escriba "> FD" para reclamar ese espacio
Es posible que deba repetir la operación si hay otros procesos que contienen el archivo.
fuente
> FD
hacer?>
comando tiene un nombre? Tuve que cambiar de zsh a bash para poder usarlo. ¿Es posible ejecutarlo en zsh?Una posibilidad es que los archivos que eliminó tengan más referencias en el sistema de archivos. Si ha creado enlaces duros, varios nombres de archivo apuntarán a los mismos datos, y los datos (el contenido real) no se marcarán como libres / utilizables hasta que se hayan eliminado todas las referencias. Antes de eliminar archivos, ya sea stat (Entrada denominada Enlaces) o haga ls -l en ellos (debe ser la segunda columna).
Si resulta que los archivos están referenciados en otra parte, supongo que tendrá que usar ls -i los archivos para encontrar el número de inodo, y luego hacer una búsqueda con -inum <número de número de nodo> para encontrar el otras referencias a ese archivo (probablemente también desee usar -mount para permanecer dentro del mismo sistema de archivos).
fuente
El archivo todavía está bloqueado por el proceso que lo abre. Para liberar espacio, siga estos pasos:
Ejecute
sudo lsof | grep deleted
y vea qué proceso contiene el archivo. Resultado de ejemplo:Mata el proceso usando
sudo kill -9 {PID}
. En la muestra anterior, el PID es 1623.Ejecute
df
para verificar si el espacio ya está liberado. Si todavía está lleno, tal vez necesite esperar unos segundos y verificar nuevamente.fuente
Si la partición ha sido configurada para reservar cierta porción de espacio en disco solo para uso raíz,
df
no incluirá este espacio disponible.Incluso después de que se recupere el espacio eliminando archivos / directorios, el usuario no root no podrá escribir en una partición 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
y calculando el% real por su cuenta.
Para cambiar el disco% reservado para uso exclusivo de root, ejecute
fuente
Las otras respuestas son correctas: si elimina un archivo y no se libera espacio, generalmente es porque el archivo todavía se mantiene abierto o hay otros enlaces duros.
Para ayudar en la resolución de problemas, use una herramienta que le indique dónde se está gastando el espacio en disco: puede usar
du
para obtener una descripción general de hacia dónde va el espacio. Aún mejor, use una herramienta gráfica como xdiskusage (hay muchas como esta) para cazar al culpable. xdiskusage y sus amigos te permiten profundizar en los cerdos espaciales más grandes para descubrir a dónde va el espacio.De esa manera, encontrará rápidamente archivos que aún ocupan espacio debido a un segundo enlace duro. También mostrará el espacio ocupado por archivos eliminados, pero abiertos (como (permiso denegado), creo, ya que no puede leer el nombre del archivo).
fuente
Como sé que muchos de ustedes están haciendo esto para redhat
/var
y descomprimir archivos esperando que el FS se reduzca, pero en cambio crece, solo asegúrese de mantener el reinicio de syslog. yte mostraría esto de todos modos.
fuente
Una opción más: el disco podría estar lleno debido a un proceso que crea datos continuamente: registros, núcleos y similares. Es posible que el espacio se esté liberando pero se llene de inmediato. De hecho, he visto un caso así.
df
en este caso simplemente no da la imagen del agujero. Usedu
para aprender más.fuente
Estoy usando EXT2, FSCK me ayudó en esta situación. Pruebe shudown -F ahora, después de algunos reinicios y fscks, veo espacio medio usado.
fuente
Para verificar qué archivos eliminados han ocupado la memoria, ingrese el comando
Mostrará los archivos eliminados que contienen memoria.
Luego mata el proceso con pid o name
compruebe ahora tendrá la misma memoria
Si no, escriba el comando a continuación para ver qué archivo está ocupando memoria
mencione cualquier tamaño, mostrará qué archivos están ocupando por encima del umbral y elimine el archivo, encontrará la memoria retenida
fuente
abra la terminal intente este comando df -Th luego use este comando sudo du -h --max-depth = 1 / en este comando encontrará detalles del uso del disco y luego abra como usuario root eliminar el archivo (root-local-share-trash) y borra tu archivo
fuente