logo
Лекции / Novel, Unix, WindowsNT

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

Файловая система UNIX характеризуется:

Файловая система организована в виде дерева с одной исходной вершиной, которая называется корнем (записывается: “/”); каждая вершина в древовидной структуре файловой системы, кроме листьев, является каталогом файлов, а файлы, соответствующие дочерним вершинам, являются либо каталогами, либо обычными файлами, либо файлами устройств. Имени файла предшествует указание пути поиска, который описывает место расположения файла в иерархической структуре файловой системы. Имя пути поиска состоит из компонент, разделенных между собой наклонной чертой (/); каждая компонента представляет собой набор символов, составляющих имя вершины (файла), которое является уникальным для каталога (предыдущей компоненты), в котором оно содержится. Полное имя пути поиска начинается с указания наклонной черты и идентифицирует файл (вершину), поиск которого ведется от корневой вершины дерева файловой системы с обходом тех ветвей дерева файлов, которые соответствуют именам отдельных компонент.

Основным понятием в системе UNIXявляется файл. Файл это именованный набор данных хранящийся на внешних устройствах и доступный для чтения и записи. Существует единая система для описания томов, дисков, файлов, устройств и т.п., объединяющая все устройства в системе под общим названием файл.

Файловая система UNIXблизка к индексной с последовательным доступом (ISAM Indexed Sequential Access Method), которая может быть установлена дополнительно.Такой метод в последние годы получил право стандарта какX/Open стандарт для Си интерфейса

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

Сама файловая система имеет иерархическую систему каталогов и файлов, начиная с корневого каталога как показано на рисунке.

Каждая файловая система имеет четыре основные части:

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

Каждый индексный узел содержит nуказателей, причем первыеn-3непосредственно ссылаются на блоки данных файла а так как размер блока в файловой системеUNIXопределен в 512 байт, то для организации файла длиной больше чем(n-3)*512байт используетсяn-2-й указатель -узла, ссылающийся на косвенный индексный блок изnссылок(указателей)на блоки данных если и этого недостаточно для размещения файла то используется и указательn-1индексного узла как указатель на второй косвенный блок. Если же и этого недостаточно то используется последнийn-й указатель на третий косвенный блок. В косвенных блоках возможна такая же система индексной адресации, но без дополнительных косвенных ссылочный блоков, то есть указатели могут быть направлены только на блоки данных.

Примечание: В разных системах UNIX разрешены разные размеры индексных блоков, и таким образом разные UNIX системы могут иметь несовместимые файловые системы.

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

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

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

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

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

Обратный процесс называется де монтированием и осуществляется с помощью команды umount/

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

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

Характерной чертой файловой системы UNIX является проблема восстановления файловой системы. Эта проблема возникает от того, что при некоторых ситуациях возможно нарушения адресации в индексных узлах с появлением висячих ссылок, не адресуемых блоков(вне файловой системы) и наоборот блоков с множественными ссылками, а также дублирование индексации блока в списке свободных и занятых блоков. Устранение таких сбоем ограниченно возможно путем длительного тестирования файловой системы программойfsck.

Работа этой программы протекает в несколько этапов, проверки блоков и их количества, тестирования системы ссылок, проверки свободных и занятых блоков и узлов.