Скільки місця займають каталоги?


13

Скільки місця займають порожні каталоги?

У файловій системі Windows та NTFS кажуть "0 байт", що неможливо.

Скільки насправді займає каталог? Це залежить від файлової системи чи операційної системи?


1
Технічно те, що вам показує Вікно властивостей, - це вміст папки, який, якщо порожній, займає 0 байт на будь-якому диску. Ваше запитання стосується того, який простір займає структура папок у файловій системі. Очевидно, це залежить від файлової системи. У FAT32 єдине, що потрібно зберігати, - це деякі прапори (приховані, заархівовані) та ім'я та шлях. У NTFS також потрібно зберігати дозволи та деякі інші речі. Загалом, цей простір майже незначний.
Doktoro Reichard

Отже, на NTFS скільки місця займає порожній діракарій? Наприклад, якщо я роблю 1 мільярд каталогів, скільки це місця?
ShadowHero

Як я вже сказав, це залежить від імені та шляху папки. Припустимо, що ви використовуєте всі 26 символів, з 1 мільярдом унікальних імен ви можете мати близько 7 імен папок довжиною символів. Отже, 7 байт * 1.000.000.000 дорівнює приблизно 7 ГБ місця. Я вважаю, що це мінімум. Я думаю, що у мене є близько 1 мільйона папок на всіх моїх накопичувачах, так що значення навіть в дійсності не досягається. Не забувайте, що це дуже приблизна оцінка.
Doktoro Reichard

Класно, я бачу ... як зберігаються дозволи?
ShadowHero

1
@AthomSfere Хм ... це означає, що папки не можуть зберігати нескінченні дозволи користувачів, якщо не можна призначити кілька записів MFT. Постараюсь роздивитись.
Докторо Рейхард

Відповіді:


16

Технічно те, що вам показує Вікно властивостей, - це вміст папки, який, якщо порожній, займає 0 байт на будь-якому диску.

Ваше запитання стосується того, який простір займає структура папок у файловій системі, яка, очевидно, від неї залежить. У FAT32 єдине, що потрібно зберігати, - це деякі прапори (приховані, заархівовані) та ім'я та шлях. У NTFS також потрібно зберігати дозволи та деякі інші речі. Загалом, цей простір майже незначний.

Простір, який займає порожня структура каталогу, залежить від імені та шляху папки. Як приклад, припустимо, що ви розміщуєте всі папки на кореневому диску (скажімо, C :) та використовуєте всі 26 алфавітних символів; з 1 мільярдом унікальних імен ви можете мати log_26 (1.000.000.000) = приблизно приблизно 7 (6.3065) ім'я папки довжиною символів. Отже, 7 байт * 1.000.000.000 дорівнює приблизно 7 ГБ місця.

Це мінімум, що ґрунтується лише на кількості простору, який має займати будь-яка структура. Як буде показано, файлові системи зберігають набагато більше інформації, крім імені файлу, у його файловій структурі.

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


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

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

Таблиця каталогів - це спеціальний файл (тобто він прихований від регулярного використання, таким чином, що тільки ОС і певні програми можуть отримати доступ до нього безпосередньо). Він представляє каталог (він же папка), і будь-який файл або папка, що зберігається в ньому, має в таблиці 32 записи. Оскільки таблиця каталогів є файлом, вона займає один або кілька кластерів (тобто поля з заданим розміром всередині диска, куди вміщується лише один файл (або частина одного)).

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

На першому прикладі, це означатиме, що мільярд папок матиме накладні витрати в 32 ГБ, а не приблизно 7 Гб, який я розрахував. Ці 32 ГБ зберігають не лише коротке ім’я (8 символів ASCII), але й атрибути, прапори, дати доступу, створення та модифікації та інші застарілі атрибути.

Якщо припустити, що ви все це прочитали, можливо, у вас може виникнути питання: "Ну, це все добре і добре, але як зберігаються довгі імена, такі як Wabbajack або навіть хеш-імена, такі як e4d909c290d0fb1ca068ffaddf22cbd0 ?"

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

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


Відповідно до статті Вікіпедії про NTFS, всі дозволи зберігаються в таблиці головних файлів. Простір видно, очевидно, через Дефрагментатор диска, як показано тут .

Розмір, який займає MFT-запис із папки або файлу, описаний тут :

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

Коли атрибути файлу можуть вміщуватися в записи файлу MFT для цього файлу, вони називаються атрибутами резидента. Такі атрибути, як ім'я файлу та штамп часу, завжди є резидентними. Коли кількість інформації для файлу не вписується в його запис файлу MFT, деякі атрибути файлу стають нерезидентами . Нерезидентним атрибутам виділяється один або кілька кластерів дискового простору . Частина нерезидентного атрибута залишається у MFT та вказує на зовнішні кластери. NTFS створює атрибут списку атрибутів для опису розташування всіх записів атрибутів. У таблиці Типи атрибутів файлів NTFS перераховані атрибути файлів, визначені в даний час NTFS.

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


1
Я знайшов деяку інформацію про довжину 1024 байтів, про яку я згадував раніше, c-ad.bnl.gov/kinyip/windows/MFT.html Це дуже добре читається і може допомогти вашій відповіді, якщо ви хочете розширити.
Austin T French

Я хотів би розширити (зробити це більш повною відповіддю, не будучи це занадто технічним ...), хоча мені доведеться залишити це на завтра. Спасибі за це джерело все одно.
Doktoro Reichard

Технічна корекція: немає 255 меж шляху. Скоріше, для стандартних контурів існує обмеження MAX_PATH, що становить 260 символів, і тоді існує шлях довжиною 32 767 символів (так, понад 32 тис. Символів) для істинних маршрутів unicode (використовуючи індикатор `\\?`, Або як звичайний шлях із збільшеною довжиною або як UNC шлях). Докладніше про це див. У docs.microsoft.com/en-us/windows/win32/fileio/… .
Майк 'Помакс' Камерманс

3

Для прикладу реального світу я просто записав свій вільний простір, потім створив велику структуру каталогів і відняв новий вільний, щоб знайти, скільки місця було використано. Я створив каталоги 0-6 на кожен день тижня, потім всередині каталогів 0-23 години дня, потім 0-59 хвилин хвилини. Загалом його 10 080 каталогів. Використання мого диска змінилося на 6 926 366 байт. Це працює на рівні 687 байт на каталог. Якщо вам все одно, це також спрацьовує до 0,0006% 1 ТБ накопичувача (якщо обчислити 1 ТБ як 1024 ^ 4).


3
Чи можете ви додати у свою відповідь файлову систему? Усі імена каталогів були короткими?
fixer1234

0

У Windows 10 я створив 1 000 000 порожніх папок і, відповідно до getsizeфункції python , він займав 200540160 байт простору. Це в середньому 200.54016 байт на папку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.