¿Cómo puede el tamaño de un archivo en el disco ser de 0 bytes cuando hay datos en él?

106

Tengo un archivo en Windows 10 con 362 bytes de datos, pero el "tamaño en el disco" es de solo 0 bytes. Es un simple programa "Hola mundo" escrito en ensamblador y guardado en Notepad ++ .

¿Cómo es posible que el tamaño en el disco sea cero cuando el tamaño del archivo es 362 bytes?

Tengo un SSD, no un disco duro normal.

Captura de pantalla del cuadro de diálogo Propiedades:

Captura de pantalla del cuadro de diálogo Propiedades

Coder88
fuente
44
Respuesta corta: si no se necesita espacio adicional en el disco para almacenar su contenido.
David Schwartz el
11
@Thomas No es un duplicado. El nombre suena similar, pero esa pregunta es por qué Windows declara que un archivo de byte cero es de tamaño cero a pesar de requerir el registro en alguna parte. Esta pregunta pregunta por qué el tamaño en el disco puede ser cero, incluso si hay datos en el archivo.
Ben N
@BenN lo está marcando como inapropiado porque tienes razón, ciertamente no es un duplicado.
William
Hola, Coder88, creo que la persona que marcó tu publicación como un duplicado se equivocó: la otra pregunta era hacer algo diferente; Realmente hiciste una buena pregunta. Si desea indicar que su pregunta está resuelta, puede hacer clic en la marca de verificación junto a una respuesta aquí.
Ben N

Respuestas:

155

Esto sucede si el archivo es tan pequeño que su contenido y la contabilidad del sistema de archivos caben en 1 KB. Para ahorrar espacio en el disco, NTFS mantiene los archivos pequeños "residentes", almacenando sus contenidos directamente en el registro del archivo, por lo que no se debe asignar ningún clúster. Por lo tanto, el tamaño en el disco es cero porque no hay nada más allá del registro del archivo. Una vez que el archivo se hace lo suficientemente grande, NTFS lo hace "no residente", le asigna uno o más grupos (creando un "tamaño en disco" distinto de cero) y crea un "par de mapeo" en el registro del archivo en el lugar de los datos para Señalar el clúster.

Los discos duros SSD o Windows 10 no afectan esto; Es simplemente una característica NTFS. Lectura adicional: Las cuatro etapas del crecimiento de archivos NTFS .

Tenga en cuenta que la métrica "tamaño en disco" no es exactamente correcta. Por ejemplo, nunca incluye los 1 KB constantes que ocupa el archivo NTFS. La métrica se introdujo en Windows 95, que no usaba NTFS y, por lo tanto, no podría haber explicado este fenómeno; solo mostró el tamaño del archivo redondeado al siguiente múltiplo del tamaño del clúster. Ese algoritmo de estimación se llevó a Windows 7, aunque muchas versiones de Windows entre ellos usaban NTFS y almacenamiento residente. Finalmente se actualizó en Windows 8 para contar archivos con solo datos residentes como tamaño cero en el disco. Lectura adicional: ¿Qué es el "tamaño en disco"?

Ben N
fuente
1
Por un momento pensé que estábamos analizando los efectos de la desduplicación de datos ( blog.fosketts.net/2012/01/03/… ) pero creo que esa función funciona en un nivel transparente a algo como la métrica "tamaño en disco".
misha256
8
Pero espere ... No puedo replicar el comportamiento de los OP en mi volumen NTFS (Windows 7). Independientemente de cómo creo archivos pequeños (algunos de solo un byte de largo), cada uno ocupa un "espacio en disco" de 4KB según el cuadro de diálogo Propiedades del archivo. Hmm ...
misha256
8
@ misha256 Huh, puedo reproducirlo con un archivo de menos de ~ 700 bytes en Windows 8.1. Mi conjetura es que el algoritmo se volvió más inteligente en algún lugar entre Windows 7 y 8.1, ya que originalmente, no sabía nada de cosas elegantes de NTFS ( fuente ). Tenga en cuenta que una vez que un archivo pasa a la segunda etapa, nunca se reduce.
Ben N
66
@Philipp Creo que uno podría discutir de cualquier manera Tradicionalmente, el "archivo en el disco" era "el tamaño de los clústeres asignados" (así, por ejemplo, podría ver los efectos de elegir un tamaño de clúster demasiado grande). Hasta donde yo sé, nunca ha incluido el espacio de "catálogo" que necesita el sistema de archivos (por ejemplo, el tamaño de la "entrada de directorio" o "la longitud de la cadena de entradas FAT").
TripeHound
3
@Philipp: De todos modos, incluir la contabilidad en el tamaño del archivo se vuelve difícil: ¿Cómo describirías un archivo de 1 clúster con 3 nombres?
Deduplicador