Файловая система BSD UNIX




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

Файловая система Linux – ext2 (ext3) – очень похожа на файловую систему ufs.

Свойства файловой системы ext2:

максимальный размер файловой системы 4 Тбайт

максимальный размер файла 2 Гбайт

максимальная длина имени файла 255 символов

максимальный размер блока 1024 байт

количество выделяемых индексных дескрипторов 1 на 4096 байт раздела

 

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

Организация Ф.С. предусматривает деление дискового раздела на несколько групп цилиндров (cylinder group). Группа цилиндров – это последовательность из нескольких дисковых цилиндров. Каждая группа цилиндров содержит Boot-блок, резервную копию суперблока, массив inode, данные о свободных блоках и итоговую информацию об использовании блоков в этой группе (рис. 3).

Рис. 3. Структура файловой системы ufs

 

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

· Управляющая информация размещается не в начале группы цилиндров, а с некоторым смещением от начала. Иначе для всех групп она бы располагалась на одной пластине диска и могла бы быть уничтожена при выходе из строя этой пластины. Это смещение выбирается равным одному сектору (?) относительно предыдущей группы, т.о. для соседних групп она начинается на разных пластинах диска. Потеря одного сектора, цилиндра или пластины не приведет к потере всех копий суперблока.

Размер блока может быть увеличен (аж!) до 64к. Кажется, что это может привести к колоссальной потере дискового пространства (до 60 %) Но этот недостаток преодолен за счет возможной фрагментации блока. Каждый блок может быть разбит на 2, 4 или 8 фрагментов. Блок является единицей передачи данных в операциях ввода-вывода. Фрагмент определяет адресуемую единицу хранения данных на диске. Минимальный размер фрагмента определяется размером сектора (единицей адресации диска). Информация о свободном пространстве в группе цилиндров хранится не в виде списка, а в виде битовой карты блоков, которая описывает свободное пространство в фрагментах, для определения того, свободен ли данный блок или не.. Ядро анализирует биты фрагментов, составляющих блок (рис. 4)

 

 

 
 
 
 
 
 

 

 

Адреса

блоков/

фрагментов

 

 

Блоки хранения данных

                 

 

 

Карта свободных блоков/фрагментов

 

Рис. 4

 

При размещении блоков используется стратегия, направленная на увеличение производительность Ф.С. Вот ее некоторые принципы:

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

- все файлы каталога по возможности размещаются в одной группе цилиндров (т.к. многие команды работают с файлами одного и того же каталога);

- каждый новый каталог по возможноти помещается в группу цилиндров, отличную от группы родительского каталога (для равномерного распределения данных по диску);

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

В предельном варианте, когда все данные локализованы в одной большой группе цилиндра, получаем s5fs. Но параметры файловой системы ufs начинают резко ухудшаться по мере уменьшения свободного места, т.к. размещение блоков становится далеким от оптимального. Практика показывает, что Ф.С. имеет удовлетворительные характеристики при наличии более 10% свободного места.

 

Структура каталога ufs была изменена для поддержки длинных (до 255 символов) имен.

Вместо записей фиксированной длины (16 байт) имеются записи переменной длины:

d_ino номер inode

d_reclen длина записи

d_namlen длина имени файла

d_name[ ] имя файла, дополненное нулями до 4-байтной границы.

При удалении имени файла принадлежащая ему запись присоединяется к предыдущей и значение ее поля d_reclen увеличивается на соответствующую величину. Удаление первой записи выражается в присвоении нулевого значения полю d_ino.

 





©2015-2017 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.

Обратная связь

ТОП 5 активных страниц!