Блокировать перераспределение - Block suballocation

Блокировать перераспределение это особенность некоторых компьютеров файловые системы который позволяет использовать большие блоки или единицы распределения, эффективно используя "свободное" пространство в конце больших файлов, пространство, которое в противном случае было бы потеряно для другого использования внутренняя фрагментация.[1]

В файловых системах, не поддерживающих фрагменты, эта функция также называется слияние хвостов или же упаковка хвоста потому что обычно это делается путем упаковки «хвоста» или последнего частичного блока нескольких файлов в один блок.

Обоснование

Файловые системы традиционно делят диск на блоки одинакового размера, чтобы упростить их конструкцию и ограничить наихудший случай. фрагментация. Размеры блоков обычно кратны 512 из-за размера жесткого диска. секторы диска. Когда файлы распределяются некоторыми традиционными файловыми системами, отдельным файлам могут быть выделены только целые блоки. Но поскольку размеры файлов часто не кратны размеру блока файловой системы, такая конструкция неизбежно приводит к появлению последних блоков файлов (называемых хвосты) занимая только часть блока, в результате получается то, что называется внутренняя фрагментация (не путать с внешняя фрагментация ). Эта трата места может быть значительной, если файловая система хранит много небольших файлов, и может стать критической при попытке использовать блоки большего размера для повышения производительности. FFS и другие производные файловые системы UNIX поддерживают фрагменты[нужна цитата ] которые значительно смягчают этот эффект.

Схемы перераспределения

Перераспределение блоков решает эту проблему, разделяя хвостовой блок некоторым образом, чтобы позволить ему хранить фрагменты из других файлов.

Некоторые схемы перераспределения блоков могут выполнять выделение на уровне байтов; большинство, однако, просто делят блок на более мелкие (делитель обычно равен некоторой степени двойки). Например, если 38 KiB файл должен храниться в файловая система при использовании блоков 32 КиБ файл обычно занимает два блока, или 64 КиБ, для хранения; оставшиеся 26 КиБ второго блока становятся неиспользуемым резервным пространством. Однако при перераспределении блока размером 8 КиБ файл будет занимать всего 6 КиБ второго блока, оставив 2 КиБ (из блока перераспределения 8 КиБ) в резерве и освободив другие 24 КиБ блока для других файлов.

Упаковка хвоста

Некоторые файловые системы с тех пор были разработаны с учетом преимуществ этого неиспользуемого пространства и могут упаковывать хвосты нескольких файлов в один общий хвостовой блок. Хотя на первый взгляд может показаться, что это значительно усилит фрагментацию файловой системы, негативный эффект можно смягчить с помощью читать вперед особенности на современных операционные системы - при работе с короткими файлами несколько хвостов могут быть достаточно близко друг к другу, чтобы их можно было читать вместе, и, таким образом, поиск диска не вводится. В таких файловых системах часто используются эвристика чтобы определить, стоит ли упаковка хвоста в данной ситуации, и дефрагментация программное обеспечение может использовать более развитую эвристику.

Эффективность

В некоторых сценариях, когда большинство файлов короче половины размера блока, например, в папке небольшого размера. исходный код файлов или небольших растровых изображений, хвостовая упаковка может повысить эффективность хранения даже более чем в два раза по сравнению с файловыми системами без хвостовой упаковки.[2]

Это не только приводит к экономии дискового пространства, но также может повысить производительность, поскольку местонахождение ссылки, нужно читать меньше данных, что также приводит к увеличению кеш страницы эффективность. Однако эти преимущества могут быть сведены на нет повышенной сложностью выполнение.[3]

По состоянию на 2015 год, наиболее широко используемыми файловыми системами чтения-записи с поддержкой перераспределения блоков являются Btrfs и FreeBSD UFS2[4] (где это называется "фрагментация на уровне блоков "). Когда-то популярный, ReiserFS и Reiser4 больше не распространены.[нужна цитата ]

Некоторые файловые системы, доступные только для чтения, вообще не используют блоки и, таким образом, неявно используют пространство так же эффективно, как перераспределение файловых систем; такие файловые системы дублируют форматы архивов.

Смотрите также

Рекомендации

  1. ^ Патент США 6041407 (Основной патент.)
  2. ^ Ганс Райзер (2001). «Использование жесткого диска, ReiserFS и Ext2fs». Архивировано из оригинал 13 ноября 2006 г.. Получено 14 декабря 2006.
  3. ^ Ганс Райзер (2001). «Дизайн файловой системы ReiserFS». Архивировано из оригинал 13 ноября 2006 г.. Получено 14 декабря 2006.
  4. ^ Херви, Аллен (20 июня 2005 г.). «Введение в FreeBSD, семинар PacNOG I, дополнительные темы, UFS2 и Soft Updates - мощная комбинация» (PDF). PacNOG I. п. 23. Получено 22 июля 2012.