Как работает размер блока файловой системы?

11

Все файловые системы Linux имеют размер блока 4 КБ. Допустим, у меня есть 10 МБ на жестком диске. Это означает, что у меня доступно 2560 блоков, и, скажем, я скопировал 2560 файлов, каждый размером 1 КБ. Каждый 1-килобайтный блок будет занимать 1 блок, хотя он не заполняет весь блок.

Таким образом, весь мой диск теперь заполнен, но у меня все еще есть 2560x3kb свободного места. Если я хочу сохранить другой файл, скажем, 1 МБ, разрешит ли мне файловая система? Будет ли записываться в свободное место, оставленное в отдельных блоках? Есть ли какая-то концепция, решающая эту проблему?

Буду признателен за разъяснения. заранее спасибо

Шримант Дуггинени
источник
Хорошо, 2560 файлов, каждый по 1 КБ, это 2560 * 0,001 МБ = 2,56 МБ. Каждый файл размером 1 КБ должен занимать примерно 1/4 блока, потому что 1000 * 4 = 4000, верно? И размер блока составляет 4096, поэтому вам нужно 4 файла, чтобы заполнить блок. 1 МБ файла будет стоить 1000000/4096 = 244 блока.
Сергей Колодяжный

Ответы:

3

Размер блока по умолчанию составлял 512 байт с момента появления первого Linux. За исключением до недавнего времени размеров блоков 4k, которые были введены для обслуживания постоянно увеличивающихся размеров дисков. На самом деле это даже почти продиктовано дисковым оборудованием (см. Подробнее: /unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd ).

Тем не менее, для вашего конкретного вопроса: вы правы, что все файлы тратят неиспользуемые байты последнего блока во многих типах файловых систем, что особенно расточительно для небольших файлов. Но btfrs и reiserfs, похоже, способны справиться, согласно https://en.m.wikipedia.org/wiki/Block_suballocation

Harald
источник
1
  1. Файловые системы могут иметь размер блока от 512 до (обычно) 65536 байт. Размер блока можно указать как параметр mkfs.xxx. Размер блока по умолчанию в большинстве файловых систем Linux - 4096 байт.

  2. Некоторые файловые системы поддерживают пакетную компоновку и / или выделение субблоков. ext2 / 3/4 - делает, XFS - нет. Если вы планируете заполнить раздел несколькими небольшими файлами, вы можете уменьшить потерянное «хвостовое» пространство, уменьшив размер блоков до 512 или 1024.

Александр суворов
источник