07 Файлы.pptx
- Количество слайдов: 58
Файловые системы
Схема жесткого диска Сектор Сторона Дорожка (cylinder, head, sector) logical sector / LBA sector (дорожка, сторона, сектор) логический сектор
Разделение жесткого диска на разделы 0 логический сектор - Master Boot Record (MBR): Код начального загрузчика Таблица разделов (4 записи) Маркер 0 х. AA 55 Формат записи: n n n Признак загрузки (0 x 80 или 0 x 00) Первый сектор раздела (С - H – S) Тип раздела (файловая система) Последний сектор раздела (С - H – S) Первый логический сектор раздела Размер
Extended boot record Для разбиения на большее число разделов в MBR указывается специальный тип раздела (extended) В начале раздела размещается сектор с таблицей разделов из двух строк n n Первая описывает текущий раздел Вторая является ссылкой на следующий extended раздел (если есть)
Таблица разделов GUID (GPT) Разработана Intel в конце 90 -х как часть UEFI Использует 8 байт для хранения номеров секторов Содержит две копии таблицы разделов – в начале и конце диска 0 Защитная MBR 1 Основной заголовок GPT 2 Запись1 Запись 2 Запись 3 Запись 4 3 Записи 5 -128 Основная GPT Использует адресацию LBA Сектор 34 Раздел 1 Раздел 2 Остальные разделы -34 Запись 2 -2 Записи 5 -128 -1 Резервный заголовок GPT Резервная GPT -33 Запись1
Таблица разделов GUID (GPT) Защитная MBR Содержит один раздел включающий первые 2 TБ диска 0 Защитная MBR 1 Основной заголовок GPT 2 Запись1 Запись 2 Запись 3 Запись 4 3 Записи 5 -128 Основная GPT Используется для защиты раздела от систем, не поддерживающих GPT Сектор 34 Раздел 1 Раздел 2 Тип раздела 0 x. EE Остальные разделы -34 Запись 2 -2 Записи 5 -128 -1 Резервный заголовок GPT Резервная GPT -33 Запись1
Таблица разделов GUID (GPT) Сектор 0 Защитная MBR 1 Основной заголовок GPT 2 Запись1 Запись 2 Запись 3 Запись 4 3 Записи 5 -128 Основная GPT 34 Раздел 1 Раздел 2 Остальные разделы -34 -33 Запись1 Запись 2 -2 Записи 5 -128 -1 Резервный заголовок GPT Резервная GPT Заголовок GPT Сигнатура “EFI PART” Версия Размер заголовка CRC 32 заголовка Расположение копии Первый сектор, доступный для разделов Последний сектор, доступный для разделов GUID диска Начало таблицы разделов Число элементов таблицы разделов Размер записей таблицы разделов CRC 32 таблицы разделов
Таблица разделов GUID (GPT) n n n Системный раздел Загрузочный Только чтение Скрытый Запрет автомонтирования Сектор 0 Защитная MBR 1 Основной заголовок GPT 2 Запись1 Запись 2 Запись 3 Запись 4 3 Записи 5 -128 Основная GPT Записи таблицы разделов GUID типа раздела GUID раздела Первый сектор раздела Последний сектор раздела Атрибуты 34 Раздел 1 Раздел 2 Имя раздела Остальные разделы -34 -2 Записи 5 -128 -1 Резервный заголовок GPT Запись 4 Резервная GPT -33 Запись 1 Запись 2 Запись 3
Основные функции файловой системы 1. Идентификация файлов. 2. 3. 4. 5. Связывание имени файла с выделенным ему пространством внешней памяти. Распределение внешней памяти между файлами. Обеспечение надежности и отказоустойчивости. Обеспечение защиты от несанкционированного доступа. Обеспечение совместного доступа к файлам
Описание файла / metadata Имя файла POSIX: 256 символов Тип устройства Тип файла Адресная информация n n Начальный адрес Размер (в байтах или блоках) Информация об управлении доступом n n Владелец Допустимые операции Информация об использовании n n Дата создания Дата последней модификации
Доступ к данным файла Последовательный доступ n Подразумевает последовательное чтение/запись данных от начала до конца, с возможностью «перемотки» в начало. Произвольный (random) доступ n Операции могут производится начиная с любого места файла.
Структура файлов Неструктурированные файлы n Последовательность байтов Последовательности записей фиксированной длины Последовательность записей произвольной длины n Могут создаваться индексы для ускорения доступа по заданному значению ключа
Операции над файлами Создание файла Устанавливается размещение и атрибуты файла Удаление файла Освобождение занимаемого пространства Открытие файла Проверка прав доступа и загрузка информации о расположении файла Закрытие файла Освобождение системных ресурсов Позиционирование Спецификация места следующих операций чтения/записи Чтение Запись
Последовательность действий над файлами Без сохранения состояния / Stateless n Open, Read, Close, Open, Write, Close С сохранением состояний n Open, Read, Write, Close
Логическая структура файловой системы Плоская Иерархическая с фиксированным числом уровней иерархии Иерархическая древовидная корень структура каталоги файлы
Циклы в ФС Один файл может входить только в одну директорию Hard link В разных директориях может быть записана информация об одном и том же файле. Необходим счётчик ссылок. Soft link / Symbolic link Создаётся специальный файл-ссылка. Оригинал может отсутствовать в момент создания.
Операции над директориями Создание Удаление Открытие Закрытие Получение списка файлов Просмотр текущей записи Переименование файла Удаление файла
Реализация директорий Файл с записями специальной структуры FAT 8 3 1 10 2 2 2 4 имя расширение атрибуты резерв время дата Первый блок размер UNIX 2 14 i-node имя
Поиск в директории Линейный поиск Хэш-таблицы Деревья
Семантические файловые системы Таксономия – древообразная структура классификаций набора объектов Фолксономия – совместная категоризация информации посредством произвольно выбираемых меток (тегов) Win. FS Nepomuk DHTFS
Объединение нескольких ФС Источники различных ФС: Разные носители Разделы на одном носителе Существующие решения: Раздельный доступ к ФС Объединение в общую файловую систему (монтирование)
Защита файлов и ФС От разрушения От несанкционированного доступа n n Списки прав доступа Классификации пользователей
Права доступа к файлам в Unix Классы: n n n Владелец Группа Остальные Права доступа: n n n Чтение Запись Выполнение
Надёжность ФС Обеспечение целостности ФС: Порядок выполнения операций Избыточность Журналирование n Как правило для системных структур Поддержка транзакций Проверка специальным утилитами
Работа FSCK в UNIX 1. Проверка блоков в файлах и списке свободных 1. Блока нигде нет: добавить в список свободных 2. Есть в списке свободных и в файле: удалить из списка свободных 3. Входит в несколько файлов: сделать копии, уведомить пользователя 2. Сравнить счётчик ссылок на файл и ссылки 1. Счётчик больше чем есть ссылок: уменьшить 2. Счётчик меньше увеличить, проблемы с директориями?
Управление плохими блоками На уровне контроллера диска использование резервных блоков вместо плохих На уровне ОС хранение списка повреждённых блоков, например в виде файла
Управление внешней памятью Алгоритмы выделения дискового пространства и структуры учёта отдельных блоков файла Способы учёта свободной и занятой памяти
Выделение непрерывной последовательности блоков Файл характеризуется адресом первого блока и длиной (в блоках) + Легко реализовать + Хорошее быстродействие - Внешняя фрагментация - Сложности при изменении размера файла Пригоден для стационарных ФС
Связанный список Директория содержит ссылку на первый (и возможно последний) блок Каждый блок содержит ссылку на следующий Файл 2 Файл 1 NULL Блок 0 Блок 1 Блок 2 Блок 3 Блок 0 Блок 1 Блок 2 6 2 10 7 3 11 5 номера блоков диска
Связанный список + Отсутствует внешняя фрагментация + Не ограничивается размер файлов - Для доступа всегда нужно начинать просмотр с начала - Повреждение блока вызывает потерю всего, что за ним - Необходимо место для хранения ссылок в каждом блоке
File Allocation Table (FAT) Создаётся таблица, в которой для каждого блока хранится номер следующего за ним. Запись в директории указывает на первый блок файла. № 1 FAT 2 3 4 10 11 Начало файла 2 5 EOF 6 7 8 2 EOF Начало файла 1 9 10 11 7 5
Индексные узлы (i-node) С каждым файлом связывается специальная таблица, называемая i-node Указатели из таблицы ссылаются на блоки файла Запись в директории ссылается на i-node Для больших файлов применяется косвенная адресация (многоуровневые таблицы)
Индексные узлы (i-node) Блок данных Атрибуты файла Адреса блоков данных Блок косвенной адресации Блок двойной косвенной адресации Блок тройной косвенной адресации Блок данных
Учёт свободного пространства При помощи битового вектора + простота + эффективность - может иметь большой размер При помощи связанного списка - долго просматривать Как файл, в отдельном i-node
Производительность файловой системы Кэширование Оптимальное размещение на диске Планирование дисковых операций
Кэширование Размещение в оперативной памяти буфера, содержащего ряд блоков диска Замещение блоков n С учётом важности (пользовательские, индексных узлов, директорий, …) Отложенная запись Взаимодействие с виртуальной памятью
Оптимальное размещение Желательно размещать данные одного файла (индексного узла) последовательно Желательно размещать индексные узлы рядом с данными Устранение фрагментации n Предотвращение w Предварительное резервирование (ОС или пользователем) w Отложенное выделение n Дефрагментация w Во время работы w Отдельными утилитами
Планирование операций ввода-вывода Цель планирования – сокращение времени выполнения операций. Время обмена информацией между магнитной головкой и ОЗУ Время позиционирования n n Время перемещения головок (seek time) Задержка на вращение (latency time)
Алогритм FCFS Запросы организуются в очередь и обслуживаются в порядке поступления + простота - низкая эффективность
Алгоритм SSTF Short Seek Time First – в начале обрабатываем запросы с минимальным отклонением от текущего положения головок. - может приводить к длительным задержкам отдельных запросов - не является оптимальным
Алгоритмы сканирования Scan: Перемещаемся с одного края диска на другой и выполняем подходящие запросы. Look: После обработки последнего запроса в текущем направлении поворачиваем обратно. С-Scan: Запросы обрабатываются только при проходе в одну сторону.
Алгоритмы сканирования N-Step Scan: Очередь запросов разбивается на блоки из N элементов, каждый блок обрабатывается согласно алгоритму SCAN + Не отдаёт предпочтение одному краю диска если запросы постоянно поступают N=0: FCFS N ∞: SCAN
Алгоритмы сканирования сравнение Диск с 200 цилиндрами (0… 199) Последовательность обращений к дорожкам: 98 183 37 122 14 124 65 67 Начальное положение: 53 Алгоритм FCFS SSTF SCAN Оптимальное Число перемещений 640 236 208
Алгоритмы сканирования сравнение FCFS SCAN SSTF C-SCAN
Размер блока Маленький размер + уменьшает внутреннюю фрагментацию - увеличивает размеры системных структур данных - ограничивает размер ФС - снижает скорость работы с диском Большой размер
Особенности FS для носителей на Flash памяти Стирание блоков Блок не может быть перезаписан без предварительного стирания. Целесообразно стирать неиспользуемые блоки во время простоев. Операция стирания может быть выполнена только над большими фрагментами памяти. Произвольный доступ Нет необходимости избегать операций на не последовательных участках. Распределение износа Желательно равномерно нагружать все участки носителя.
Файловая система NTFS Журналирование n Используется для системных структур ($Log. File) Запись всех изменений на томе / Change Journal Сжатие Шифрование / Encrypting File System (EFS) Квоты
Файловая система NTFS Альтернативные потоки данных / Alternate Data Streams (ADS) Разряженные файлы Хранение одной копии / Single Instance Storage (SIS) Жесткие ссылки Теневая копия / Volume Shadow Copy Service (VSS) Транзакции / Transactional NTFS
Файловая система NTFS Точки повторной обработки / Reparse points Точки монтирования / Volume Mount Points Переходы между директориями / Directory Junction Символические ссылки Иерархическое управление носителями / Hierarchical Storage Management (HSM)
Строение NTFS Файл в NTFS представляется набором атрибутов Потоки данных, имя, информация о расположении, дескриптор безопасности, … Используется 16 -битная кодировка имен файлов Для индексации данных используются B+ деревья Атрибуты всех файлов хранятся в Master File Table (MFT) Запись директории содержит имя файла, индекс записи в MFT и индекс повторного использования записи
Некоторые системные файлы NTFS Индекс Имя Назначение 0 $MFT Master File Table 1 $MFTMirr Копия критических записей MFT (0… 3) 2 $Log. File Журнал транзакций метаданных файловой системы 3 $Volume Описание тома (флаги, метка тома) 4 $Attr. Def Таблица соотвествий атрибутов именам для MFT 5 . Корневая директория 6 $Bitmap Битовая маска занятых/свободных кластеров 7 $Boot Загрузочный сектор (загрузчик, расположение MFT) 8 $Bad. Clus Файл со списком кластеров с поврежденными секторами 9 $Secure База данных ACL 11… 26 Расширения 27 Первый индекс для обычных файлов
Атрибуты и потоки Для каждого файла создаётся запись MFT, содержащая список атрибутов (потоков) переменной длины, описывающий все потоки, связанные с файлом n n Размер записи 1 кб, дополняется если меньше Стандартные атрибуты файлов хранятся в записи фиксированного размера Атрибуты имеют n n n Тип Имя (опционально) Данные (опционально) Некоторые потоки не могут иметь имени n n Имя файла Короткое имя файла Для обычных файлов n n Данные лежат в безымянном потоке типа $DATA Альтернативные потоки имеют имя и тип $DATA
Резидентные и нерезидентные потоки NTFS предпочитает хранить данные потоков внутри дескриптора в MFT. Такие потоки называют резидентными. Может целиком уместиться файл размером 700… 800 байт Некоторые потоки должны быть резидентными Имя, обязательные атрибуты, таблицы размещения для нерезидентных потоков Некоторые потоки не могут быть резидентными Сжатые, зашифрованные и разряженные Если таблица размещения данных потока не помещается в MFT то используется косвенная адресация Если дескрипторы потоков не помещаются в записи MFT то для дополнительных дескрипторов используется нерезидентный поток
Хранение нерезидентных потоков Нерезидентные данные хранятся в последовательностях кластеров, называемых run (полоса) Каждая полоса представляется начальным кластером и длиной Начальные кластеры кодируются смещением от начального кластера предыдущей полосы Длина и смещение хранятся в полях переменного размера (1… 8 байт), число байт для каждого записано в первом байте записи, описывающей полосу Для пустых фрагментов разряженных файлов смещение равно 0.
Пример описания нерезидентных потоков Описание: 31 38 73 25 34 32 14 01 E 5 11 02 31 42 AA 00 03 00 Полоса 1: 31 38 73 25 34 n n n Заголовок 0 х31 – смещение 3 байта, размер 1 байт Размер 0 х38 Смещение 0 х342573 Полоса 2: 32 14 01 E 5 11 02 n n n Заголовок 0 х32 – смещение 3 байта, размер 2 байт Размер: 0 х114 Смещение: 0 х211 E 5 (кластер 0 х363758=0 х211 E 5+0 х342573) Полоса 3: 31 42 AA 00 03 n n n Заголовок 0 х31 – смещение 3 байта, размер 1 байт Размер 0 х42 Смещение 0 х300 AA (кластер 0 x 393802=0 х363758+0 х300 AA) Полоса 4: 00 n Заголовок 00 – конец Файл состоит из полос: n n n 56 (0 x 38) кластеров начиная с кластера 0 х342573 276 (0 х114) кластеров начиная с кластера 0 х363758 66 (0 х42) кластера начиная с кластера 0 x 393802
Пример описания разряженного потока Описание 11 30 20 01 60 11 10 30 00 Полоса 1: 11 30 20 n n n Заголовок 0 х11 – смещение 1 байт, размер 1 байт Размер 0 х30 Смещение 0 х20 Полоса 2: 01 60 n n n Заголовок 0 х01 – смещение 0 байт, размер 1 байт Размер: 0 х60 Смещение: 0 – разряженный (пустой) блок Полоса 3: 11 10 30 n n n Заголовок 0 х11 – смещение 1 байт, размер 1 байт Размер 0 х10 Смещение 0 х30 (кластер 0 x 50=0 х20+0 х30) Полоса 4: 00 n Заголовок 00 – конец Файл состоит из полос: n n n 48 (0 x 30) кластеров начиная с кластера 0 х20 96 (0 х60) пустых кластеров 16 (0 х10) кластера начиная с кластера 0 x 50
Представление сжатых данных Для сжатия данные разбиваются на блоки, по 16 кластеров Если блок удалось сжать, то он представляется одной или несколькими полосами общей длиной меньше 16 и затем пустой (смещение=0) полосой, дополняющей до 16 кластеров Если есть полосы длиной более 16 кластеров то данные не удалось сжать Если полос с данными нет совсем то это было 16 кластеров нулей
Пример описания сжатого потока Описание 11 08 40 01 08 11 10 08 00 Полоса 1: 11 08 40 n n n Заголовок 0 х11 – смещение 1 байт, размер 1 байт Размер 0 х08 Смещение 0 х40 Полоса 2: 01 08 n n n Заголовок 0 х01 – смещение 0 байт, размер 1 байт Размер: 0 х08 Смещение: 0 – пустой (сжато) блок Полоса 3: 11 10 08 n n n Заголовок 0 х11 – смещение 1 байт, размер 1 байт Размер 0 х10 Смещение 0 х08 (кластер 0 x 48=0 х40+0 х08) Полоса 4: 00 n Заголовок 00 – конец Файл состоит из полос: n n 8 (0 x 08) кластеров сжатых данных (16 распакованных) начиная с кластера 0 х40 16 (0 х10) кластеров обычных данных начиная с кластера 0 x 48


