[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Принципы управления системой: Операционная система и устройства


Поддержка фрагментов и переменного числа I-узлов

Примечание: Приведенные в этом разделе сведения относятся только к JFS. Информация о JFS2 приведена в разделе Расширенные журнализированные файловые системы.

Поддержка фрагментов Журнализированной файловой системы (JFS) позволяет разделить дисковое пространство на блоки, меньшие блоков по умолчанию размером 4096 байт. Применение блоков размещения "фрагментов" небольшого размера позволяет более эффективно использовать дисковое пространство для хранения данных в файлах или в неполных логических блоках каталогов. Поддержка фрагментов JFS основана на поддержке фрагментов Berkeley Software Distribution (BSD). Как и в BSD, поддержка фрагментов Журнализированной файловой системы позволяет пользователю задать число i-узлов в файловой системе.

Использование диска

В большинстве файловых систем UNIX дисковое пространство разделено на блоки одинакового размера, в каждом из которых расположен логический блок файла или каталога. Такие физические блоки часто называются "блоками диска". Один блок диска хранит данные только одного логического блока файла или каталога.

Использование логических блоков сравнительно большого размера (например, по 4096 байт) и выделение дисковых блоков, равных по размеру логическим блокам, позволяет снизить число операций дискового ввода-вывода, выполняемых при каждой отдельной операции с файловой системой. Данные файлов и каталогов хранятся на диске в меньшем количестве сравнительно больших логических дисковых блоков, а не во множестве мелких блоков. Например, при использовании логических дисковых блоков размером 4096 байт для файла размером 4096 байт или менее будет выделен один дисковый блок размером 4096 байт. Таким образом, для чтения данных с диска или для записи данных на диск требуется одна-единственная операция дискового ввода-вывода. При меньшем размере логического блока для размещения того же объема данных потребуется большее количество блоков размещения, что приведет к увеличению числа операций дискового ввода-вывода, необходимых для чтения данных файла. Применение больших логических блоков, равных по размеру дисковым блокам, имеет еще одно преимущество - такой подход позволяет снизить количество операций, связанных с выделением дополнительного дискового пространства при добавлении новых данных в файлы и каталоги; это объясняется тем, что большие дисковые блоки позволяют разместить больший объем данных.

Однако если размер блока диска будет равен размеру логического блока, а в файловой системе содержится большое число небольших файлов и каталогов, то значительный объем памяти будет расходоваться впустую. Нерациональное использование дискового пространства связано с ситуацией, когда логический блок дискового пространства выделяется для размещения неполного логического блока файла или каталога. Поскольку объем данных, хранящихся в неполном логическом блоке всегда меньше полного объема логического блока, то такие блоки всегда лишь частично используют выделенное для них дисковое пространство. Остальная часть выделенного дискового пространства не используется, поскольку данные других файлов и каталогов нельзя записывать в уже выделенный блок дискового пространства. Если файловая система содержит значительное число мелких файлов и каталогов, то общий объем потерянной впустую дисковой памяти может быть очень большим.

Оптимальная стратегия использования диска

В JFS размер блока выделения дискового пространства, называемого фрагментом, может быть меньше размера логического блока, равного 4096 байт. Если размер фрагмента меньше 4096 байт, то данные отдельного логического блока можно разместить более эффективно, выделив ровно столько фрагментов, сколько необходимо для хранения данных. Например, если размер логического блока равен 500 байт, то для него можно выделить только один фрагмент размером 512 байт (если предположить, что размер фрагментов равен 512 байт). В этом случае объем неиспользуемой дисковой памяти будет значительно меньше. При запросе дополнительного дискового пространства в неполном логическом блоке будет выделен еще один фрагмент.

Фрагменты

Размер фрагмента файловой системы задается во время ее создания. В журнализированной файловой системе (JFS) поддерживаются фрагменты размером 512, 1024, 2048 и 4096 байт. В различных файловых системах могут применяться фрагменты разных размеров, но внутри одной файловой системы размер фрагмента постоянен. В одной и той же системе (компьютере) могут применяться фрагменты разных размеров, то есть пользователь может выбрать для каждой файловой системы наиболее подходящий размер фрагмента.

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

При уменьшении размера фрагмента увеличиваются затраты на выполнение операции (дополнительные операции подвода считывающих головок, передача данных и операции выделения памяти), но одновременно повышается эффективность использования дискового пространства. Для поиска оптимального баланса между ростом затрат и повышением эффективности использования дискового пространства в поддержке фрагментов JFS применяются следующие правила:

Выделение дискового пространства фрагментами по 4096 байт позволяет более эффективно выполнять дисковые операции (см. раздел Использование диска).

После того, как размер файлов или каталогов в файловой системе превысит 32 Кб, преимущества выделения файлового пространствами для неполных логических блоков фрагментами размером менее 4096 байт исчезают. Сэкономленная при этом дисковая память составляет незначительный процент от общего объема памяти файловой системы, а стоимость обслуживания небольших блоков диска остается очень высокой. Поскольку выделение фрагментов небольшого размера обеспечивает более эффективное использование дискового пространства только при работе с маленькими файлами и каталогами, то для файлов и каталогов размером более 32 Кб логические блоки всегда выделяются фрагментами по 4096 байт. Для любого неполного логического блока большого файла или каталога также выделяется диапазон фрагментов размером 4096 байт.

Переменное число I-узлов

Так как применение фрагментов повышает эффективность использования дисковой памяти, возрастает число небольших файлов и каталогов, которые могут храниться в файловой системе. Однако дисковое пространство - это только один из ресурсов файловой системы, необходимый для файлов и каталогов: каждому файлу и каталогу также требуется дисковый i-узел. В JFS допустимо, чтобы число i-узлов диска, создаваемых в файловой системе, отличалось от значения по умолчанию. Число i-узлов диска задается во время создания файловой системы в виде числа байт на i-узел (NBPI). Например, если значение NBPI равно 1024, то i-узел диска будет создаваться для каждых 1024 байт дискового пространства файловой системы. Если значение NBPI будет маленьким (например, 512 байт), то будет создано большое число i-узлов, а если значение NBPI будет большим (например, 16384), то будет создано небольшое число i-узлов.

Набор допустимых значений NBPI зависит от размера группы размещения (agsize). Значение по умолчанию 8 Мб. В AIX 4.1 размер agsize неизменен и равен 8 Мб. При значении agsize, равном 8 Мб, допускаются следующие значения NBPI: 512, 1024, 2048, 4096, 8192 и 16 384.

В AIX 4.2 и более поздних версий могут применяться большие значения agsize. Для agsize допустимы значения 8, 16, 32 и 64. Интервал допустимых значений NBPI увеличивается в соответствии с увеличением размера agsize. При увеличении значения agsize в два раза (до 16 Мб) допустимые значения NBPI также удваиваются: 1024, 2048, 4096, 8193, 16384 и 32768.

Задание размера фрагмента и NBPI

Размер фрагмента и значение числа байт на i-узел (NBPI) задается при создании файловой системы с помощью команды crfs, mkfs или с помощью инструмента управления системой (SMIT). Выбор размера фрагмента и числа i-узлов, создаваемых в файловой системе, зависит от планируемого количества файлов, которые будут храниться в файловой системе, а также от размера этих файлов.

Определение размера фрагмента и NBPI

Для определения размера фрагмента файловой системы и числа байт на i-узел (NBPI) можно воспользоваться командой lsfs или инструментом управления системой (SMIT). В прикладных программах размер фрагмента можно определить с помощью процедуры statfs.

Совместимость и преобразование

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

Образы файловых систем

JFS полностью поддерживает образы файловых систем JFS, созданные в предыдущих версиях данной операционной системы. Такие образы файловых систем, а также любые образы файловых систем JFS, в которых применяется принятый по умолчанию размер фрагмента, NBPI, равный 4096 байт и размер группы размещения (agsize), равный 8, могут передаваться между текущей и предыдущими версиями данной операционной системы, не требуя каких-либо специальных действий по преобразованию.

Образы файловых систем JFS с размером фрагмента или значением NBPI, отличным от применяемого по умолчанию, могут оказаться несовместимыми с предыдущими версиями операционной системы. В частности, между AIX 4.1 и AIX 4.2 можно передавать только образы файловых систем размером не более 2 Гб, созданные с параметрами по умолчанию. Образы файловых систем, созданных с размером фрагмента 512, 1024, 2048 или 4096, значением NBPI, равным 512, 1024, 2048, 4096, 8192 или 16384, и agsize, равным 8 Мб, также можно передавать между AIX 4.1 и AIX 4.2. И, наконец, файловые системы JFS со значением NBPI больше 16384 или значением agsize больше 8 Мб распознаются только в AIX 4.2.

Ниже описана процедура переноса несовместимых файловых систем из одной версии операционной системы в другую:

  1. Создайте резервную копию файловой системы в исходной системе (необходимо выполнить резервное копирование по имени).
  2. Создайте файловую систему в целевой системе.
  3. Восстановите файлы из резервной копии в целевой системе.

Резервное копирование и восстановление

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

Требования к драйверам устройств

Драйвер устройства должен обеспечивать адресацию дисковых блоков того же или меньшего размера, что и размер фрагмента файловой системы. Например, если файловая система JFS была создана на компьютере с драйвером RAM, то этот драйвер должен поддерживать блоки размером 512 байт для хранения файловой системы с размером фрагмента 512 байт. Если драйвер поддерживает адресацию только на уровне страниц, то может применяться только JFS с размером фрагмента 4096.

Производительность

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

Операция выделения памяти выполняется чаще

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

Дополнительные операции выделения памяти увеличивают затраты на выполнение операций файловой системы. Тем не менее, число операций выделения памяти в файловых системах с размером фрагмента меньше 4096 байт можно минимизировать, если приращение размера файлов составляет 4096 байт.

Фрагментация свободной памяти

Применение фрагментов размером менее 4096 байт может привести к сильной фрагментации свободного дискового пространства. Например, предположим, что диск разделен на восемь фрагментов размером 512 байт. Пусть первый, четвертый, пятый и седьмой фрагменты диска были выделены для файлов размером 512 байт каждый, а второй, третий, шестой и восьмой фрагменты остались свободными. Несмотря на то, что свободно четыре фрагмента общим объемом 2048 байт, они не будут выделены для неполного логического блока, требующего наличия четырех свободных фрагментов (2048 байт), поскольку все фрагменты, входящие в одну группу размещения, должны располагаться последовательно.

Поскольку фрагменты, выделенные для размещения файла или каталога, должны располагаться последовательно, то фрагментация свободного дискового пространства может привести к тому, что операция с файловой системой не будет выполнена даже в том случае, если общий объем свободного дискового пространства достаточен для выполнения операции. Например, для записи в файл нулевой длины одного логического блока требуется выделить один блок памяти размером 4096 байт. Если свободное пространство файловой системы фрагментировано и состоит из 32 несмежных фрагментов размером по 512 байт (всего 16 Кб), то операция записи выполнена не будет, поскольку система не сможет найти восемь последовательных фрагментов (4096 байт дискового пространства), необходимых для выполнения операции.

Для дефрагментации свободного дискового пространства файловой системы можно воспользоваться командой defragfs. Выполнение команды defrags приводит к повышению производительности системы.

Увеличивается таблица размещения фрагментов

Для хранения таблиц размещения фрагментов в файловых системах с размером фрагмента менее 4096 байт может потребоваться больше виртуальной памяти и дискового пространства. Фрагменты представляют собой основные блоки выделения дискового пространства и состояние каждого фрагмента файловой системы записывается в таблицу размещения.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]