Блочное перераспределение

Блочное перераспределение

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

В файловых системах не подверженных фрагментации, эту функцию также называют tail merging(слиянием хвостов) или tail packing(упаковкой хвостов) так как обычно блок данных упаковывается в место которое занимал бы "хвост", последние пустые блоки, или хвосты нескольких мелких файлов, которые (файлы) упаковываются в один блок.

Содержание

Обоснование

Файловая система традиционно разделяет диск на одинаковые по размеру блоки для упрощения её конструкции и ограничения фрагментации. Размеры блоков, как правило, кратны 512 в связи с размером дисковых секторов. Некоторые традиционные файловые системы распределяют файлы только по целым блокам, где каждый блок отнесён только к одному файлу. Но так как размеры файлов часто не кратны размеру блока файловой системы, эта конструкция по сути приводит к появлению в последних блоках файлов хвостов которые занимают только часть блока, что называется внутренней фрагментацией. Это пустое место может быть значительным, если файловая система хранит много маленьких файлов, размер которых может стать критическим при попытке использовать большие размеры блоков для повышения производительности. В UFS и других производных UNIX, подобные файловые системы поддерживают упаковку хвостов, что значительно уменьшает этот эффект.

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

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

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

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

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

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

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

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

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

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

См. также

Примечания

  1. U.S. Patent 6 041 407 (Fundamental patent)
  2. Hans Reiser Hard Disk usage, ReiserFS and Ext2fs (2001). Архивировано из первоисточника 29 сентября 2012. Проверено 14 декабря 2006.(недоступная ссылка)
  3. Hans Reiser ReiserFS file system design (2001). Архивировано из первоисточника 29 сентября 2012. Проверено 14 декабря 2006.(недоступная ссылка)
  4. Hervey, Allen Introduction to FreeBSD, PacNOG I Workshop, Additional Topics, UFS2 and Soft Updates make for a powerful combination. PacNOG I (20 июня 2005). Архивировано из первоисточника 29 сентября 2012. Проверено 22 июля 2012.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное



Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»