Сколько места занимают каталоги?

Сколько места занимают каталоги?

Сколько места занимают пустые каталоги?

В файловой системе Windows и NTFS отображается значение «0 байт», что невозможно.

Сколько на самом деле занимает каталог? Зависит ли это от файловой системы или операционной системы?

решение1

Технически окно свойств показывает вам содержимое папки, которое, если оно пустое, занимает 0 байт на любом диске.

Ваш вопрос касается того, какое пространство занимает папкасоставзанимает файловую систему, которая, очевидно, зависит от нее. В FAT32 единственное, что вам нужно хранить, это некоторые флаги (скрытый, архивированный) и имя и путь. В NTFS вам также нужно хранить разрешения и еще кое-что. В общем, это пространство почти ничтожно.

Пространство пустого каталогасоставзанимает зависит от имени и пути к папке. В качестве примера предположим, что вы размещаете все папки на корневом диске (например, C:) и используете все 26 буквенных символов; с 1 миллиардом уникальных имен вы можете иметь log_26 (1.000.000.000) = приблизительно 7 (6.3065) символов длины имени папки. Таким образом, 7 байт * 1.000.000.000 равняется примерно 7 ГБ пространства.

Это минимум, основанный только на количестве пространства, которое имена должны занимать в любой структуре. Как будет показано, файловые системы хранят гораздо больше информации, чем имя файла, в своей файловой структуре.

Я думаю, что у меня около 1 миллиона папок и файлов на всех моих дисках, так что это значение даже не достигнуто в реальности. Не забывайте, что это очень грубая оценка.


Наиболее используемыми файловыми системами в настоящее время можно считать (вероятно) FAT (таблица размещения файлов) и NTFS (файловая система новой технологии).ТОЛСТЫЙкак мы знаем, она используется с 1996 года, когда была выпущена Windows 95 с FAT32. Хотя ее заменили другие, более устойчивые файловые системы, такие как NFTS (Windows), HFS+ (OSX) или ext3 (Linux), она по-прежнему широко используется в карманных устройствах или на картах памяти или флэш-накопителях, поскольку она хорошо поддерживается большинством ОС и, прежде всего, она проста.

Теперь о том, что важно. Файлы и каталоги в разделе FAT, даже если в них ничего нет, имеют имя, местоположение, определенные атрибуты и т. д., которые хранятся в зоне, называемойтаблица каталогов.

Theтаблица каталоговэто специальный файл (т.е. он скрыт от обычного использования, так что только ОС и определенные приложения могут получить к нему прямой доступ). Он представляет собой каталог (также известный как папка), и любой файл или папка, хранящиеся в нем, имеют 32-байтовую запись в таблице. Кактаблица каталоговпредставляет собой файл, то он занимает один или несколько кластеров (т. е. ячеек с заданным размером на диске, где помещается только один файл (или его часть)).

Итак, любая папка или каталог на современном диске (>512 МБ) имеетпо меньшей меренакладные расходы в размере 4 КБ, чтобы сохранить таблицу(источник). Однако это означает, что вы можете хранить 128 различных файлов (4 * 1024 Б / 32 Б = 128) в одной и той же папке, а накладные расходы на хранение записей по-прежнему составят те же 4 КБ, что и раньше.

Если прибавить к первому примеру, то это будет означать, что миллиард папок будет иметь накладные расходы в 32 ГБ, а не примерно 7 ГБ, которые я подсчитал. Эти 32 ГБ хранят не только короткое имя (8 символов ASCII), но и атрибуты, флаги, доступ, даты создания и изменения и другие устаревшие атрибуты.

Предполагая, что вы все это прочитали, у вас может возникнуть вопрос: «Ну, это все хорошо, но как длинные имена, такие какВаббаджекили даже хаотичные названия, такие какe4d909c290d0fb1ca068ffaddf22cbd0, сохранено?"

Microsoft в Windows 95 решила добавить эту функцию для улучшения пользовательского опыта. Чтобы избежать поломки "почти стандартной" системы, они использовали изящный обходной путь под названием VFAT (Virtual FAT). По сути, для того, чтобы вместить длинное имя файла в файл, дополнительные записи были записаны перед фактической записью файла (с некоторыми специальными атрибутами, которые не были видны более ранним системам). Система длинных имен файлов допускает максимальную длину 255 символов UTF-16 (Unicode)(источник) (источник).

Если бы вы изменили первый пример так, чтобы каждая папка имела 9 символов, то накладные расходы удвоились бы с 32 ГБ до 64 ГБ, поскольку для хранения длинного имени потребовалось бы создать еще одну запись.


СогласноВикипедиястатья о NTFS, все разрешения хранятся в Главной таблице файлов. Ее пространство можно увидеть, по-видимому, через Disk Defragmenter, как показано наздесь.

Размер, который занимает запись MFT в папке или файле, описан вздесь:

Записи файлов и папок имеют размер 1 КБ каждая.и хранятся в MFT, атрибуты которой записываются в выделенное пространство в MFT. Помимо атрибутов файла, каждая запись файла содержит информацию о положении записи файла в MFT.

Когда атрибуты файла могут поместиться в запись файла MFT для этого файла, они называются резидентными атрибутами. Такие атрибуты, как имя файла и временная метка, всегда являются резидентными. Когда объем информации для файлане подходитв записи файла MFT некоторые атрибуты файла становятсянерезидент.Нерезидентным атрибутам выделяется один или несколько кластеров дискового пространства.. Часть нерезидентного атрибута остается в MFT и указывает на внешние кластеры. NTFS создает атрибут Attribute List для описания расположения всех записей атрибутов. Таблица NTFS File Attribute Types перечисляет атрибуты файлов, которые в настоящее время определены NTFS.

Таким образом, в NTFS папки занимают не менее 1 КБ пространства, если только они не имеют очень длинных списков аргументов и разрешений; в этом случае запись MFT занимает дополнительный кластер в разделе, размер которого зависит от того, как он был отформатирован, хотя для папок размером более 2 ГБ Microsoft в этом сообщении рекомендует кластеры размером 4 КБ.

решение2

Для примера из реального мира я просто записал свое свободное пространство, затем создал большую структуру каталогов и вычел новое свободное пространство, чтобы узнать, сколько места было использовано. Я создал каталоги 0-6 для каждого дня недели, затем внутри каталогов 0-23 для часов дня, затем 0-59 для минут часа. Всего 10 080 каталогов. Использование моего диска изменилось на 6 926 336 байт. Это составляет 687 байт на каталог. Если вам интересно, это также составляет 0,0006% от диска объемом 1 ТБ (если вы посчитаете 1 ТБ как 1024^4).

решение3

В Windows 10 я создал 1 000 000 пустых папок и, согласно Python,getsizeфункция, она заняла 200540160 байт пространства. Это в среднем 200,54016 байт на папку.

Связанный контент