Question Comment la taille d'un fichier sur le disque peut-elle être de 0 octet lorsqu'il y a des données?


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

Comment est-il possible que la taille sur le disque soit nulle lorsque 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:

Screenshot of the Properties dialog


96
2018-01-24 23:00


origine


Réponse courte: Si aucun espace disque supplémentaire n’est nécessaire pour stocker son contenu. - David Schwartz
@Thomas Pas un doublon. Le nom est similaire, mais la question est de savoir pourquoi Windows déclare qu’un fichier de zéro octet est de taille nulle, même s’il doit être enregistré quelque part. Cette question demande pourquoi la taille sur le disque peut être égale à zéro même s'il existe des données dans le fichier. - Ben N
En relation: Comment un fichier volumineux peut-il avoir une valeur "Taille sur disque" nulle? - BlueRaja - Danny Pflughoeft
@BenN Le signaler comme étant inapproprié parce que vous avez raison, ce n'est certainement pas un doublon. - William
Salut Coder88, je crois que la personne qui a marqué votre message comme un doublon s'est trompé - l'autre question demandait quelque chose de différent; 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:


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 du fichier, donc aucun cluster ne doit lui être affecté. Par conséquent, la taille sur le disque est égale à zéro car rien ne dépasse l'enregistrement de fichier. Une fois que le fichier est suffisamment volumineux, NTFS le rend "non-résident", lui alloue un ou plusieurs clusters (créant une "taille sur disque" non nulle) et crée une "paire de mappage" dans le 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. Lectures complémentaires: Les quatre étapes de la croissance des fichiers NTFS.

Notez que la métrique "taille sur le disque" n'est pas exactement correcte. Par exemple, il n'inclut jamais la constante 1 Ko que l'enregistrement de fichier NTFS prend. La métrique a été introduite dans Windows 95, qui n'utilisait pas NTFS et ne pouvait donc pas expliquer ce phénomène; la taille du fichier est 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 entre elles utilisaient 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 en tant que taille zéro sur le disque. Lectures complémentaires: Qu'est-ce que «Size on Disk»?


148
2018-01-24 23:14



Pendant un moment, j'ai pensé 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 à quelque chose comme la métrique "taille sur disque". - misha256
Mais attendez ... Je ne parviens pas à reproduire le comportement des OP sur mon volume NTFS (Windows 7). Indépendamment de la façon dont je crée des fichiers minuscules (certains d’environ un octet de long), ils occupent chacun 4Ko "espace disque" selon la boîte de dialogue Propriétés du fichier. Hmm ... - misha256
@ misha256 Hein, je peux le reproduire avec un fichier de moins de ~ 700 octets sur Windows 8.1. Je suppose que l’algorithme est devenu plus intelligent quelque part entre Windows 7 et 8.1, car à l’origine, il ne connaissait aucun truc NTFS sophistiqué (la source). Notez qu'une fois qu'un fichier passe dans la deuxième étape, il ne recule jamais. - Ben N
@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" nécessaire au système de fichiers (par exemple, la taille de "l'entrée du répertoire" ou "la longueur de la chaîne des entrées FAT"). - TripeHound
@Philipp: Quoi qu'il en soit, l'inclusion de la comptabilité dans la taille du fichier devient très rapide: comment décririez-vous un fichier à 1 cluster avec 3 noms? - Deduplicator