Come può la dimensione di un file sul disco essere 0 byte quando ci sono dati in esso?


106

Ho un file in Windows 10 con 362 byte di dati, ma la "dimensione su disco" è di soli 0 byte. È un semplice programma "Hello world" scritto in assembly e salvato in Notepad ++ .

Come è possibile che la dimensione sul disco sia zero quando la dimensione del file è 362 byte?

Ho un SSD, non un normale disco rigido.

Schermata della finestra di dialogo Proprietà:

Schermata della finestra di dialogo Proprietà


4
Risposta breve: se non è necessario spazio aggiuntivo sul disco per archiviarne il contenuto.
David Schwartz,

11
@Thomas Non un duplicato. Il nome sembra simile, ma quella domanda si sta chiedendo perché Windows dichiari un file a zero byte di dimensione zero nonostante richieda la registrazione da qualche parte. Questa domanda chiede perché la dimensione sul disco può essere zero anche se ci sono dati nel file.
Ben N


@BenN Lo sta segnalando come inappropriato perché hai ragione non è certamente un duplicato.
William

Ciao Coder88, credo che la persona che ha contrassegnato il tuo post come duplicato si sia sbagliata - l'altra domanda stava ponendo qualcosa di diverso; hai davvero fatto una buona domanda. Se intendevi indicare che la tua domanda è stata risolta, puoi fare clic sul segno di spunta accanto a una risposta qui.
Ben N

Risposte:


155

Questo succede se il file è così piccolo che il suo contenuto e la contabilità del filesystem si adattano a 1KB. Per risparmiare spazio su disco, NTFS mantiene "residenti" piccoli file, archiviando il loro contenuto nel record del file, quindi non è necessario allocare alcun cluster per esso. Pertanto, la dimensione sul disco è zero perché non c'è nulla oltre il record del file. Quando il file diventa sufficientemente grande, NTFS lo rende "non residente", alloca uno o più cluster per esso (creando una "dimensione su disco" diversa da zero) e crea una "coppia di mapping" nel record del file al posto dei dati a punta al cluster.

I dischi rigidi SSD o Windows 10 non influiscono su questo; è semplicemente una funzionalità NTFS. Ulteriori letture: le quattro fasi della crescita dei file NTFS .

Si noti che la metrica "dimensione su disco" non è esattamente corretta. Ad esempio, non include mai la costante 1 KB che occupa il record del file NTFS. La metrica è stata introdotta in Windows 95, che non utilizzava NTFS e quindi non avrebbe potuto giustificare questo fenomeno; mostrava solo la dimensione del file arrotondata per eccesso al multiplo successivo della dimensione del cluster. Tale algoritmo di stima è stato portato a Windows 7, anche se molte versioni di Windows tra loro utilizzavano NTFS e l'archiviazione residente. È stato infine aggiornato in Windows 8 per contare i file con solo dati residenti come dimensione zero sul disco. Ulteriori letture: che cos'è "Dimensione su disco"?


1
Per un momento ho pensato che stessimo osservando gli effetti della deduplicazione dei dati ( blog.fosketts.net/2012/01/03/… ) ma credo che questa funzionalità funzioni a un livello trasparente a qualcosa come la metrica "dimensione su disco".
misha256,

8
Ma aspetta ... Non riesco a replicare il comportamento degli OP sul mio volume NTFS (Windows 7). Indipendentemente da come creo piccoli file (alcuni lunghi solo un byte), occupano ciascuno "spazio su disco" 4KB secondo la finestra di dialogo Proprietà file. Hmm ...
misha256,

8
@ misha256 Eh, posso riprodurlo con un file di ~ 700 byte su Windows 8.1. La mia ipotesi è che l'algoritmo sia diventato più intelligente da qualche parte tra Windows 7 e 8.1, poiché originariamente non sapeva nulla di roba NTFS ( sorgente ). Notare che una volta che un file passa al secondo stadio, non si riduce mai.
Ben N

6
@Philipp Immagino si possa discutere in entrambi i modi. Tradizionalmente, il "file su disco" era "la dimensione dei cluster allocati" (quindi, ad esempio, si potevano vedere gli effetti della scelta di una dimensione del cluster troppo grande). Per quanto ne so, non ha mai incluso lo spazio "catalogo" necessario al file system (ad esempio, la dimensione della "voce della directory" o "la lunghezza della catena delle voci FAT").
TripeHound,

3
@Philipp: Ad ogni modo, inclusa la contabilità nella dimensione del file diventa pelosa in fretta: come descriveresti un file a 1 cluster con 3 nomi?
Deduplicatore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.