J'avais un fichier sur un système de fichiers XFS dont la taille était d'environ 200 Go. Il s'agissait d'une image QCOW2 contenant un disque virtuel d'une machine virtuelle pilotée par KVM. Quelque chose a mal tourné (c'était peut-être un problème de qemu-kvm, je ne suis pas sûr), la machine virtuelle était tombée en panne et maintenant j'ai un fichier qui ressemble à ça:
191090708 -rwxr--r--. 1 root root 737571587400425984 Oct 10 10:03 973d10e0-a5e3-4a59-9f98-4b9b9f072ade
Ainsi, il occupe toujours 191090708 blocs, mais l' ls
affiche comme 656 pétaoctets.
De plus, j'ai un autre fichier avec la même pré-histoire, mais sur un autre système de fichiers (pas XFS, mais GFS2):
410855320 -rwxr--r--. 1 root root 7493992262336241664 Dec 13 2014 ac2cb28f-09ac-4ca0-bde1-471e0c7276a0
Il occupe 410855320 blocs, mais l' ls
affiche comme ~ 6,6 exaoctets.
Que pensez-vous, est-il sûr de supprimer ces fichiers? Merci!
PS C'est tellement bien d'avoir des instantanés pris régulièrement! :) Je ne sais pas ce que je ferais sans eux.
Réponses:
Je peux voir deux raisons possibles pour voir ces tailles de fichiers:
Les fichiers épars sont une fonctionnalité de certains systèmes de fichiers permettant de créer un fichier avec des trous. Aucun espace physique n'est alloué pour les trous. La lecture à travers les trous renverra des octets NUL tout le long.
Si la raison de ce que vous voyez est des fichiers clairsemés, il est aussi sûr de les supprimer qu'ils le seraient avec un fichier non clairsemé.
Si la raison de ce que vous voyez est une corruption du système de fichiers, il n'est pas sûr de supprimer les fichiers sans vérification du système de fichiers. Si un système de fichiers est corrompu d'une manière où plusieurs fichiers prétendent occuper le même espace, la suppression de l'un ou l'autre fichier entraînera la libération de ces blocs. Une fois ces blocs libérés réutilisés, la corruption s'aggrave.
Si vous avez vu d'autres symptômes vous faisant penser que le système de fichiers est peut-être corrompu, vous devez forcer une vérification complète du système de fichiers avant de supprimer les fichiers.
S'il n'y a aucune preuve suggérant que le système de fichiers est corrompu et que les fichiers semblent clairsemés, je supprimerais simplement les fichiers une fois que je n'en aurais plus besoin.
la source
Le problème est la façon dont vous calculez la taille d'un fichier.
Dans un sens, c'est le décalage du dernier octet (comme ls). L'autre façon consiste à additionner les blocs réellement alloués (comme du).
Ce que vous voyez si c'est probablement un fichier avec des données écrites avec un très grand décalage. Cela signifie que la majeure partie de l'espace d'adressage de votre fichier n'est pas allouée. Mais vous pouvez toujours le lire.
la source