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 ls
muestra 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 ls
muestra 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.
Respuestas:
Puedo ver dos posibles razones para que veas esos tamaños de archivo:
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.
fuente
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.
fuente