Відповіді:
Це початковий розмір, необхідний для зберігання метаданих про файли, що містяться в цьому каталозі (включаючи імена). Початковий розподіл дорівнює розміру одного сектора, але може зрости вище, ніж це необхідно. Після виділення місця не буде звільнено, якщо файли видалено, щоб зменшити фрагментацію.
Наприклад:
$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/
Іноді 4096 байт - це найменша одиниця розподілу для деяких файлових систем. Ось чому каталог має 4096.
Те саме стосується файлів. Незважаючи на те, що деякі файли можуть повідомляти менше 4096, вони фактично займають принаймні 4096 пам’яті з диска.
4096 зарезервовано для зменшення фрагментації, оскільки часто фактичний розмір вміщених метаданих буде коливатися залежно від вмісту каталогу. Якщо вона постійно зростає і скорочується (скажімо, що вона містить файли журналів або динамічний вміст) з часом, це може зашкодити продуктивності. Це, мабуть, не відбудеться з однією папкою, але по всій файловій системі вона швидко додаватиметься.
Це залежить від файлової системи. Для ext2 / 3/4 це "є" 4096. На рейзерфі може бути 9608 (мій $HOME
) 1032 ( /tmp
) або 48 (деякий dir in /tmp
).
За замовчуванням у ext2 / 3/4 блок становить 4096 - і файл не може займати менше цього. Якщо файл менший, він все одно займає цілий блок. Оскільки безглуздо запитувати про логічний розмір каталогів, і ця інформація, ймовірно, все одно не є на диску, і вона повинна щось повідомляти, вона повідомляє розмір блоку, менший за кількість взятих блоків, тобто фізичний простір, який було взято.
actual
розмір файлу.
\0
є юридичним символом у двійкових файлах. PS. Можна створити FS, які не зберігають його, але просто не по-домашньому (і, мабуть, немає інших популярних).