¿Cuánto espacio consumen los directorios?

12

¿Cuánto espacio ocupan los directorios vacíos?

En el sistema de archivos de Windows y NTFS dice '0 bytes', lo cual es imposible.

¿Cuánto es realmente ocupado por un directorio? ¿Depende del sistema de archivos o del sistema operativo?

ShadowHero
fuente
1
Técnicamente, lo que la Ventana de Propiedades le muestra es el contenido de la carpeta, que si está vacío ocupa 0 bytes en cualquier disco. Tu pregunta trata sobre qué espacio de la carpeta. estructura ocupa en un sistema de archivos. Obviamente depende del sistema de archivos. En FAT32, las únicas cosas que necesita almacenar son algunas banderas (ocultas, archivadas) y el nombre y la ruta. En NTFS también necesitas almacenar permisos y algunas cosas más. Con todo, ese espacio es casi insignificante.
Doktoro Reichard
Entonces, en el NTFS, ¿cuánto espacio ocupa un directorio vacío? p.ej. Si hago 1 mil millones de directorios, ¿cuánto espacio hay?
ShadowHero
Como dije, depende del nombre y la ruta de la carpeta. Suponiendo que utilice los 26 caracteres, con 1 mil millones de nombres únicos, puede tener aproximadamente 7 nombres de carpeta de longitud de caracteres. Por lo tanto, 7 bytes * 1.000.000.000 equivalen a aproximadamente 7 GB de espacio. Esto es un mínimo, supongo. Creo que tengo alrededor de 1 millón de carpetas en todas mis unidades, por lo que el valor ni siquiera se alcanza en la realidad. No olvides que esta es una estimación muy aproximada.
Doktoro Reichard
Genial, ya veo ... ¿cómo se almacenan los permisos?
ShadowHero
1
@AthomSfere Hmm ... eso significaría que las carpetas no pueden almacenar infinitos permisos de usuario, a menos que se puedan asignar múltiples registros MFT. Intentaré buscarlo.
Doktoro Reichard

Respuestas:

13

Técnicamente, lo que la Ventana de Propiedades le muestra es el contenido de la carpeta, que si está vacío ocupa 0 bytes en cualquier disco.

Tu pregunta trata sobre qué espacio de la carpeta. estructura ocupa un sistema de archivos, que obviamente depende de él. En FAT32, las únicas cosas que necesita almacenar son algunas banderas (ocultas, archivadas) y el nombre y la ruta. En NTFS también necesitas almacenar permisos y algunas cosas más. Con todo, ese espacio es casi insignificante.

El espacio un directorio vacío estructura ocupa depende del nombre y la ruta de la carpeta. Como ejemplo, suponga que coloca todas las carpetas en una unidad raíz (por ejemplo, C :) y usa los 26 caracteres alfabéticos; con 1 billón de nombres únicos, puede tener log_26 (1.000.000.000) = aproximadamente 7 (6.3065) nombre de la carpeta de longitud de caracteres. Por lo tanto, 7 bytes * 1.000.000.000 equivalen a aproximadamente 7 GB de espacio.

Este es un mínimo basado solo en la cantidad de espacio que los nombres deben tener en cualquier estructura. Como se mostrará, los sistemas de archivos almacenan mucha más información además del nombre de archivo en su estructura de archivos.

Creo que tengo alrededor de 1 millón de carpetas y archivos en todas mis unidades de modo que el valor ni siquiera se alcanza en la realidad. No olvides que esta es una estimación muy aproximada.


Los sistemas de archivos más utilizados en el momento actual pueden considerarse (posiblemente) como FAT (Tabla de asignación de archivos) y NTFS (Sistema de archivos de nueva tecnología). GORDO como sabemos, ha estado en uso desde 1996, cuando se lanzó Windows 95 con FAT32. Aunque reemplazado por otros sistemas de archivos más resistentes, como NFTS (Windows), HFS + (OSX) o ext3 (Linux), todavía se usa ampliamente en dispositivos de mano o en tarjetas de memoria o unidades flash, ya que es compatible con la mayoría de los sistemas operativos Y sobre todo, es simple.

Ahora para lo que importa. Los archivos y directorios en una partición FAT, incluso si no tienen nada en ellos, tienen un nombre, una ubicación, ciertos atributos, etc., que se almacenan en una zona llamada tabla de directorio .

los tabla de directorio es un archivo especial (es decir, está oculto para el uso regular, de modo que solo el SO y ciertas aplicaciones pueden acceder directamente a él). Representa un directorio (también conocido como carpeta) y cualquier archivo o carpeta almacenado dentro tiene una entrada de 32 bytes en la tabla. Como el tabla de directorio es un archivo, luego ocupa uno o más grupos (es decir, cajas con un tamaño preestablecido dentro de un disco, donde solo cabe un archivo (o una parte de uno)).

Por lo tanto, cualquier carpeta o directorio, en una unidad moderna (& gt; 512 MB), tiene al menos Una sobrecarga de 4 KB, para almacenar la tabla. (fuente) . Sin embargo, esto significa que puede almacenar 128 archivos diferentes (4 * 1024 B / 32 B = 128) en la misma carpeta y la sobrecarga al almacenar los registros sigue siendo el mismo 4KB que antes.

Aprovechando el primer ejemplo, esto significaría que los mil millones de carpetas tendrían una sobrecarga de 32 GB, en lugar de los aproximadamente 7 GB calculados. Estos 32 GB almacenan no solo el nombre corto (8 caracteres ASCII), sino también los atributos, marcas, fechas de acceso, creación y modificación y otros atributos heredados.

Suponiendo que lea todo esto, podría haber una pregunta que podría tener: "Bueno, esto está muy bien, pero cómo son los nombres largos, como Wabbajack o incluso nombres de hash como e4d909c290d0fb1ca068ffaddf22cbd0 , almacenado? "

Microsoft en Windows 95 decidió agregar esa característica para mejorar la experiencia del usuario. Para evitar romper un sistema "casi estándar", utilizaron una solución ordenada llamada VFAT (FAT virtual). Esencialmente para poder ajustar el nombre largo del archivo en el archivo, se escribieron registros adicionales antes del registro del archivo real (con algunos atributos especiales que no deben ser vistos por sistemas anteriores). El sistema de nombre de archivo largo permite una longitud máxima de 255 caracteres UTF-16 (Unicode) (fuente) (fuente) .

Si tuviera que cambiar el primer ejemplo de modo que cada carpeta tuviera 9 caracteres, entonces la sobrecarga se duplicaría de 32 GB a 64 GB, ya que sería necesario escribir un registro más para almacenar el nombre largo.


De acuerdo con la Wikipedia En el artículo sobre NTFS, todos los permisos se almacenan en la Tabla maestra de archivos. El espacio se puede ver aparentemente a través del Desfragmentador de disco, como se muestra en aquí .

El tamaño que ocupa un registro MFT desde una carpeta o un archivo, se describe en aquí :

Los registros de archivos y carpetas son de 1 KB cada uno. y se almacenan en la MFT, cuyos atributos se escriben en el espacio asignado en la MFT. Además de los atributos de archivo, cada registro de archivo contiene información sobre la posición del registro de archivo en la MFT.

Cuando los atributos de un archivo pueden caber dentro del registro de archivos MFT para ese archivo, se denominan atributos residentes. Los atributos como el nombre de archivo y la marca de tiempo siempre son residentes. Cuando la cantidad de información para un archivo No encaja en su registro de archivos MFT, algunos atributos de archivos se convierten en no residente . A los atributos no residentes se les asigna uno o más grupos de espacio en disco . Una parte del atributo no residente permanece en la MFT y apunta a los grupos externos. NTFS crea el atributo Lista de atributos para describir la ubicación de todos los registros de atributos. La tabla Tipos de atributos de archivos NTFS enumera los atributos de archivos definidos actualmente por NTFS.

Entonces, en NTFS, las carpetas ocupan al menos 1 KB de espacio, a menos que tengan listas de permisos y argumentos muy largas; en ese momento, el registro MFT ocupa un clúster adicional en la partición, cuyo tamaño depende de cómo se formateó, aunque para más de 2GB Microsoft en esa publicación recomienda clústeres de 4 KB.

Doktoro Reichard
fuente
1
Encontré algo de información sobre la longitud de 1024 bytes que mencioné anteriormente, c-ad.bnl.gov/kinyip/windows/MFT.html Es una muy buena lectura y podría beneficiar su respuesta si le interesa expandirse.
Austin T French
Me gustaría expandir (para que esto sea una respuesta más completa, sin que esto sea demasiado técnico ...) aunque tendría que dejar esto para mañana. Gracias por esa fuente de todos modos.
Doktoro Reichard
2

Para un ejemplo del mundo real, acabo de grabar mi espacio libre, luego creé una gran estructura de directorios y resté la nueva versión gratuita para encontrar la cantidad de espacio utilizado. Creé los directorios 0-6 para cada día de la semana, luego dentro de los directorios 0-23 para las horas del día, luego 0-59 para los minutos de la hora. En total sus 10.080 directorios. El uso de mi disco cambió en 6,926,336 bytes. Eso funciona a 687 bytes por directorio. En caso de que le importe, eso también equivale al 0,0006% de una unidad de 1TB (si calcula 1TB como 1024 ^ 4).

andy
fuente
2
¿Puedes agregar el sistema de archivos a tu respuesta? ¿Todos los nombres de directorio fueron cortos?
fixer1234
0

En Windows 10 creé 1,000,000 carpetas vacías y, según Python's getsize función, ocupó 200540160 bytes de espacio. Eso es un promedio de 200.54016 bytes por carpeta.

Es Kay
fuente