А. Робачевский - Операционная система UNIX (1114671), страница 56
Текст из файла (страница 56)
К этому же эффекту приводит фрагментация файловой системы,поскольку отдельные блоки файла оказываются разбросанными по всемуразделу диска.Использование дискового пространства также не оптимально. Для увели!чения производительности файловой системы более предпочтительнымявляется использование блоков больших размеров. Это позволяет считы!вать большее количество данных за одну операцию ввода/вывода. Так, на!пример, в UNIX SVR2 размер блока составлял 512 байтов, а в SVR3 — уже1024 байтов. Однако поскольку блок может использоваться только однимфайлом, увеличение размера блока приводит к увеличению неиспользуе!мого дискового пространства за счет частичного заполнения последнегоблока файла.
В среднем для каждого файла теряется половина блока.Массивимеет фиксированный размер, задаваемый при созданиифайловой системы. Этот размер накладывает ограничение на максималь!ное число файлов, которые могут существовать в файловой системе. Рас!положение границы между метаданными файлов и их д а н н ы м и (блокамихранения данных) может оказаться неоптимальным, приводящим либо кнехватке inode, если файловая система хранит файлы небольшого размера,либо к нехватке дисковых блоков для хранения файлов большого размера.Поскольку динамически изменить эту границу невозможно, всегда оста!нется неиспользованное дисковое пространство либо в массиве inode, либов блоках хранения данных.Наконец, ограничения, накладываемые на длину имени файла (14 симво!лов) и общее максимальное число inodeтакже являются слишкомжесткими.www.books-shop.com288Глава 4.Все эти недостатки привели к разработке новой архитектуры файловойсистемы, которая появилась в версии 4.2BSD UNIX под названиемBerkeley Fast File System, или FSS.Файловая система BSD UNIXВ версии 4.3BSD UNIX были внесены существенные улучшения в архи!тектуру файловой системы, повышающие как ее производительность, таки надежность.
Новая файловая система получила название Berkeley FastFile System (FFS).Файловая система FFS, обладая полной функциональностью системы s5fs,использует те же структуры данных ядра. Основные изменения затронулирасположение файловой системы на диске, дисковые структуры данных иалгоритмы размещения свободных блоков.Как и в случае файловой системы s5fs, суперблок содержит общее описа!ние файловой системы и располагается в начале раздела. Однако в супер!блоке не хранятся данные о свободном пространстве файловой системы,такие как массив свободных блоков иПоэтому данные суперблокаостаются неизменными на протяжении всего времени существования фай!ловой системы.
Поскольку данные суперблока жизненно важны для рабо!ты всей файловой системы, он дублируется для повышения надежности.Организация файловой системы предусматривает логическое деление дис!кового раздела на одну или несколько групп цилиндров (cylinder group).Группа цилиндров представляет собой несколько последовательных диско!вых цилиндров. Каждая группа цилиндров содержит управляющую ин!формацию, включающую резервную копию суперблока, массив inode, дан!ные о свободных блоках и итоговую информацию об использовании дис!ковых блоков в группе (рис.
4.4).Рис. 4.4. Структура файловой системы FFSwww.books-shop.comФайловая система BSD UNIX289Для каждой группы цилиндров при создании файловой системы выделяет!ся место под определенное количествоПри этом обычно на каждые2 Кбайт блоков хранения данных создается один inode. Поскольку разме!ры группы цилиндров и массива inode фиксированы, в файловой системеBSD UNIX присутствуют ограничения, аналогичные s5fs.Идея такой структуры файловой системы заключается в создании класте!ров inode, распределенных по всему разделу, вместо того, чтобы группиро!вать все inode в начале. Тем самым уменьшается время доступа к даннымконкретного файла, поскольку блоки данных располагаются ближе к адре!сующем их inode.
Такой подход также повышает надежность файловойсистемы, уменьшая вероятность потери всех индексных дескрипторов врезультате сбоя.Управляющая информация располагается с различным смещением от на!чала группы цилиндров. В противном случае, например, при размещениив начале группы цилиндров, информация всех групп оказалась бы физиче!ски расположенной на одной пластине диска и могла бы быть уничтоженапри выходе из строя этой пластины.
Это смещение выбирается равнымодному сектору относительно предыдущей группы, таким образом для со!седних групп управляющая информация начинается на различных пласти!нах диска. В этом случае потеря одного сектора, цилиндра или пластиныне приведет к потере всех копий суперблоков.Производительность файловой системы существенным образом зависит отразмера блока хранения данных. Чем больше размер блока, тем большееколичество данных может быть прочитано без поиска и перемещения дис!ковой головки. Файловая система FFS поддерживает размер блока до 64Кбайт. Проблема заключается в том, что типичная файловая системаUNIX состоит из значительного числа файлов небольшого размера. Этоприводит к тому, что частично занятые блоки используются неэффектив!но, что может привести к потере до 60% полезной емкости диска.Этот недостаток был преодолен с помощью возможности фрагментацииблока.
Каждый блок может быть разбит на два, четыре или восемь фраг!ментов. В то время как блок является единицей передачи данных в опера!циях ввода/вывода, фрагмент определяет адресуемую единицу храненияданных на диске. Таким образом был найден компромисс между произво!дительностью ввода/вывода и эффективностью хранения данных. Размерфрагмента задается при создании файловой системы, его максимальноезначение определяется размером блока (0,5 размера блока), а минималь!ный — физическими ограничениями дискового устройства, а именно: ми!нимальной единицей адресации диска — сектором.Информация о свободном пространстве в группе хранится не в виде спи!ска свободных блоков, а в виде битовой карты блоков. Карта блоков, свя!занная с определенной группой цилиндров, описывает свободное про!странство в фрагментах, для определения того, свободен данный блок илиȾɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.comГлава 4.
Файловая290нет, ядро анализирует биты фрагментов, составляющих блок. На рис. 4.5приведен пример карты свободных блоков и соответствия между битамикарты, фрагментами и блоками группы цилиндров.Рис. 4.5. Карта свободных блоковСущественные изменения затронули алгоритмы размещения свободныхблоков ивлияющие на расположение файлов на диске.
В файловойсистеме s5fs используются весьма примитивные правила размещения. Сво!бодные блоки и inode просто выбираются из конца соответствующего спи!ска, что со временем приводит, как уже обсуждалось, к значительномуразбросу данных файла по разделу диска.В отличие от s5fs, файловая система FFS при размещении блоков исполь!зует стратегию, направленную на увеличение производительности.
Неко!торые из принципов приведены ниже:Файл по возможности размещается в блоках хранения данных, при!надлежащих одной группе цилиндров, где расположены его мета!данные. Поскольку многие операции файловой системы включаютработу, связанную как с метаданными, так и с данными файла, этоправило уменьшает время совершения таких операций.Все файлы каталога по возможности размещаются в одной группецилиндров. Поскольку многие команды работают с несколькимиwww.books-shop.comФайловая система BSD UNIXфайлами одного и того же каталога, данный подход увеличивает ско!рость последовательного доступа к этим файлам.Каждый новый каталог по возможности помещается в группулиндров,от группы родительского каталога.
Таким обра!зом достигается равномерное распределение данных по диску.Последовательные блоки размещаются исходя из оптимизации фи!зического доступа. Дело в том, что существует определенный проме!жуток времени между моментом завершения чтения блока и началомчтения следующего. За это время диск успеет совершить оборот нанекоторый угол. Таким образом, следующий блок должен по воз!можности располагаться с пропуском нескольких секторов. В этомслучае при чтении последовательных блоков не потребуется совер!шать "холостые" обороты диска.Таким образом, правила размещения свободных блоков, с одной стороны,направлены на уменьшение времени перемещения головки диска, т.
е. налокализацию данных в однойцилиндров, а с другой — намерное распределение данных по диску. От разумного баланса между эти!ми двумя механизмами зависит, в конечном итоге, производительностьфайловой системы. Например в предельном варианте, когда все данныелокализованы в одной большой группе цилиндров, мы получаем т и п и ч н у юфайловую систему s5fs.Описанная архитектура является весьма эффективной с точки зрения на!дежности и производительности.