Лекция 10. Файловые системы Unix

Вид материалаЛекция

Содержание


2Файловая система System V (s5fs)
2.2Индексные дескрипторы
2.3Имена файлов
2.4Недостатки s5fs
3Файловая система BSD UNIX (Berkeley Fast File System – FFS)
4Современные файловые системы
Digital unix 4.0
Подобный материал:
Лекция 10. Файловые системы Unix


1История Unix



История операционной системы Unix начинается с 1969 года, когда в рамках научно-исследовательского проекта фирмы Bell Labs концерна AT&T был разработана небольшая ОС. В 1979 году была выпущена первая коммерческая версия (V7). После выхода V7 была создана «Группа поддержки Unix», впоследствии преобразованная в Unix System Laboratories (USL). Верcия Unix этой лаборатории – System V получила широкое распространение и оказала большое влияние на развитие современных вычислительных систем.

Операционная система Berkeley Unix была создана в 1977, когда Исследовательская группа вычислительных систем Калифорнийского университета в Беркли приобоела лицензию на исходный код V6 у AT&T. Версии, выпускаемые этой группы, получили название BSD (Berkeley Software Distribution). Их выпуск начался с версии 1BSD для PDP-11 и достиг кульминации в 1993, когда вышла 4.4BSD.


Cейчас среди основных производителей UNIX и UNIX-подобных операционных систем находятся компании UNIX System Laboratories (с прошлого года - подразделение компании Novell - UNIX System V), BSDI (BSD UNIX), Santa Cruz Operation (SCO UNIX), Sun Microsystems (Interactive UNIX и Solaris), Open Software Foundation (OSF/1), IBM (AIX), Hewlett-Packard (HP-UX) и так далее (этот список далеко не полон).

Большинство современных вариантов ОС UNIX оснащено так называемыми оконными системами, позволяющими производить удобные и наглядные интерфейсы прикладных систем с использованием современных графических дисплеев. В разнообразных вариантах ОС UNIX использовались оконные системы Х Window, SunWindows, NeWS и т. д. К сегодняшнему дню безусловным победителем является Х Window.

Стуация со стандартизацией интерфейсов ОС UNIX более сложна. Наиболее серьезную работу проводит специально созданный для этих целей комитет IEEE, разрабатывающий набор стандартов под общим названием POSIX. Набор стандартов POSIX охватывает различные аспекты - от командного языка до интерфейсов с языками высокого уровня, однако работа еще далека от завершения (и, скорее всего, никогда не будет выполнена в полном объеме). Удалось выработать и принять стандарт интерфейса пользовательских программ с системой. Основой этого стандарта является набор системных вызовов (функций, обеспечиваемых ядром ОС UNIX), который должен поддерживаться в любой системе, объявляющей себя совместимой с UNIX. Наибольшее влияние на стандарт интерфейса программ с системой оказали UNIX System V и UNIX BSD 4.2. При выпуске всех известных последних версий системы было объявлено о соответствии систем этому стандарту POSIX.

2Файловая система System V (s5fs)


Каждый жесткий диск состоит из одной или нескольких логических частей, называемых разделами. Расположение и размер раздела определяются при форматировании диска. В Unix разделы выступают в качестве независимых устройств, доступ к которым осуществляется как к различным носителям данных. Например, диск может состоять из четырех разделов, каждый из которых содержит свою файловую систему.

Файловая система s5fs занимает раздел диска и состоит из трех основных компонентов.






Суперблок Содержит общую информацию о файловой системе, например, об архитектуре, общем числе блоков и индексных дескрипторов, или метаданных (inode).


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


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

2.1Суперблок


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


Суперблок содержит следующую информацию
  • Тип файловой системы (s_type)
  • Размер файловой системы в логических блоках, включая сам суперблок, ilist и блоки хранения данных (s_fsize)
  • Размер массива индексных дескрипторов (s_isize)
  • Число свободных блоков, доступных для размещения (s_tfree)
  • Число свободных inode, доступных для размещения (s_tinode)
  • Флаги (флаг модификации s_fmod, флаг режима монтирования s_fronly)
  • Размер логического блока (512, 1024, 2048)
  • Список номеров свободных inode
  • Список адресов свободных блоков


Поскольку число свободных inode и блоков хранения данных может быть значительным, хранение двух последних списков целиком в суперблоке непрактично. Например, для индексных дескрипторов хранится только часть списка. Когда число свободных inode в этом списке приближается к 0, ядро просматривает ilist и вновь формирует список свободных inode. Для этого ядро анализирует поле di_mode индексного дескриптора, которое равно 0 у свободных inode.


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


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

2.2Индексные дескрипторы



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


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


При открытии файла ядро помещает копию дискового inode в память в специальную таблицу in-core inode, которая содержит несколько дополнительных полей.


Структура дискового inode:

di_mode Тип файла, дополнительные атрибуты выполнения и права доступа.

di_nlinks Число ссылок на файл, т.е. количество имен данного файла

di_uid,di_gid идентификаторы владельца пользователя и владельца группы

di_size Размер файла в байтах. Для специальных файлов это поле содержит старший и младший номера устройств.

di_atime Время последнего доступа к файлу

di_mtime Время последней модификации

di_ctime Время последней модификации inode

di_addr[13] Массив адресов дисковых блоков хранения данных

Индексный днскриптор содержит информацию о расположении данных файла. Эта информация хранится в виде массива, каждый элемент которого содержит физический адрес дискового блока, а индексом массива является номер логического блока файла. Массив имеет фиксированный размер и состоит из 13 элементов. При этом первые 10 элементов адресуют непосредственные блоки хранения данных файла. Одинадцатый элемент адресует блок, который содержит указатели еще на 256 блоков хранения данных, двенадцатый на 65536 (256*256) блоков, и наконец тринадцатый на 16777216 (256*256*256) блоков.

2.3Имена файлов


Имя файла хранится в файлах специального типа – каталогах. Каталог файловой системы s5fs представляет собой таблицу, каждый элемент которой имеет фиксированный размер в 16 байтов: 2 байта хранят номер индексного дескриптора файла, а 14 -–его имя. Это накладывает ограничение на число inode (655536) и на длину имени.

2.4Недостатки s5fs

  1. Единственный суперблок. Повреждение суперблока ведет к краху всей файловой системы.
  2. Низкая производительность. Индексы и данные находятся в разных места и, следовательно, требуется время на перемещение головки дтска.
  3. Фиксированный размер массива индексов. Ограниченное число файлов.
  4. Нет поддержки длинных имен.



3Файловая система BSD UNIX (Berkeley Fast File System – FFS)



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


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


Структура каталога поддерживает длинные имена (256 символов). Вместо записей фиксированной длины запись каталога FFS представлена структурой, имеющей следующие поля:

d_ino Номер inode (индекс в массиве в ilist)

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

d_namelen Длина имени файла

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


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

4Современные файловые системы



В ОС Unix существует восемь типов файлов
  1. обычные файлы
  2. каталоги
  3. байт-ориентированные файлы устройств
  4. блок ориентированные файлы устройств
  5. доменные гнезда
  6. именованные каналы
  7. жесткие ссылки. Дополнительное имя файла
  8. символические ссылки. Обеспечивает возможностьвместо путевого имени файла указывать имя ссылки.


Современные реализации Unix усовершенствовали традиционную файловую систему: оптимизирован размер блоков, использующихся для хранения файлов на диске и для совместного хранения частичных хвостов файлов. Пять производителей разработали 64-разрядные файловые системы, позволяющие файлам и каталогам превышать традиционные 32-разрядные ограничения. Большинство производителей ввели виртуальные тома - промежуточные звенья между файловой системой и структурой диска. Они позволяют разделам реплицироваться, легко расширяться или делиться на части, к которым возможен параллельный доступ, что ускоряет время обращения к диску - stripping. Некоторые файловые системы обладают возможностью роста on-line, а файлы в них могут быть дефрагментированы, запакованы или распакованы "на лету". В реализациях Digital Unix, SGI IRIX и NT имеется графический интерфейс управления файловой системой. Используя методы иерархического управления данными, файловую систему можно автоматически переселить на более дешевый носитель. В большинстве случаев журналирование заменило утилиту fsck: изменения файловой системы заносятся в журнал, который быстро проигрывается при перезагрузке, что обеспечивает согласованность каталогов со структурой диска. Для повышения производительности могут использоваться экстенты - непрерывные области на диске, выделяемые файлам. В результате, например, XFS (IRIX 6.2) в состоянии гарантировать указанную скорость обмена в реальном времени.


OC

AIX 4.2

HP-UX 10.1

Solaris 2.5

DIGITAL UNIX 4.0

IRIX 6.2

Windows NT 4.0

Convex SPP-UX

Cray UNICOS V9

Файл. система >2Гбайт

да (64 Гбайт)

да (128 Гбайт)

да (1 Тбайт)

да (1 Тбайт)

да (9m Тбайт)

да (1 Тбайт)

да (9m Тбайт)

да (1 Тбайт)

Файлы >2Гбайт

да (64 Гбайт)

нет (128 Гбайт в 9/96)

нет (1997?)

да (1 Тбайт)

да (9m Тбайт)

да (9m Тбайт)

да (1 Тбайт)

да (9 Тбайт)

Журналирование

файл. системы

да

да

да (дополн)

да (ФС данные)

да

да

нет

нет

On-line сжатие

нет

да

да

да

нет

нет

да

-

On-line дефрагментация

да

да

нет

да (дополн.)

нет

да

да

-

Упаковка/распаковка

да

нет

да

нет

нет (XFS) да (EFS)

да

-

-