Pregunta

Recientemente me quedé sin espacio en disco en una unidad de un servidor FreeBSD.Trunqué el archivo que estaba causando problemas pero no veo el cambio reflejado al ejecutar df.cuando corro du -d0 en la partición muestra el valor correcto.¿Hay alguna forma de forzar la actualización de esta información?¿Qué está causando que el resultado aquí sea diferente?

¿Fue útil?

Solución

Esto probablemente se centra en cómo truncaste el archivo. du y df informar cosas diferentes como esta publicación en unix.com explica.El hecho de que no se utilice el espacio no significa necesariamente que sea gratuito...

Otros consejos

En BSD, una entrada de directorio es simplemente una de las muchas referencias a los datos del archivo subyacente (llamado inodo).Cuando se elimina un archivo con el comando rm(1) solo se reduce el recuento de referencias.Si el recuento de referencia sigue siendo positivo (p. ej.el archivo tiene otras entradas de directorio debido a enlaces simbólicos), entonces los datos del archivo subyacente no se eliminan.

Los usuarios más nuevos de BSD a menudo no se dan cuenta de que un programa que tiene un archivo abierto también contiene una referencia.Esto evita que los datos del archivo subyacente desaparezcan mientras el proceso los utiliza.Cuando el proceso cierra el archivo, si el recuento de referencias cae a cero, el espacio del archivo se marca como disponible.Este esquema se utiliza para evitar los problemas de tipo Microsoft Windows en los que no le permite eliminar un archivo porque algún programa no especificado todavía lo tiene abierto.

Una manera fácil de observar esto es hacer lo siguiente

cp /bin/cat /tmp/cat-test
/tmp/cat-test &
rm /tmp/cat-test

Hasta que finalice el proceso en segundo plano, el espacio de archivos utilizado por /tmp/cat-test permanecerá asignado y no disponible según lo informado por df(1), pero el comando du(1) no podrá contabilizarlo porque ya no tiene un Nombre del archivo.

Tenga en cuenta que si el sistema falla sin que el proceso cierre el archivo, los datos del archivo seguirán presentes pero sin referencia, será necesaria una ejecución de fsck(8) para recuperar el espacio del sistema de archivos.

Los procesos que mantienen abiertos los archivos son una de las razones por las que el comando newsyslog(8) envía señales a syslogd u otros programas de registro para informarles que deben cerrar y volver a abrir sus archivos de registro después de haberlos rotado.

Las actualizaciones suaves también pueden afectar el espacio libre del sistema de archivos, ya que la recuperación real del espacio de inodo se puede aplazar;El comando sync(8) se puede utilizar para que esto suceda antes.

¿Funciona df --sync?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top