
Tengo una extraña discrepancia. Con "df" veo que mi disco raíz usa casi 229G.
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/dm-2 241G 229G 13G 96% /
pero "du" me dice que sólo tengo unos 12 GB (redondeados) en uso.
# du -sh /* | grep G
3.2G /run
2.1G /usr
6.0G /var
Ambos comandos se ejecutaron como root. Lo que puedo imaginar es que hay datos "ocultos" en un directorio donde ahora está montado un recurso compartido NFS. Si este es el caso. ¿Cómo puedo saber qué archivos están "ocultos"? ¿O tienes otras ideas de por qué esos números son tan diferentes?
Respuesta1
Probablemente tengas una aplicación/proceso que tenga ese archivo abierto. Cuando elimina un archivo que una aplicación mantiene abierto, el sistema operativo aún ve el tamaño del archivo en df ya que el archivo todavía está abierto en la memoria.
Aquí hay documentación que escribí para un compañero de trabajo y que debería brindarle lo que necesita.
Truncar archivos abiertos grandes
Ha eliminado archivos para liberar espacio, pero el espacio no queda libre después. Ahora df -lah y du -lah muestran diferentes tamaños
Utilice LSOF para eliminar archivos pero retenidos
lsof |grep deleted
Esto mostrará todos los archivos eliminados pero que una aplicación mantiene abiertos.
java 2943 gateway 410w REG 253,3 50482102 139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java 2943 gateway 411w REG 253,3 46217973 139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java 2943 gateway 412w REG 253,3 50483894 139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)
Puede reiniciar la aplicación para desbloquear archivos o truncarlos.
Para truncar los archivos, tendrá que mirar el resultado anterior para obtener el PID y el fd (número de descriptor de archivo).
truncar el archivo con
echo > /proc/PID/fd/fd_number
Ejemplo: para poner a cero el tamaño de archivo de los tres enumerados anteriormente, emitiría lo siguiente
echo > /proc/2943/fd/410
echo > /proc/2943/fd/411
echo > /proc/2943/fd/412
si tienes muchos para truncar bash al rescate.
for n in {410..412}; do 'echo > /proc/2943/fd/$n'; done;
df -lah debería mostrar espacio libre ahora PERO los archivos se mostrarán en lsof |grep eliminados pero tendrán un tamaño de 1
java 2943 gateway 410w REG 253,3 1 139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java 2943 gateway 411w REG 253,3 1 139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java 2943 gateway 412w REG 253,3 1 139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)
Los descriptores de archivos se publicarán en el próximo reinicio o reinicio/recarga de la aplicación que abrió los archivos.
Por supuesto, tendrás que ajustar tus comandos para que coincidan con la salida de tus archivos bloqueados.
Respuesta2
En mi caso (y me ayudaste en un MP diciéndome lo mismo) fue un problema de overmount. Tenía algunos datos en un directorio de la partición, que du
no podía ver porque un montaje los había ocultado.
Así que intentadesmontar todos los soportesy busque datos en los directorios restantes.
¡Que lo pases bien y gracias!