Все файловые системы Linux имеют размер блока 4 КБ. Допустим, у меня есть 10 МБ на жестком диске. Это означает, что у меня доступно 2560 блоков, и, скажем, я скопировал 2560 файлов, каждый размером 1 КБ. Каждый 1-килобайтный блок будет занимать 1 блок, хотя он не заполняет весь блок.
Таким образом, весь мой диск теперь заполнен, но у меня все еще есть 2560x3kb свободного места. Если я хочу сохранить другой файл, скажем, 1 МБ, разрешит ли мне файловая система? Будет ли записываться в свободное место, оставленное в отдельных блоках? Есть ли какая-то концепция, решающая эту проблему?
Буду признателен за разъяснения. заранее спасибо
Ответы:
Размер блока по умолчанию составлял 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
источник
Файловые системы могут иметь размер блока от 512 до (обычно) 65536 байт. Размер блока можно указать как параметр mkfs.xxx. Размер блока по умолчанию в большинстве файловых систем Linux - 4096 байт.
Некоторые файловые системы поддерживают пакетную компоновку и / или выделение субблоков. ext2 / 3/4 - делает, XFS - нет. Если вы планируете заполнить раздел несколькими небольшими файлами, вы можете уменьшить потерянное «хвостовое» пространство, уменьшив размер блоков до 512 или 1024.
источник