Taille de fichier très étrange (plus de 600 PB) sur un petit système de fichiers

21

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' lsaffiche 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' lsaffiche 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.

Volodymyr Melnyk
la source
Merci beaucoup pour vos réponses. Bien sûr, je connais les fichiers rares, mais la question la plus importante pour moi est la suivante: est-il sûr de supprimer ces fichiers? Comme je le vois maintenant, il y a une chance de perdre des données si les systèmes de fichiers sont corrompus. Je ne peux pas être sûr que les systèmes de fichiers sont corrects, car il n'est pas souhaitable de les démonter et de les vérifier, mais la première occurrence s'est produite il y a 4 mois, la seconde - 14 mois, donc j'espère que je verrais qu'il y avait un système de fichiers la corruption s'il y en avait. Qu'est-ce que tu penses?
Volodymyr Melnyk

Réponses:

31

Je peux voir deux raisons possibles pour voir ces tailles de fichiers:

  • Fichiers épars
  • Corruption du système 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.

kasperd
la source
6

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.

François
la source
Merci. Que pensez-vous, ne plantera-t-il rien si je supprime simplement ces fichiers?
Volodymyr Melnyk
1
Google "fichier clairsemé" pour plus de détails.
Kondybas