файловая система на диске имеет какую структуру
Файловая система на диске имеет какую структуру
Файловая система обеспечивает работу пользователей и программ с файлами (чтение и запись информации на диске), а так же ведет учет свободных и занятых кластеров на диске.
Файловая система осуществляет работу с данными на диске, основываясь на адресах секторов.
CHS (от англ. Cylinder, Head, Sector — цилиндр, головка, сектор) — система адресации сектора, как минимальной единицы хранения данных в накопителях на жёстких магнитных дисках, накопителях на гибких магнитных дисках и схожих устройствах, основанная на использовании физических адресов геометрии дискового накопителя (в не дисковых накопителях — лентах, сетевых системах хранения, твердотельных накопителях — не используется).
Работа с программами основывается на именах файлов.
Цели, состав и функции
Цели использования файловой системы:
Состав файловой системы определяется следующими компонентами:
Функции файловой системы:
Какие бывают файловые системы
Для Windows используются два файловые системы:
Для UNIX систем это:
Физическая организация файловых систем
Обычные HDD диски состоят из:
Логические диски
При работе в операционной системы мы работаем с логическими дисками или разделами. Физический диск может быть разбит на один или несколько логических дисков.
Логический диск или раздел это часть (или весь) физического диска, которую операционная система представляет пользователю как логическое устройство.
На одном логическом диске может использоваться только одна файловая система.
В моем случае диск C это часть физического SSD диска. Диски D и E — полностью два физических диска. Часто один физический диск разбивают на два логически C и D.
Возможные варианты организации логических дисков:
Вариант несколько физических = дин логический обычно используется в RAID массивах.
RAID (англ. Redundant Array of Independent Disks — избыточный массив независимых (самостоятельных) дисков) — технология виртуализации данных для объединения нескольких физических дисковых устройств в логический модуль для повышения отказоустойчивости и/или производительности.
На картинке выше видно что один диск (диск C) помечен как загружаемый (системный) иконкой слева.
Высокоуровневое форматирование диска
Высокоуровневое форматирование диска необходимо для создания логического диска и файловой системы на нем.
При форматировании пространство логического диска разбивается на кластеры определенного размера.
Кластер (блок) является минимальной единицей хранения данных, используемой в файловой системе.
При форматировании на диск записывается следующая информация:
Служебная область содержит общую информацию о файловой системе, свободных кластерах, о размещении файлов в кластерах.
Главная таблица файлов – MFT содержит как минимум одну запись для каждого файла и запись для себя. На кластеры делится весь раздел диска, а не только область данных.
В файловой системе NTFS данные организуются следующим образом.
Организация данных в NTFS
Возникает вопрос, а что же такое файл?
Файл это неструктурированная последовательность байтов, в которую можно записывать и из которой можно считывать информацию. Файл это логический объект, позволяющий обращаться к информации по имени.
За счет использования файлов в операционной системе появилась возможность простого доступа пользователей и приложений к информации по имени.
Наличие имени файла позволяет получать доступ к информации независимо от адресов кластеров, в которых располагается файл. Существует возможность определения прав доступа пользователей к файлу.
Типы файлов
Обычные файлы — это файлы которые содержат информацию произвольного характера. Они имеют произвольную структуру. Операционная система должна распознавать как минимум один тип файлов, это собственные исполняемые файлы.
Специальные файлы – фиктивные файлы, которые ассоциируются с устройствами ввода-вывода.
Каталоги – файлы, которые содержат системную справочную информацию о наборе файлов, сгруппированных пользователем по какому-либо признаку. Каталоги могут содержать файлы любых типов, включая каталоги.
Другие — тип файлов, содержащий символьные связи, именованные конвейеры, отображаемые в памяти.
Иерархическая структура файловой системы состоит из следующих элементов:
Корневым называют каталог верхнего уровня.
Иерархическая структура файловой системы
Монтирование логических дисков
Монтированием логических дисков называют встраивание логического диска в иерархическую структуру файлов операционной системы.
В качестве точки монтирования может выступать любой пустой каталог существующей файловой системы. При монтировании он становится корневым для файловой системы монтируемого диска.
Возможности файловой системы
Учет свободных кластеров
Использование связного списка номеров свободных кластеров. В каждом кластере, входящем в список, помещаются номера свободных кластеров и ссылка на следующий кластер из списка. При этом в оперативной памяти достаточно хранить один кластер из списка.
Использование битового массива. Свободные кластеры помечаются 1, а занятые 0 (или наоборот). В оперативной памяти достаточно хранить один кластер битового массива. Выделяемые файлу свободные кластеры располагаются близко друг к другу, что приводит к увеличению быстродействия.
Дисковые квоты
Дисковая квота – максимальное количество файлов и блоков (кластеров), назначаемое пользователю для хранения данных.
Гибкий лимит – при превышении гибкого лимита во время регистрации пользователю выдается предупреждение, и счетчик предупреждений уменьшается на 1. Если счетчик равен 0, то в регистрации отказывается.
Жесткий лимит – лимит который не может быть превышен.
Резервное копирование
Резервное копирование это процесс создания на носителе, предназначенном для восстановления данных в оригинальном месте их расположения в случае их повреждения или разрушения.
Существуют следующие способы повышения эффективности и удобства резервного копирования:
Физическое резервное копирование это последовательное копирование всех кластеров диска.
Логическое резервное копирование это проверка каталогов и сохранение содержащихся в них информации.
Преимущества физического копирования:
Логическое резервирование происходит следующим образом:
Далее создается резервная копия.
Восстановление файловой системы из резервной копии происходит следующим образом:
Теперь вы знаете основы файловых систем.
Обучаю HTML, CSS, PHP. Создаю и продвигаю сайты, скрипты и программы. Занимаюсь информационной безопасностью. Рассмотрю различные виды сотрудничества.
Файловая система на диске имеет какую структуру
Материал к обзорной лекции № 33
для студентов специальности
«Программное обеспечение информационных технологий»
доцента кафедры ИВТ, к.т.н. Ливак Е.Н.
СИСТЕМЫ УПРАВЛЕНИЯ ФАЙЛАМИ
Основные понятия, факты
Использование знаний о структуре файловой системы для защиты и восстановления компьютерной информации (файлов и каталогов). Организация разграничения доступа к файлам.
Файловые системы. Структура файловой системы
Для управления файлами предназначены системы управления файлами.
Возможность иметь дело с данными, хранящимися в файлах, на логическом уровне предоставляет файловая система. Именно файловая система определяет способ организации данных на каком-либо носителе данных.
Система управления файлами является основной подсистемой в абсолютном большинстве современных ОС.
С помощью системы управления файлами
· связываются по данным все системные обрабатывающие программы;
· решаются проблемы централизованного распределения дискового пространства и управления данными;
· предоставляются возможности пользователю по выполнению операций над файлами (создание и т.п.), по обмену данными между файлами и различными устройствами, по защите файлов от несанкционированного доступа.
В некоторых ОС может быть несколько систем управления файлами, что обеспечивает им возможность работать с несколькими файловыми системами.
Постараемся различать файловую систему и систему управления файлами.
Термин «файловая система» определяет принципы доступа к данным, организованным в файлы.
Термин «система управления файлами» относится к конкретной реализации файловой системы, т.е. это комплекс программных модулей, обеспечивающих работу с файлами в конкретной ОС.
Итак, для работы с файлами, организованными в соответствии с некоторой файловой системой, для каждой ОС должна быть разработана соответствующая система управления файлами. Эта система УФ будет работать только в той ОС, для которой она создана.
Рассмотрим структуру этих файловых систем.
В файловой системе FAT дисковое пространство любого логического диска делится на две области:
· системную область и
Системная область создается и инициализируется при форматировании, а впоследствии обновляется при манипулировании файловой структурой.
Системная область состоит из следующих компонентов:
· загрузочного сектора, содержащего загрузочную запись ( boot record );
· зарезервированных секторов (их может и не быть);
· таблицы размещения файлов (FAT, File Allocation Table);
· корневого каталога (Root directory, ROOT).
Эти компоненты расположены на диске друг за другом.
Область данных содержит файлы и каталоги, подчиненные корневому.
Разбиение области данных на кластеры вместо использования секторов позволяет:
· уменьшить размер таблицы FAT ;
· уменьшить фрагментацию файлов;
· сокращается длина цепочек файла Þ ускоряется доступ к файлу.
Однако слишком большой размер кластера ведет к неэффективному использованию области данных, особенно в случае большого количества маленьких файлов (ведь на каждый файл теряется в среднем полкластера).
· Если кластер распределен какому-либо файлу (т.е., занят), то соответствующий элемент FAT содержит номер следующего кластера файла;
· если кластер является свободным, он содержит нулевое значение 000h (0000h);
· кластер, непригодный для использования (сбойный), отмечается числом FF7h (FFF7h).
Таким образом, в таблице FAT кластеры, принадлежащие одному файлу, связываются в цепочки.
Таблица размещения файлов хранится сразу после загрузочной записи логического диска, ее точное расположение описано в специальном поле в загрузочном секторе.
Она хранится в двух идентичных экземплярах, которые следуют друг за другом. При разрушении первой копии таблицы используется вторая.
В связи с тем, что FAT используется очень интенсивно при доступе к диску, она обычно загружается в ОП (в буфера ввода/вывода или кэш) и остается там настолько долго, насколько это возможно.
Корневой каталог описывает файлы и другие каталоги. Элементом каталога является дескриптор (описатель) файла.
Дескриптор каждого файла и каталога включает его
· дату создания или последней модификации
· время создания или последней модификации
· атрибуты (архивный, атрибут каталога, атрибут тома, системный, скрытый, только для чтения)
· зарезервированное поле, которое не используется
· номер первого кластера в цепочке кластеров, отведенных файлу или каталогу; получив этот номер, операционная система, обращаясь к таблице FAT, узнает и все остальные номера кластеров файла.
Итак, пользователь запускает файл на выполнение. Операционная система ищет файл с нужным именем, просматривая описания файлов в текущем каталоге. Когда найден требуемый элемент в текущем каталоге, операционная система считывает номер первого кластера данного файла, а затем по таблице FAT определяет остальные номера кластеров. Данные из этих кластеров считываются в оперативную память, объединяясь в один непрерывный участок. Операционная система передает управление файлу, и программа начинает работать.
Файловая система VFAT (виртуальная FAT ) впервые появилась в Windows for Workgroups 3.11 и была предназначена для файлового ввода/вывода в защищенном режиме.
Используется эта файловая система в Windows 95.
Поддерживается она также и в Windows NT 4.
VFAT использует 32-разрядный код для всех файловых операций, может использовать 32-разрядные драйверы защищенного режима.
Впервые использовалась в Windows OSR 2 ( OEM Service Release 2).
2. Имеет расширенную загрузочную запись, которая позволяет создавать копии критических структур данных Þ повышает устойчивость диска к нарушениям структур диска
3. Может использовать резервную копию FAT вместо стандартной.
4. Может перемещать корневой каталог, другими словами, корневой каталог может находиться в произвольном месте Þ снимает ограничение на размер корневого каталога (512 элементов, т.к. ROOT должен был занимать один кластер).
5. Усовершенствована структура корневого каталога
Появились дополнительные поля, например, время создания, дата создания, дата последнего доступа, контрольная сумма
По-прежнему для длинного имени файла используется несколько дескрипторов.
Файловая система HPFS
HPFS ( High Performance File System ) — высокопроизводительная файловая система.
Перечислим основные особенности HPFS.
· Дисковое пространство в HPFS выделяется не кластерами (как в FAT ), а блоками. В современной реализации размер блока взят равным одному сектору, но в принципе он мог бы быть и иного размера. (По сути дела, блок — это и есть кластер, только кластер всегда равен одному сектору). Размещение файлов в таких небольших блоках позволяет более эффективно использовать пространство диска, так как непроизводительные потери свободного места составляют в среднем всего (полсектора) 256 байт на каждый файл. Вспомним, что чем больше размер кластера, тем больше места на диске расходуется напрасно.
· Система HPFS стремится расположить файл в смежных блоках, или, если такой возможности нет, разместить его на диске таким образом, чтобы экстенты (фрагменты) файла физически были как можно ближе друг к другу. Такой подход существенно уменьшает время позиционирования головок записи/чтения жесткого диска и время ожидания (задержка между установкой головки чтения/записи на нужную дорожку). Напомним, что в FAT файлу просто выделяется первый свободный кластер.
Экстенты ( extent ) — фрагменты файла, располагающиеся в смежных секторах диска. Файл имеет по крайней мере один экстент, если он не фрагментирован, а в противном случае — несколько экстентов.
· Используется метод сбалансированных двоичных деревьев для хранения и поиска информации о местонахождении файлов (каталоги хранятся в центре диска, кроме того, предусмотрена автоматическая сортировка каталогов), что существенно повышает производительность HPFS (в сравнении с FAT ).
· В HPFS предусмотрены специальные расширенные атрибуты файлов, позволяющие управлять доступом к файлам и каталогам.
C труктура раздела HPFS
В начале раздела с установленной HPFS расположено три управляющих блока:
· загрузочный блок ( boot block ),
· дополнительный блок ( super block ) и
· запасной (резервный) блок ( spare block ).
Они занимают 18 секторов.
Битовые карты двух полос располагаются на диске рядом, так же располагаются и сами полосы. То есть последовательность полос и карт выглядит как на рис.
Именно для того, чтобы сократить время позиционирования головок чтения/записи жесткого диска, в HPFS диск разбит на полосы.
Рассмотрим управляющие блоки.
Загрузочный блок ( boot block )
Содержит имя тома, его серийный номер, блок параметров BIOS и программу начальной загрузки.
Загрузочный блок располагается в секторах с 0 по 15.
· указатель на список битовых карт ( bitmap block list ). В этом списке перечислены все блоки на диске, в которых расположены битовые карты, используемые для обнаружения свободных секторов;
· указатель на список дефектных блоков ( bad block list ). Когда система обнаруживает поврежденный блок, он вносится в этот список и для хранения информации больше не используется;
· указатель на группу каталогов ( directory band ),
· дату последней проверки раздела программой CHKDSK ;
Super block размещается в 16 секторе.
· указатель на список свободных запасных блоков ( directory emergency free block list );
· ряд системных флагов и дескрипторов.
Этот блок размещается в 17 секторе диска.
Резервный блок обеспечивает высокую отказоустойчивость файловой системы HPFS и позволяет восстанавливать поврежденные данные на диске.
Принцип размещения файлов
Экстенты ( extent ) — фрагменты файла, располагающиеся в смежных секторах диска. Файл имеет по крайней мере один экстент, если он не фрагментирован, а в противном случае — несколько экстентов.
Для сокращения времени позиционирования головок чтения/записи жесткого диска система HPFS стремится
1) расположить файл в смежных блоках;
2) если такой возможности нет, то разместить экстенты фрагментированного файла как можно ближе друг к другу,
Для этого HPFS использует статистику, а также старается условно резервировать хотя бы 4 килобайта места в конце файлов, которые растут.
Принципы хранения информации о расположении файлов
Каждый файл и каталог диска имеет свой файловый узел F-Node. Это структура, в которой содержится информация о расположении файла и о его расширенных атрибутах.
Каждый F-Node занимает один сектор и всегда располагается поблизости от своего файла или каталога (обычно — непосредственно перед файлом или каталогом). Объект F-Node содержит
· первые 15 символов имени файла,
· специальную служебную информацию,
· статистику по доступу к файлу,
· расширенные атрибуты файла,
· список прав доступа (или только часть этого списка, если он очень большой); если расширенные атрибуты слишком велики для файлового узла, то в него записывается указатель на них.
· ассоциативную информацию о расположении и подчинении файла и т. д.
Если файл непрерывен, то его размещение на диске описывается двумя 32-битными числами. Первое число представляет собой указатель на первый блок файла, а второе — длину экстента (число следующих друг за другом блоков, принадлежащих файлу).
Если файл фрагментирован, то размещение его экстентов описывается в файловом узле дополнительными парами 32-битных чисел.
В файловом узле можно разместить информацию максимум о восьми экстентах файла. Если файл имеет больше экстентов, то в его файловый узел записывается указатель на блок размещения ( allocation block ), который может содержать до 40 указателей на экстенты или, по аналогии с блоком дерева каталогов, на другие блоки размещения.
Структура и размещение каталогов
Для хранения каталогов используется полоса, находящаяся в центре диска.
Если она полностью заполнена, HPFS начинает располагать каталоги файлов в других полосах.
Расположение этой информационной структуры в середине диска значительно сокращает среднее время позиционирования головок чтения/записи.
Однако существенно больший (по сравнению с размещением Directory Band в середине логического диска) вклад в производительность HPFS дает использование метода сбалансированных двоичных деревьев для хранения и поиска информации о местонахождении файлов.
Вспомним, что в файловой системе FAT каталог имеет линейную структуру, специальным образом не упорядоченную, поэтому при поиске файла требуется последовательно просматривать его с самого начала.
В HPFS структура каталога представляет собой сбалансированное дерево с записями, расположенными в алфавитном порядке.
Каждая запись, входящая в состав дерева, содержит
· указатель на соответствующий файловый узел,
· информацию о времени и дате создания файла, времени и дате последнего обновления и обращения,
· длине данных, содержащих расширенные атрибуты,
· счетчик обращений к файлу,
· и другую информацию.
Размер каждого из блоков, в терминах которых выделяются каталоги в текущей реализации HPFS, равен 2 Кбайт. Размер записи, описывающей файл, зависит от размера имени файла. Если имя занимает 13 байтов (для формата 8.3), то блок из 2 Кбайт вмещает до 40 описателей файлов. Блоки связаны друг с другом посредством списка.
Принципы размещения файлов и каталогов на диске в HPFS :
· информация о местоположении файлов рассредоточена по всему диску, при этом записи каждого конкретного файла размещаются (по возможности) в смежных секторах и поблизости от данных об их местоположении;
· каталоги размещаются в середине дискового пространства;
· каталоги хранятся в виде бинарного сбалансированного дерева с записями, расположенными в алфавитном порядке.
Надежность хранения данных в HPFS
Любая файловая система должна обладать средствами исправления ошибок, возникающих при записи информации на диск. Система HPFS для этого использует механизм аварийного замещения ( hotfix ).
Если файловая система HPFS сталкивается с проблемой в процессе записи данных на диск, она выводит на экран соответствующее сообщение об ошибке. Затем HPFS сохраняет информацию, которая должна была быть записана в дефектный сектор, в одном из запасных секторов, заранее зарезервированных на этот случай. Список свободных запасных блоков хранится в резервном блоке HPFS. При обнаружении ошибки во время записи данных в нормальный блок HPFS выбирает один из свободных запасных блоков и сохраняет эти данные в нем. Затем файловая система обновляет карту аварийного замещения в резервном блоке.
Эта карта представляет собой просто пары двойных слов, каждое из которых является 32-битным номером сектора.
Первый номер указывает на дефектный сектор, а второй — на тот сектор среди имеющихся запасных секторов, который был выбран для его замены.
После замены дефектного сектора запасным карта аварийного замещения записывается на диск, и на экране появляется всплывающее окно, информирующее пользователя о произошедшей ошибке записи на диск. Каждый раз, когда система выполняет запись или чтение сектора диска, она просматривает карту аварийного замещения и подменяет все номера дефектных секторов номерами запасных секторов с соответствующими данными.
Следует заметить, что это преобразование номеров существенно не влияет на производительность системы, так как оно выполняется только при физическом обращении к диску, но не при чтении данных из дискового кэша.
Файловая система NTFS
Файловая система NTFS (New Technology File System) содержит ряд значительных усовершенствований и изменений, существенно отличающих ее от других файловых систем.
Однако полноценных реализаций для работы с NTFS вне системы Windows NT пока нет.
Основные особенности NT FS
· работа на дисках большого объема происходит эффективно (намного эффективнее, чем в FAT );
· имеются средства для ограничения доступа к файлам и каталогам Þ разделы NTFS обеспечивают локальную безопасность как файлов, так и каталогов;
· введен механизм транзакций, при котором осуществляется журналирование файловых операций Þ существенное увеличение надежности;
· сняты многие ограничения на максимальное количество дисковых секторов и/или кластеров;
· система NTFS также обладает встроенными средствами сжатия, которые можно применять к отдельным файлам, целым каталогам и даже томам (и впоследствии отменять или назначать их по своему усмотрению).
Структура тома с файловой системой NTFS
Раздел NTFS называется томом ( volume ). Максимально возможные размеры тома (и размеры файла) составляют 16 Эбайт (экзабайт 2**64).
Как и другие системы, NTFS делит дисковое пространство тома на кластеры — блоки данных, адресуемые как единицы данных. NTFS поддерживает размеры кластеров от 512 байт до 64 Кбайт; стандартом же считается кластер размером 2 или 4 Кбайт.
Все дисковое пространство в NTFS делится на две неравные части.
Зона для размещения
файлов и каталогов
Зона для размещения
файлов и каталогов
Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой — это делается для того, чтобы MFT-файл по возможности не фрагментировался при своем росте.
Остальные 88 % тома представляют собой обычное пространство для хранения файлов.
MFT состоит из записей фиксированного размера. Размер записи MFT (минимум 1 Кб и максимум 4 Кб) определяется во время форматирования тома.
Каждая запись соответствует какому-либо файлу.
Первые 16 записей носят служебный характер и недоступны операционной системе — они называются метафайлами, причем самый первый метафайл — сам MFT.
Эти первые 16 элементов MFT — единственная часть диска, имеющая строго фиксированное положение. Копия этих же 16 записей хранится в середине тома для надежности.
Остальные части MFT-файла могут располагаться, как и любой другой файл, в произвольных местах диска.
Назначение метафайла
Сам Master File Table
Копия первых 16 записей MFT, размещенная посередине тома
Файл поддержки операций журналирования
Служебная информация — метка тома, версия файловой системы и т. д.
Список стандартных атрибутов файлов на томе
Карта свободного места тома
Загрузочный сектор (если раздел загрузочный)
Файл, в котором записаны права пользователей на использование дискового пространства (этот файл начал работать лишь в Windows 2000 с системой NTFS 5.0)
Файл — таблица соответствия заглавных и прописных букв в именах файлов. В NTFS имена файлов записываются в Unicode (что составляет 65 тысяч различных символов) и искать большие и малые эквиваленты в данном случае — нетривиальная задача
В соответствующей записи MFT хранится вся информация о файле:
· положение на диске отдельных фрагментов и т. д.
Если для информации не хватает одной записи MFT, то используется несколько записей, причем не обязательно идущих подряд.
Если файл имеет не очень большой размер, то данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT.
Файл в томе с NTFS идентифицируется так называемой файловой ссылкой ( File Reference ), которая представляется как 64-разрядное число.
Файловая ссылка состоит из
· номера файла, который соответствует номеру записи в MFT,
· и номера последовательности. Этот номер увеличивается всякий раз, когда данный номер в MFT используется повторно, что позволяет файловой системе NTFS выполнять внутренние проверки целостности.
Каждый файл в NTFS представлен с помощью потоков ( streams ), то есть у него нет как таковых «просто данных», а есть потоки.
Таким образом, получается, что базовая сущность у файла только одна — номер в MFT, а все остальное, включая и его потоки, — опционально.
Данный подход может эффективно использоваться — например, файлу можно «прилепить» еще один поток, записав в него любые данные.
Стандартные атрибуты для файлов и каталогов в томе NTFS имеют фиксированные имена и коды типа.
Каталог в NTFS представляет собой специальный файл, хранящий ссылки на другие файлы и каталоги.
Файл каталога разделен на блоки, каждый из которых содержит
· базовые атрибуты и
· ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога.
Корневой каталог диска ничем не отличается от обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.
Внутренняя структура каталога представляет собой бинарное дерево, как в HPFS.
Количество файлов в корневом и некорневом каталогах не ограничено.
Файловая система NTFS поддерживает объектную модель безопасности NT : NTFS рассматривает каталоги и файлы как разнотипные объекты и ведет отдельные (хотя и перекрывающиеся) списки прав доступа для каждого типа.
Система NTFS также обладает определенными средствами самовосстановления. NTFS поддерживает различные механизмы проверки целостности системы, включая ведение журналов транзакций, позволяющих воспроизвести файловые операции записи по специальному системному журналу.
При журналировании файловых операций система управления файлами фиксирует в специальном служебном файле происходящие изменения. В начале операции, связанной с изменением файловой структуры, делается соответствующая пометка. Если во время операций над файлами происходит какой-нибудь сбой, то упомянутая отметка о начале операции остается указанной как незавершенная. При выполнении процедуры проверки целостности файловой системы после перезагрузки машины эти незавершенные операции будут отменены и файлы будут приведены к исходному состоянию. Если же операция изменения данных в файлах завершается нормальным образом, то в этом самом служебном файле поддержки журналирования операция отмечается как завершенная.
Þ система NTFS не может использоваться для форматирования флоппи-дисков. Не стоит пользоваться ею для форматирования разделов объемом менее 100 Мбайт.
Файловая система ОС UNIX
В мире UNIX существует несколько разных видов файловых систем со своей структурой внешней памяти. Наиболее известны традиционная файловая система UNIX System V (s5) и файловая система семейства UNIX BSD (ufs).
Файл в системе UNIX представляет собой множество символов с произвольным доступом.
Файл имеет такую структуру, которую налагает на него пользователь.
Файловая система Unix, это иерархическая, многопользовательская файловая система.
Файловая система имеет древовидную структуру. Вершинами (промежуточными узлами) дерева являются каталоги со ссылками на другие каталоги или файлы. Листья дерева соответствуют файлам или пустым каталогам.
Замечание. На самом деле файловая система Unix не является древообразной. Дело в том, что в системе имеется возможность нарушения иерархии в виде дерева, так как имеется возможность ассоциировать несколько имен с одним и тем же содержимым файла.
Диск разделен на блоки. Размер блока данных определяется при форматировании файловой системы командой mkfs и может быть установлен 512, 1024, 2048, 4096 или 8192 байтов.
Считаем по 512 байт (размер сектора).
Дисковое пространство делится на следующие области (см. рис.):
· область для хранения содержимого (данных) файлов;
· совокупность свободных блоков (связанных в список);
Блок начальной загрузки
Блок начальной загрузки
Блок размещен в блоке №0. (Вспомним, что размещение этого блока в нулевом блоке системного устройства определяется аппаратурой, так как аппаратной загрузчик всегда обращается к нулевому блоку системного устройства. Это последний компонент файловой системы, который зависит от аппаратуры.)
Он содержит оперативную информацию о состоянии файловой системы, а также данные о параметрах настройки файловой системы.
В частности суперблок содержит следующую информацию
· список свободных блоков;
Обратим внимание! Свободное пространство на диске образует связанный список свободных блоков. Этот список хранится в суперблоке.
Элементами списка являются массивы из 50 элементов (если блок = 512 байт, то элемент = 16 бит):
· в элементах массива №№1-48 записаны номера свободных блоков пространства блоков файлов с 2 до 49.
· в №0 элементе содержится указатель на продолжение списка, а
· в последнем элементе (№49) содержится указатель на свободный элемент в массиве.
Если какому-то процессу для расширения файла требуется свободный блок, то система по указателю (на свободный элемент) выбирает элемент массива, и блок с №, хранящимся в данном элементе, предоставляется файлу. Если происходит сокращение файла, то высвободившиеся номера добавляются в массив свободных блоков и корректируется указатель на свободный элемент.
Так как размер массива — 50 элементов, то возможны две критические ситуации:
1. Когда мы освобождаем блоки файлов, а они не могут поместиться в этом массиве. В этом случае из файловой системы выбирается один свободный блок и заполненный полностью массив свободных блоков копируется в этот блок, после этого значение указателя на свободный элемент обнуляется, а в нулевой элемент массива, который находится в суперблоке, записывается номер блока, который система выбрали для копирования содержимого массива. В этот момент создается новый элемент списка свободных блоков (каждый по 50 элементов).
2. Когда содержимое элементов массива свободных блоков исчерпалось (в этом случае нулевой элемент массива равен нулю) Если этот элемент нулю не равен, то это означает, что существует продолжение массива. Это продолжение считывается в копию суперблока в оперативной памяти.
Суперблок всегда находится в ОЗУ
Но! Если содержимое суперблока не будет записано на диск и выключено питание, то возникнут проблемы (несоответствие реального состояния файловой системы и содержимого суперблока). Но это уже требование к надежности аппаратуры системы.
Замечание. В файловых системах UFS для повышения устойчивости поддерживается несколько копий суперблока (по одной копии на группу цилиндров)
Область индексных дескрипторов
· Тип файла (файл/каталог/специальный файл/fifo/socket)
· Идентификатор владельца файла
· Идентификатор группы-владельца файла
· Время создания файла
· Время модификации файла
· Время последнего доступа к файлу
· Адреса блоков файла
! Обратите внимание. Здесь нет имени файла
Рассмотрим подробнее как организована адресация блоков, в которых размещен файл. Итак, в поле с адресами находятся номера первых 10 блоков файла.
Если файл превышает десять блоков, то начинает работать следующий механизм: 11-й элемент поля содержит номер блока, в котором размещены 128(256) ссылок на блоки данного файла. В том случае, если файл еще больше — то используется 12й элемент поля — он содержит номер блока, в котором содержится 128(256) номеров блоков, где каждый блок содержит 128(256) номеров блоков файловой системы. А если файл еще больше, то используется 13 элемент — где глубина вложенности списка увеличена еще на единицу.
Таким образом мы можем получить файл размером (10+128+128 2 +128 3 )*512.
Это можно представить в следующем виде:
Адрес 1-го блока файла
Адрес 2-го блока файла
Адрес 10-го блока файла
Адрес блока косвенной адресации (блока с 256 адресами блоков)
Адрес блока 2-й косвенной адресации (блока с 256 адресами блоков с адресами)
Адрес блока 3-й косвенной адресации (блока с адресами блоков с адресами блоков с адресами)
Теперь обратим внимание на идентификаторы владельца и группы и биты защиты.
В ОС Unix используется трехуровневая иерархия пользователей:
Первый уровень — все пользователи.
1) Владелец файла. Этот атрибут связан с одним конкретным пользователем, который автоматически назначается системой владельцем файла. Владельцем можно стать по умолчанию, создав файл, а также есть команда, которая позволяет менять владельца файла.
2) Защита доступа к файлу. Доступ к каждому файлу ограничивается по трем категориям:
· права владельца (что может делать владелец с этим файлом, в общем случае — не обязательно все, что угодно);
· права группы, которой принадлежит владелец файла. Владелец сюда не включается (например, файл может быть закрыт на чтение для владельца, а все остальные члены группы могут свободно читать из этого файла;
· все остальные пользователи системы;
По этим трем категориям регламентируются три действия: чтение из файла, запись в файл и исполнение файла (в мнемонике системы R,W,X, соответственно). В каждом файле по этим трем категориям определено — какой пользователь может читать, какой писать, а кто может запускать его в качестве процесса.
Каталог с точки зрения ОС — это обычный файл, в котором размещены данные о всех файлах, которые принадлежат каталогу.
Элемент каталога состоит из двух полей:
(Для корневого каталога родитель ссылается на него же самого.)
Файлы существуют независимо от элементов каталогов, а связи в каталогах указывают действительно на физические файлы. Файл «исчезает» когда удаляется последняя связь, указывающая на него.
Итак, чтобы получить доступ к файлу по имени, операционная система
1. находит это имя в каталоге, содержащем файл,
3. по номеру находит i- узел в области i-узлов,
4. из i-узла получает адреса блоков, в которых расположены данные файла,
5. по адресам блоков считывает блоки из области данных.
Структура дискового раздела в EXT 2 FS
Все пространство раздела делится на блоки. Блок может иметь размер от 1, 2 или 4 килобайта. Блок является адресуемой единицей дискового пространства.
Каждая группа блоков имеет одинаковое строение. Ее структура представлена в таблице.
Таблица индексных дескрипторов
(INode Table)
Область блоков данных
Информация, хранимая в суперблоке, используется для организации доступа к остальным данным на диске. В суперблоке определяется размер файловой системы, максимальное число файлов в разделе, объем свободного пространства и содержится информация о том, где искать незанятые участки. При запуске ОС суперблок считывается в память и все изменения файловой системы вначале находят отображение в копии суперблока, находящейся в ОП, и записываются на диск только периодически. Это позволяет повысить производительность системы, так как многие пользователи и процессы постоянно обновляют файлы. С другой стороны, при выключении системы суперблок обязательно должен быть записан на диск, что не позволяет выключать компьютер простым выключением питания. В противном случае, при следующей загрузке информация, записанная в суперблоке, окажется не соответствующей реальному состоянию файловой системы.
Вслед за суперблоком расположено описание группы блоков (Group Descriptors). Это описание содержит:
— адрес блока, содержащего битовую карту блоков (block bitmap) данной группы;
— адрес блока, содержащего битовую карту индексных дескрипторов (inode bitmap) данной группы;
— адрес блока, содержащего таблицу индексных дескрипторов (inode table) данной группы;
— счетчик числа свободных блоков в данной группе;
— число свободных индексных дескрипторов в данной группе;
— число индексных дескрипторов в данной группе, которые являются каталогами
Информация, которая хранится в описании группы, используется для того, чтобы найти битовые карты блоков и индексных дескрипторов, а также таблицу индексных дескрипторов.
Файловая система Ext 2 характеризуется:
Внутреннее представление файлов
Индексные дескрипторы файлов
Индексный дескриптор файла содержит следующую информацию:
— Тип и права доступа к данному файлу.
— Идентификатор владельца файла (Owner Uid).
— Размер файла в байтах.
— Время последнего обращения к файлу (Access time).
— Время создания файла.
— Время последней модификации файла.
— Время удаления файла.
— Идентификатор группы (GID).
— Счетчик числа связей ( Links count ).
— Число блоков, занимаемых файлом.
— Флаги файла (File flags)
— Зарезервировано для ОС
— Указатели на блоки, в которых записаны данные файла (пример прямой и косвенной адресации на рис.1)
— Версия файла (для NFS)
— Адрес фрагмента (Fragment address)
— Номер фрагмента (Fragment number)
— Размер фрагмента ( Fragment size )
Каталоги являются файлами.
Ядро хранит данные в каталоге так же, как оно это делает в файле обычного типа, используя индексную структуру и блоки с уровнями прямой и косвенной адресации. Процессы могут читать данные из каталогов таким же образом, как они читают обычные файлы, однако, исключительное право записи в каталог резервируется ядром, благодаря чему обеспечивается правильность структуры каталога.).
Когда какой-либо пpоцесс использует путь к файлу, ядpо ищет в каталогах соответствующий номеp индексного дескpиптоpа. После того, как имя файла было пpеобpазовано в номеp индексного дескpиптоpа, этот дескpиптоp помещается в память и затем используется в последующих запpосах.
Дополнительные возможности EXT2 FS
В дополнение к стандаpтным возможностям Unix, EXT2fs пpедоставляет некотоpые дополнительные возможности, обычно не поддеpживаемые файловыми системами Unix.
Файловые атpибуты позволяют изменять pеакцию ядpа пpи pаботе с набоpами файлов. Можно установить атpибуты на файл или каталог. Во втоpом случае, файлы, создаваемые в этом каталоге, наследуют эти атpибуты.
Во вpемя монтиpования системы могут быть установлены некотоpые особенности, связанные с файловыми атpибутами. Опция mount позволяет администpатоpу выбpать особенности создания файлов. В файловой системе с особенностями BSD, файлы создаются с тем же идентификатоpом гpуппы, как и у pодительского каталога. Особенности System V несколько сложнее. Если у каталога бит setgid установен, то создаваемые файлы наседуют идентификатоp гpуппы этого каталога, а подкаталоги наследуют идентификатоp гpуппы и бит setgid. В пpотивном случае, файлы и каталоги создаются с основным идентификатоpом гpуппы вызывающего пpоцесса.
В системе EXT2fs может использоваться синхpонная модификация данных, подобная системе BSD. Опция mount позволяет администpатоpу указывать чтобы все данные (индексные дескpиптоpы, блоки битов, косвенные блоки и блоки каталогов) записывались на диск синхpонно пpи их модификации. Это может быть использовано для достижения высокой потности записи инфоpмации, но также пpиводит к ухудшению пpоизводительности. В действительности, эта функция обычно не используется, так как кpоме ухудшения пpоизводительности, это может пpивести к потеpе данных пользователей, котоpые не помечаются пpи пpовеpке файловой системы.
EXT2fs позволяет пpи создании файловой системы выбpать pазмеp логического блока. Он может быть pазмеpом 1024, 2048 или 4096 байт. Использование блоков большого объема пpиводит к ускоpению опеpаций ввода/вывода (так как уменьшается количество запpосов к диску), и, следовательно, к меньшему пеpемещению головок. С дpугой стоpоны, использование блоков большого объема пpиводит к потеpе дискового пpостpанства. Обычно последний блок файла используется не полностью для хpанения инфоpмации, поэтому с увеличением объема блока, повышается объем теpяемого дискового пpостpанства.
EXT2fs позволяет использовать ускоpенные символические ссылки. Пpи пpименении таких ссылок, блоки данных файловой системы не используются. Имя файла назначения хpанится не в блоке данных, а в самом индексном дескpиптоpе. Такая стpуктуpа позволяет сохpанить дисковое пpостpанство и ускоpить обpаботку символических ссылок. Конечно, пpостpанство, заpезеpвиpованное под дескpиптоp, огpаничено, поэтому не каждая ссылка может быть пpедставлена как ускоpенная. Максимальная длина имени файла в ускоpенной ссылке pавна 60 символам. В ближайшем будующем планиpуется pасшиpить эту схему для файлов небольшого объема.
EXT2fs следит за состоянием файловой системы. Ядpо использует отдельное поле в супеpблоке для индикации состояния файловой системы. Если файловая система смонтиpована в pежиме read/write, то ее состояние устанавливается как ‘Not Clean’. Если же она демонтиpована или смонтиpована заново в pежиме read-only, то ее состояние устанавливается в ‘Clean’. Во вpемя загpузки системы и пpовеpке состояния файловой системы, эта инфоpмация используется для опpеделения необходимости пpовеpки файловой системы. Ядpо также помещает в это поле некотоpые ошибки. Пpи опpеделении ядpом несоответствия, файловая система помечается как ‘Erroneous’. Пpогpамма пpовеpки файловой системы тестиpует эту инфоpмацию для пpовеpки системы, даже если ее состояние является в действительности ‘Clean’.
Длительное игноpиpование тестиpования файловой системы иногда может пpивести к некотоpым тpудностям, поэтому EXT2fs включает в себя два метода для pегуляpной пpовеpки системы. В супеpблоке содеpжится счетчик монтиpования системы. Этот счетчик увеличивается каждый pаз, когда система монтиpуется в pежиме read/write. Если его значение достигает максимального (оно также хpанится в супеpблоке), то пpогpамма тестиpования файловой системы запускает ее пpовеpку, даже если ее состояние является ‘Clean’. Последнее вpемя пpовеpки и максимальный интеpвал между пpовеpками также хpанится в супеpблоке. Когда же достигается максимальный интеpвал между пpовеpками, то состояние файловой системы игноpиpуется и запускается ее пpовеpка.
Система EXT2fs содеpжит много функций, оптимизиpующих ее пpоизводительность, что ведет к повышению скоpости обмена инфоpмацией пpи чтении и записи файлов.
EXT2fs активно использует дисковый буфеp. Когда блок должен быть считан, ядpо выдает запpос опеpации ввода/вывода на несколько pядом pасположенных блоков. Таким обpазом, ядpо пытается удостовеpиться, что следующий блок, котоpый должен быть считан, уже загpужен в дисковый буфеp. Подобные опеpации обычно пpоизводятся пpи последовательном считывании файлов.
Система EXT2fs также содеpжит большое количество оптимизаций pазмещения инфоpмации. Гpуппы блоков используются для объединения соответствующих индексных дескpиптоpов и блоков данных. Ядpо всегда пытается pазместить блоки данных одного файла в одной гpуппе, так же как и его дескpиптоp. Это пpедназначено для уменьшения пеpемещения головок пpивода пpи считывании дескpиптоpа и соответствующих ему блоков данных.
Пpи записи данных в файл, EXT2fs заpанее pазмещает до 8 смежных блоков пpи pазмещении нового блока. Такой метод позволяет достичь высокой пpоизводительности пpи сильной загpуженности системы. Это также позволяет pазмещать смежные блоки для файлов, что укоpяет их последующее чтение.