* 1. Структура и назначение файловой системы. Пользователь Файл Процесс Всё, что существует в системе статически, суть файлы Всё, что существует в системе в динамике, суть процессы Все, кто тем или иным образом взаимодействует с системой - ее процессами и ее файлами, - суть пользователи 1. Структура и назначение файловой системы. «Файлы являются логическими информационными блоками, создаваемыми процессами… Можно рассматривать каждый файл как разновидность адресного пространства, за исключением того, что файлы используются для моделирования диска, а не оперативной памяти.» Таненбаум Э. «В самом общем виде файл можно определить … как… последовательность байтов, идентифицируемую тем или иным образом. Причем имя … не единственный и даже не главный способ его идентификации.» Федорчук А. 1. Структура и назначение файловой системы. В Unix'ах всякого рода файл состоит из двух частей, не обязательно находящихся в одном месте (а в общем случае - как раз разобщенных). Первая часть файла - так называемая область метаданных В inode содержатся некоторые сведения о файле (именуемые атрибутами файла): • идентификаторы файла и устройства, на котором он расположен; • тип файла; • счетчик ссылок; • его размер; • атрибуты принадлежности, доступа, режима и времени. 1. Структура и назначение файловой системы. Вторая часть файла - Область данных файла заключает в себе ту информацию, для хранения которой файл и предназначен. Она может быть самой различной - текстовые символы, двоичные коды и многое другое. Область данных не является непременной принадлежностью файла. Существуют файловые системы, которые умудряются разместить данные маленьких файлов в области метаданных, чем достигается как быстрота доступа к хранимой информации, так и экономия дискового пространства 1. Структура и назначение файловой системы. Классификация файлов • • • • • каталоги; символические ссылки; специальные файлы устройств; именованные каналы и сокеты; обычные, или регулярные, файлы. 1. Структура и назначение файловой системы. Каталоги – это списки имен входящих в них файлов и числовых идентификаторов (идентификатор - это просто порядковый номер, уникальный для файловой системы. Именно по нему ОС считывает информацию из конкретного файла - то есть из области его данных) И потому метафора библиотечного каталога (или книжного оглавления) как нельзя лучше отражает физический смысл соответствующего понятия. 1. Структура и назначение файловой системы. Символическая ссылка - это самостоятельный файл, со своим идентификатором и прочими атрибутами, записанными в области метаданных, и со своими данными, которые представляют собой указание пути к собственно файлу или каталогу, на который эта ссылка указывает. Причем файл этот может лежать не только на иной файловой системе (дисковом разделе), но даже находиться на иной машине в локальной или даже глобальной сети. 1. Структура и назначение файловой системы. Специальные файлы устройств Символьные специальные файлы имеют отношение к вводу-выводу и используются для моделирования последовательных устройств ввода-вывода, к которым относятся терминалы, принтеры и сети. Блочные специальные файлы используются для моделирования дисков. 1. Структура и назначение файловой системы. Каналы и сокеты Специальные виды файлов - именованные каналы (named pipe) и сокеты (socket), - предназначены для обмена данными между процессами. Они важны для разработчиков ПО, пользователь с ними, как правило, напрямую не общается. 1. Структура и назначение файловой системы. К типу обычных файлов отнесено все, что не является каталогами, символическими ссылками, файлами устройств, каналами и сокетами. 1. Структура и назначение файловой системы. Реализация файлов 1. Непрерывное размещение Простейшая схема размещения заключается в хранении каждого файла на диске в виде непрерывной последовательности блоков. Таким образом, на диске с блоками, имеющими размер 1 Кбайт, файл размером 50 Кбайт займет 50 последовательных блоков. При блоках, имеющих размер 2 Кбайт, ему будет распределено 25 последовательных блоков. 1. Структура и назначение файловой системы. Реализация файлов 1. Непрерывное размещение Преимущества • простая реализация, поскольку отслеживание местонахождения принадлежащих файлу блоков сводится всего лишь к запоминанию двух чисел: дискового адреса первого блока и количества блоков в файле. • превосходная производительность считывания, поскольку весь файл может быть считан с диска за одну операцию. Для нее потребуется только одна операция позиционирования (на первый блок). После этого никаких позиционирований или ожиданий подхода нужного сектора диска уже не потребуется, поэтому данные поступают на скорости, равной максимальной пропускной способности диска. Недостатки: • со временем диск становится фрагментированным. 1. Структура и назначение файловой системы. Реализация файлов 2. Размещение с использованием связанного списка блоков Первое слово каждого блока используется в качестве указателя на следующий блок, а вся остальная часть блока предназначается для хранения данных. 1. Структура и назначение файловой системы. Реализация файлов 2. Размещение с использованием связанного списка блоков Преимущества • Отсутствуют потери дискового пространства на фрагментацию (за исключением внутренней фрагментации в последнем блоке). • достаточно, чтобы в записи каталога хранился только дисковый адрес первого блока Недостатки: • произвольный доступ является слишком медленным. Чтобы добраться до блока N, операционной системе нужно начать со стартовой позиции и прочитать поочередно N - 1 предшествующих блоков. • объем хранилища данных в блоках уже не кратен степени числа два, поскольку несколько байтов отнимается указателем. 1. Структура и назначение файловой системы. Реализация файлов 3. Размещение с помощью связанного списка, использующего таблицу в памяти Оба недостатка размещения с помощью связанных списков могут быть устранены за счет изъятия слова указателя из каждого дискового блока и помещения его в таблицу в памяти. FAT(File Allocation Table — таблица размещения файлов). 2 1. Структура и назначение файловой системы. Реализация файлов 3. Размещение с помощью связанного списка, использующего таблицу в памяти Преимущества • упрощается произвольный доступ. Хотя для поиска заданного смещения в файле по-прежнему нужно идти по цепочке, эта цепочка целиком находится в памяти, поэтому проход по ней может осуществляться без обращений к диску. Недостатки: • вся таблица должна постоянно находиться в памяти. Для 200гигабайтного диска, имеющего блоки размером 1 Кбайт, потребовалась бы таблица из 200 млн записей, Каждая запись должна состоять как минимум из 3 байт. Для ускорения поиска размер записей должен быть увеличен до 4 байт. Таким образом, таблица будет постоянно занимать 600 или 800 Мбайт оперативной памяти, в зависимости от того, как оптимизирована система, под экономию пространства или под экономию времени. По мере роста размера диска эта таблица растет пропорционально его размеру 1. Структура и назначение файловой системы. Реализация файлов 4. I-узлы (index-node — индекс-узел) 1. Структура и назначение файловой системы. Реализация файлов 4. I-узлы (index-node — индекс-узел) Преимущества • i-узел должен быть в памяти только в том случае, когда открыт соответствующий файл. Если каждый i-узел занимает N байт, а одновременно может быть открыто максимум k файлов, общий объем памяти, занимаемой массивом, хранящим i-узлы открытых файлов, составляет всего лишь kN байт. Заранее нужно будет зарезервировать только этот объем памяти. Для схемы, использующей i-узлы, нужен массив в памяти, чей размер пропорционален максимальному количеству одновременно открытых файлов. При этом неважно, будет ли размер диска 10 Гбайт, 100 Гбайт или 1000 Гбайт. 1. Структура и назначение файловой системы. Реализация файлов 4. I-узлы (index-node — индекс-узел) Недостатки: • Если каждый узел имеет пространство для фиксированного количества дисковых адресов, то что произойдет, когда файл перерастет этот лимит? Одно из решений заключается в резервировании последнего дискового адреса не для блока данных, а для блока, содержащего дополнительные адреса блоков 1. Структура и назначение файловой системы. 1. Структура и назначение файловой системы. Сектор 0 на диске называется главной загрузочной записью — MBR (Master Boot Record) и используется для загрузки компьютера. В конце MBR содержится таблица разделов. (55AA16) При загрузке компьютера BIOS (базовая система ввода-вывода) считывает и выполняет код MBR. Первое, что делает программа MBR, — находит расположение активного раздела, считывает его первый блок, который называется загрузочным, и выполняет его. Программа в загрузочном блоке загружает операционную систему, содержащуюся в этом разделе. 1. Структура и назначение файловой системы. Для достижения единообразия каждый раздел начинается с загрузочного блока, даже если он не содержит загружаемой операционной системы. Кроме того, в будущем он может содержать какую-нибудь операционную систему. 1. Структура и назначение файловой системы. Суперблок. В нем содержатся все ключевые параметры файловой системы, которые считываются в память при загрузке компьютера или при первом обращении к файловой системе. Обычно в информацию суперблока включается «магическое» число, позволяющее идентифицировать тип файловой системы, количество блоков в файловой системе, а также другая важная административная информация. 1. Структура и назначение файловой системы. Информация о свободных блоках файловой системы, к примеру, в виде битового массива или списка указателей. 1. Структура и назначение файловой системы. i-узлы, массив структур данных, на каждый файл по одной структуре, в которой содержится вся информация о файле. Затем может размещаться корневой каталог, содержащий вершину дерева файловой системы. Оставшаяся часть диска содержит все остальные каталоги и файлы. 2. Основные файловые системы, применяемые в современных ОС. Файловые системы компакт-дисков Файловая система ISO 9660 Одна из целей этого стандарта — сделать каждый компакт-диск читаемым на любом компьютере, независимо от использующегося порядка следования байтов и независимо от используемой операционной системы. 2. Основные файловые системы, применяемые в современных ОС. Файловые системы компакт-дисков Файловая система ISO 9660 У компакт-диска отсутствуют концентрические цилиндры, имеющиеся у магнитных дисков. Вместо них используется одна протяженная спираль с записью битов в линейной последовательности (хотя возможность перемещения головок поперек спирали сохранилась). Биты на протяжении этой спирали разбиты на логические блоки (которые также называют логическими секторами) по 2352 байта. Некоторые из них предназначены для преамбул, коррекции ошибок и других служебных данных. Полезная часть каждого логического блока занимает 2048 байт. Когда компакт-диск используется для музыкальных записей, на нем имеются начальные, конечные и промежуточные пустые места, которые не используются для компакт-дисков с данными. Зачастую позиция блока на спирали приводится в минутах и секундах. Она может быть преобразована в номер линейного блока, используя соотношение 1 с = 75 блоков. 2. Основные файловые системы, применяемые в современных ОС. Файловые системы компакт-дисков Файловая система ISO 9660 Запись каталога в стандарте ISO 9660 2. Основные файловые системы, применяемые в современных ОС. Файловые системы компакт-дисков Файловая система ISO 9660 (Расширения Rock Ridge) расширение, позволяющим реализовать файловые системы UNIX на компакт-диске. Любая система, не работающая с расширениями Rock Ridge, просто игнорирует их и видит обычный компакт-диск. Расширения делятся на следующие поля: 1. РХ - Атрибуты POSIX. 2. PN — Старший и младший номера устройств. 3. SL — Символическая ссылка. 4. NM — Альтернативное имя. 5. CL — Расположение дочернего каталога. 6. PL — Расположение родительского каталога. 7. RE — Перемещение. 8. TF — Отметки времени. 2. Основные файловые системы, применяемые в современных ОС. Файловые системы компакт-дисков Файловая система ISO 9660 (Расширения Joliet) Расширить ISO 9660 стремилось не только сообщество UNIX. Компания Microsoft также сочла этот стандарт слишком усеченным (хотя MS-DOS, из-за которой в первую очередь и были введены эти ограничения, принадлежала самой Microsoft). Поэтому Microsoft изобрела ряд расширений, которые получили название Joliet. Они были разработаны, чтобы позволить файловой системе Windows быть скопированной на компакт-диск с последующим восстановлением, точно с такой же целью, с которой расширения Rock Ridge были разработаны для UNIX. 2. Основные файловые системы, применяемые в современных ОС. Файловые системы компакт-дисков Файловая система ISO 9660 (Расширения Joliet) В основные расширения, предоставляемые Joliet, входят: 1. Длинные имена файлов. 2. Набор символов Unicode. 3. Вложенность каталогов глубже восьми уровней. 4. Имена каталогов, имеющие расширения. 2. Основные файловые системы, применяемые в современных ОС. Файловая система MS-DOS — одна из тех систем, с которыми появились первые персональные компьютеры. До появления Windows 98 и Windows ME она была основной файловой системой. Она все еще поддерживается на Windows 2000 (ХР, Vista,7, 8), но теперь уже не является стандартом для новых персональных компьютеров, за исключением тех случаев, когда на них используются гибкие диски. 2. Основные файловые системы, применяемые в современных ОС. Файловая система MS-DOS Ее используют большинство цифровых камер. Многие МРЗ-плееры используют только эту систему. Популярное устройство Apple iPod использует ее в качестве исходной файловой системы. 2. Основные файловые системы, применяемые в современных ОС. Файловая система MS-DOS Формат записи каталога системы MS-DOS В MS-DOS файловые блоки отслеживаются через таблицу размещения файлов (FAT — file allocation table), содержащуюся в оперативной памяти. В записи каталога хранится номер первого блока файла. 2. Основные файловые системы, применяемые в современных ОС. Файловая система MS-DOS Максимальный размер раздела для различных размеров блока. Пустые клетки означают запрещенные комбинации 2. Основные файловые системы, применяемые в современных ОС. Файловая система UNIX V7 (PDP-11) Файловая система представляет собой дерево, начинающееся в корневом каталоге, с добавлением связей, формирующих направленный ациклический граф. Имена файлов могут содержать до 14 любых символов ASCII, кроме слэша (поскольку он служит разделителем компонентов пути) и символа NUL (поскольку он используется для дополнения имен короче 14 символов). Символ NUL имеет числовое значение 0. 2. Основные файловые системы, применяемые в современных ОС. Файловая система UNIX V7 (PDP-11) Каталог UNIX содержит по одной записи для каждого файла этого каталога. (Параметры ограничивают количество файлов в файловой системе до 64 К. ) 2. Основные файловые системы, применяемые в современных ОС. Файловая система Ext2 в Linux Структура дискового раздела 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Главная структура данных каждого тома — это MFT (Master File Table — главная таблица файлов), которая является линейной последовательностью записей фиксированного размера 1 Кбайт). Каждая запись MFT описывает один файл или один каталог. 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Первые 16 записей MFT резервируются для файлов метаданных NTFS 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Windows нужен способ нахождения первого блока (запись 0) файла MFT, чтобы найти остальную информацию по файловой системе. Windows смотрит в загрузочном блоке — именно туда записывается адрес первого блока файла MFT при форматировании тома. 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Запись 1 является дубликатом начала файла MFT. Запись 2 — файл журнала. Когда в файловой системе делаются структурные изменения (такие, как добавление нового или удаление существующего каталога), то такое действие журналируется до его выполнения, чтобы повысить вероятность корректного восстановления в случае сбоя во время операции 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Запись 3 содержит информацию о томе (такую, как его размер, метка и версия). Атрибуты определяются в файле $AttrDef. Информация об этом файле содержится в MFT (в записи 4). Запись 5 описывает корневой каталог, который сам является файлом и может расти до произвольного размера. 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Свободное пространство тома отслеживается при помощи битового массива. Сам битовый массив — тоже файл, его атрибуты и дисковые адреса даны в записи 6 в MFT. Запись 7 MFT указывает на файл начального загрузчика. 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Запись 8 используется для того, чтобы связать вместе все плохие блоки (чтобы обеспечить невозможность их использования для файлов). Запись 9 содержит информацию безопасности. Запись 10 используется для установления соответствия регистра. 2. Основные файловые системы, применяемые в современных ОС. Файловая NTFS Запись 11 — это каталог, содержащий различные файлы для таких вещей, как дисковые квоты, идентификаторы объектов, точки повторной обработки и т. д. Записи 12-15 MFT зарезервированы для использования в будущем. 3. Сетевые файловые системы типа NFS. Network File System (NFS) — протокол сетевого доступа к файловым системам, первоначально разработан Sun Microsystems в 1984 году. Основан на протоколе вызова удалённых процедур (ONC RPC). Позволяет подключать (монтировать) удалённые файловые системы через сеть. 3. Сетевые файловые системы типа NFS. NFS абстрагирован от типов файловых систем как сервера, так и клиента, существует множество реализаций NFS-серверов и клиентов для различных операционных систем и аппаратных архитектур. Наиболее зрелая версия NFS — v.4, поддерживающая различные средства аутентификации (в частности, Kerberos и LIPKEY с использованием протокола RPCSEC GSS) и списков контроля доступа (как POSIX, так и Windows-типов). 3. Сетевые файловые системы типа NFS. NFS предоставляет клиентам прозрачный доступ к файлам и файловой системе сервера. В отличие от FTP, протокол NFS осуществляет доступ только к тем частям файла, к которым обратился процесс, и основное достоинство его в том, что он делает этот доступ прозрачным. Это означает, что любое приложение клиента, которое может работать с локальным файлом, с таким же успехом может работать и с NFS файлом, без каких либо модификаций самой программы. 3. Сетевые файловые системы типа NFS. Цели разработки • потенциальная поддержка различных операционных систем (не только UNIX), чтобы серверы и клиенты NFS возможно было бы реализовать в разных операционных системах; • протокол не должен зависеть от каких-либо определённых аппаратных средств; • должны быть реализованы простые механизмы восстановления в случае отказов сервера или клиента; • приложения должны иметь прозрачный доступ к удаленным файлам без использования специальных путевых имен или библиотек и без перекомпиляции; • для UNIX-клиентов должна поддерживаться семантика UNIX; • производительность NFS должна быть сравнима с производительностью локальных дисков; • реализация не должна быть зависимой от транспортных средств. 3. Сетевые файловые системы типа NFS. Компоненты NFS 1. Протокол NFS определяет набор запросов (операций), которые могут быть направлены клиентом к серверу, а также набор аргументов и возвращаемые значения для каждого из этих запросов. 2. Протокол удаленного вызова процедур (RPC) определяет формат всех взаимодействий между клиентом и сервером. Каждый запрос NFS посылается как пакет RPC. 3. Сетевые файловые системы типа NFS. Компоненты NFS 3. Внешнее представление данных (XDR — External Data Representation) обеспечивает машиннонезависимый метод кодирования данных для пересылки через сеть. Все запросы RPC используют кодирование XDR для передачи данных. 4. Программный код сервера NFS отвечает за обработку всех запросов клиента и обеспечивает доступ к экспортируемым файловым системам. Программный код клиента NFS реализует все обращения клиентской системы к удаленным файлам путем посылки серверу одного или нескольких запросов RPC. 3. Сетевые файловые системы типа NFS. Компоненты NFS 5. Протокол монтирования определяет семантику монтирования и размонтирования файловых систем NFS. NFS использует несколько фоновых процессовдемонов. На сервере набор демонов nfsd ожидают запросы клиентов NFS и отвечают на них. Демон mountd обрабатывает запросы монтирования. На клиенте набор демонов biod обрабатывает асинхронный ввод-вывод блоков файлов NFS. 3. Сетевые файловые системы типа NFS. Компоненты NFS 6. Менеджер блокировок сети (NLM — Network Lock Manager) и монитор состояния сети (NSM — Network Status Monitor) вместе обеспечивают средства для блокировки файлов в сети.