Я уверен, что файл каталога имеет гораздо меньше информации, чем 4096 байт. Я знаю, что размер сектора 4096 байт. Но обычные файлы меньше, чем существуют.
Почему Unix резервирует 4096 байт для каждой папки?
Я уверен, что файл каталога имеет гораздо меньше информации, чем 4096 байт. Я знаю, что размер сектора 4096 байт. Но обычные файлы меньше, чем существуют.
Почему Unix резервирует 4096 байт для каждой папки?
это начальный размер, необходимый для хранения метаданных о файлах, содержащихся в этом каталоге (включая имена). Первоначальное распределение равно размеру одного сектора, но при необходимости может увеличиваться. Когда выделяется, пространство не освобождается, если файлы удаляются, чтобы уменьшить фрагментацию.
например:
$ 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 это" is " 4096. На reiserfs это может быть 9608 (my $HOME
) 1032 (/tmp
) или 48 (некоторые из реж в /tmp
).
по умолчанию на блоке ext2/3/4 стоит 4096-и файл не может взять меньше. Если файл меньше, он все равно занимает целый квартал. Поскольку бессмысленно спрашивать о логическом размере каталога, и эта информация, вероятно, не находится на диске в любом случае, и она должна сообщить что-то, что она сообщает размер блока раз количество блоков, принятых т. е. физическое пространство, которое было занято.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]