Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие_Unix.doc
Скачиваний:
4
Добавлен:
26.11.2019
Размер:
2.41 Mб
Скачать

2.8 Особенности размещения файловой системы ffs (ufs)

Файловая система s5fs привлекательна благодаря своей простоте. Однако, имеет низкую надежность и производительность.

Слабое место с точки зрения надежности – суперблок. Он несет основную информацию о файловой системе и в случае его повреждения система не сможет использоваться.

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

Дисковое пространство используется тоже не оптимально. Лучше использовать блоки больших размеров. Это ведет к тому, что за одну операцию ввода/вывода считывается большее количество данных.

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

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

Все эти недостатки привели к созданию новой ф/с Fast File Sysytem – FFS, которая появилась в версии 4.2BSD. Сейчас она известна под названием ufs (Unix file System).

Рисунок 2.9 Структура файловой системы ffs (ufs).

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

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

Теперь данные располагаются ближе к inode, что сокращает время доступа. Это также повышает надежность, умеьншая вероятность потери всех inode при сбое системы.

Длина имен файлов увеличена до 255 символов.

Размер блока данных увеличен до 64 кбайт. А для того, чтобы не создавалось множество не до конца заполненных блоков, введена возможность фрагментации блока. Каждый блок может быть разбит на от 1 до 8 фрагментов (кластеров). При этом блок является единицей передачи данных в операциях ввода/вывода, фрагмент – адресуемой единицей хранения данных на диске. Размет фрагмента задается при создании ф/с.

Информация о свободном пространстве в группе хранится не в виде списка свободных блоков, а в идее битовой карты блоков. Ядро анализирует биты фрагментов, составляющих блок, и ставит им в соответствие 1, если он занят и 0 – если пуст.

Изменена стратегия размещения блоков:

  • файл по возможности располагается в блоках, принадлежащих одной группе

  • все файлы каталога по возможности располагаются в одной группе

  • каждый новый каталог по возможности помещается в новую группу, что ведет к равномерному заполнению диска

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

Усовершенствована структура индексного дескриптора.

Рисунок 2.10 Структура дискового inode ffs (ufs).

В стандартной на сегодняшний день для UNIX файловой системе ufs для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт. Первые 12 полей непосредственно указывают на блоки данных. Если кластер имеет размер 8 Кбайт (максимальный размер кластера, поддерживаемого в ufs), то таким образом можно адресовать файл размером до 8192x12 - 98 304 байт.

13-й элемент адреса используется для косвенной адресации. При размере в 8 Кбайт кластер, на который указывает 13-й элемент, может содержать 2048 номеров следующих кластеров данных файла и размер файла может возрасти до 8192х(12+2048)=16 875 520 байт.

14-е поле применяется для двойной косвенной адресации. С ее помощью можно адресовать кластеры в файлах, содержащих до 8192х(12+2048+20482) = 3,43766x10'° байт.

И наконец, 15-е поле используется для тройной косвенной адресации.

Таким образом, файловая система ufs при размере кластера в 8 Кбайт поддерживает файлы, состоящие максимум из 70 триллионов байт данных, хранящихся в 8 миллиардах кластеров. FFS хорошо работает при наличии более 10 % свободного места на диске.

Linux использует файловую систему ext2(ext3), которая очень похожа на ufs с использованием фрагментов фиксированного размера – 1Кбайт.