Actualización del tamaño libre del disco sin reiniciar el host

23

Yo uso RHEL4 con LVM2 en él. A veces, incluso después de eliminar archivos grandes de más de un GB, el tamaño de la partición no se actualiza cuando se usa el dfcomando.

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

Pero cuando verifico usando du, muestra el tamaño adecuado

-bash-3.00$ sudo du -sh /var/
 179M   /var/

puede ver allí que la salida df muestra que la partición / var se utilizará en 3.6Gb, pero el du muestra que solo son 179Mb.

Ahora el problema es que ni sync ni partprobe no están actualizando la información. Pero seguramente reiniciar el host resolverá el problema. Pero como se trata de un servidor de producción, no puedo reiniciarlo. ¿Hay alguna forma de actualizar la información del disco manualmente sin reiniciar el host?

Kannan Mohan
fuente
1
Probablemente haya abierto archivos borrados (es decir, procesos que están reteniendo archivos borrados). Intenta algo como lsofaveriguarlo. Usado / disponible no se almacena en la tabla de particiones, partprobe (o cualquier tipo de relectura de partición) no ayudará en absoluto.
Mat

Respuestas:

28

Cuando un archivo se elimina / elimina / desvincula, si algún proceso todavía lo mantiene abierto, solo se borra la entrada del directorio del archivo, no los datos del archivo. Cuando el archivo está completamente cerrado por todos los procesos, los datos se devuelven al grupo de espacio libre. Es una característica ya que puede tener archivos anónimos de esta manera.

Para ver si tiene algún archivo borrado abierto en un sistema de archivos, ejecute uno de estos comandos, donde /mount/pointestá el punto de montaje ( /varen su caso):

lsof +L1 /mount/point

Este artículo sobre archivos abiertos no vinculados debería ayudar a explicar esto un poco más.

Nuno Pereira
fuente
2
Estaba borrando registros pero dfno mostraba ningún espacio liberado hasta que reinicié los procesos del servidor. ¡Gracias!
fet
Mejor llame a lsof con 'lsof + L1' que muestra los archivos eliminados. Hizo una sugerencia de edición
Nuno Pereira
Entonces, ¿cómo cerrarlos?
faressoft