Comment la taille d'un fichier sur le disque peut-elle être égale à 0 octet si elle contient des données?

106

J'ai un fichier dans Windows 10 avec 362 octets de données, mais la "taille sur le disque" n'est que de 0 octet. C'est un simple programme "Hello world" écrit en assembleur et enregistré dans Notepad ++ .

Comment est-il possible que la taille sur le disque soit égale à zéro alors que la taille du fichier est de 362 octets?

J'ai un SSD, pas un disque dur normal.

Capture d'écran de la boîte de dialogue Propriétés:

Capture d'écran de la boîte de dialogue Propriétés

Coder88
la source
4
Réponse courte: Si aucun espace supplémentaire sur le disque n'est nécessaire pour stocker son contenu.
David Schwartz
11
@Thomas Pas un doublon. Le nom sonne de manière similaire, mais cette question demande pourquoi Windows déclare qu'un fichier de zéro octet est de taille zéro bien qu'il soit nécessaire de s'enregistrer quelque part. Cette question demande pourquoi la taille sur le disque peut être nulle même s'il y a des données dans le fichier.
Ben N
@BenN Le signale comme étant inapproprié parce que vous avez raison, ce n'est certainement pas un doublon.
William
Bonjour Coder88, Je pense que la personne qui a signalé votre poste comme un doublon s’est trompée. L’autre question visait à poser une question différente. vous avez vraiment posé une bonne question. Si vous vouliez indiquer que votre question est résolue, vous pouvez cliquer sur la coche à côté d'une réponse ici.
Ben N

Réponses:

155

Cela se produit si le fichier est si petit que son contenu et la comptabilité du système de fichiers tiennent dans 1 Ko. Pour économiser de l'espace disque, NTFS conserve les petits fichiers "résidents", stockant leur contenu directement dans l'enregistrement de fichier, de sorte qu'aucun cluster ne doit être alloué pour cela. Par conséquent, la taille sur le disque est zéro car il n'y a rien au-delà de l'enregistrement de fichier. Lorsque le fichier est suffisamment volumineux, NTFS le "rend non résident", lui attribue un ou plusieurs clusters (créant une "taille sur disque" non nulle) et crée une "paire de mappage" dans l'enregistrement de fichier à la place des données. pointez sur le cluster.

Les disques durs SSD ou Windows 10 n'affectent pas cela; c'est simplement une fonctionnalité NTFS. Pour en savoir plus: Les quatre étapes de la croissance du fichier NTFS .

Notez que la métrique "taille sur le disque" n'est pas tout à fait correcte. Par exemple, il n'inclut jamais la constante de 1 Ko que prend l'enregistrement de fichier NTFS. La métrique a été introduite dans Windows 95, qui n'utilisait pas NTFS et ne pouvait donc pas expliquer ce phénomène. il montrait simplement la taille du fichier arrondie au multiple suivant de la taille du cluster. Cet algorithme d'estimation a été appliqué à Windows 7, même si de nombreuses versions de Windows utilisaient entre elles le stockage NTFS et le stockage résident. Il a finalement été mis à jour dans Windows 8 pour compter les fichiers contenant uniquement des données résidentes comme étant de taille zéro sur le disque. Pour en savoir plus: Qu'est-ce que la «taille sur le disque»?

Ben N
la source
1
Pendant un moment, je pensais que nous examinions les effets de la déduplication des données ( blog.fosketts.net/2012/01/03/… ) mais je pense que cette fonctionnalité fonctionne à un niveau transparent par rapport à quelque chose comme la métrique "taille sur le disque".
Misha256
8
Mais attendez ... Je ne parviens pas à répliquer le comportement des OP sur mon volume NTFS (Windows 7). Quelle que soit la façon dont je crée des fichiers minuscules (certains d'un seul octet), ils occupent chacun 4 Ko "d'espace disque" selon la boîte de dialogue Propriétés du fichier. Hmm ...
Misha256
8
@ misha256 Hein, je peux le reproduire avec un fichier sous ~ 700 octets sous Windows 8.1. Mon hypothèse est que l'algorithme est devenu plus intelligent quelque part entre Windows 7 et 8.1, car à l'origine, il ne connaissait rien de la fantaisie NTFS ( source ). Notez qu'une fois qu'un fichier passe à la deuxième étape, il ne rétrécit jamais.
Ben N
6
@Philipp Je suppose que l'on pourrait argumenter de toute façon. Traditionnellement, le "fichier sur le disque" était "la taille des clusters alloués" (ainsi, par exemple, vous pouviez voir les effets du choix d'une taille de cluster trop grande). À ma connaissance, il n'a jamais inclus l'espace "catalogue" requis par le système de fichiers (par exemple, la taille de "l'entrée de répertoire" ou "la longueur de la chaîne d'entrées FAT").
TripeHound
3
@Philipp: Quoi qu'il en soit, y compris la tenue de livres dans la taille du fichier devient rapidement fastidieux: comment décririez-vous un fichier à une grappe avec 3 noms?
Déduplicateur