Tamaño de archivo muy extraño (más de 600 PB) en un sistema de archivos pequeño


21

Tenía un archivo en un sistema de archivos XFS cuyo tamaño era de unos 200 GB. Era una imagen QCOW2 que contenía un disco virtual de una máquina virtual impulsada por KVM. Algo salió mal (tal vez fue una falla de qemu-kvm, no estoy seguro), la máquina virtual se había bloqueado y ahora tengo un archivo que se ve así:

191090708 -rwxr--r--. 1 root root 737571587400425984 Oct 10 10:03 973d10e0-a5e3-4a59-9f98-4b9b9f072ade

Entonces, todavía ocupa 191090708 bloques, pero lo lsmuestra como 656 petabytes.

Además, tengo otro archivo con el mismo historial previo, pero en otro sistema de archivos (no XFS, sino GFS2):

410855320 -rwxr--r--. 1 root root 7493992262336241664 Dec 13  2014 ac2cb28f-09ac-4ca0-bde1-471e0c7276a0

Ocupa 410855320 bloques, pero lo lsmuestra como ~ 6.6 exabytes.

¿Qué crees que es seguro eliminar estos archivos? ¡Gracias!

PD: ¡Es muy bueno tomar instantáneas regularmente! :) No sé qué haría sin ellos.


Muchas gracias por tus respuestas. Por supuesto, sé sobre archivos dispersos, pero la pregunta más importante para mí es la siguiente: ¿es seguro eliminar estos archivos? Como veo ahora, existe la posibilidad de perder algunos datos si los sistemas de archivos están dañados. No puedo estar seguro de que los sistemas de archivos estén bien, porque no es deseable desmontarlos y verificarlos, pero la primera ocurrencia ocurrió hace 4 meses, la segunda - hace 14 meses, así que espero ver que haya algún sistema de archivos corrupción si hubiera alguna. ¿Qué piensas?
Volodymyr Melnyk

Respuestas:


31

Puedo ver dos posibles razones para que veas esos tamaños de archivo:

  • Archivos dispersos
  • Corrupción del sistema de archivos

Los archivos dispersos son una característica en algunos sistemas de archivos mediante los cuales puede crear un archivo con agujeros. No se asigna espacio físico para los agujeros. Leer a través de los agujeros devolverá bytes NUL por completo.

Si la razón de lo que está viendo son archivos dispersos, entonces es tan seguro eliminarlos como lo sería con un archivo no disperso.

Si la razón de lo que está viendo es la corrupción del sistema de archivos, entonces no es seguro eliminar los archivos sin una verificación del sistema de archivos. Si un sistema de archivos está dañado de una manera en la que varios archivos afirman estar ocupando el mismo espacio, eliminar cualquiera de los archivos provocaría la liberación de esos bloques. Una vez que esos bloques liberados se reutilizan, la corrupción empeora.

Si ha visto algún otro síntoma que le hace pensar que el sistema de archivos puede estar dañado, debe forzar una verificación completa del sistema de archivos antes de eliminar los archivos.

Si no hay evidencia que sugiera que el sistema de archivos está dañado, y los archivos parecen ser escasos, simplemente eliminaría los archivos una vez que ya no los necesite.


6

El problema es la forma en que calcula el tamaño de un archivo.

Una forma es mirar el desplazamiento del último byte (como ls). La otra forma es sumar bloques realmente asignados (como du).

Lo que ve si es probable que sea un archivo con datos escritos con un desplazamiento muy grande. Lo que significa que las partes principales de su espacio de direcciones de archivo no están asignadas. Pero aún puedes leerlo.


Gracias. ¿Qué crees que no se bloqueará si elimino estos archivos?
Volodymyr Melnyk

1
Google "archivo disperso" para más detalles.
Kondybas
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.