sonyps4.ru

Управление файлами, типы файлов, файловая система, атрибуты файла. Файловые системы

Файловые системы. Типы файловых систем. Операции с файлами. Каталоги. Операции с каталогами.

Файл - это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные.

Основные цели использования файла.

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

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

Файловая система (ФС) - это часть операционной системы, включающая:

    совокупность всех файлов на диске;

    наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске;

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

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

Широко известны следующие файловые системы:

    файловая система операционной системы MS - DOS , в основу которой положена таблица размещения файлов - FAT ( File Allocation Table ).

Таблица содержит сведения о расположении всех файлов (каждый файл делится на кластеры в соответствии с наличием свободного места на диске, кластеры одного файла не обязательно расположены рядом). Файловая система MS-DOS имеет значительные ограничения и недостатки, например, под имя файла отводится 12 байт, работа с жестким диском большого объема приводит к значительной фрагментации файлов;

Основные функции в такой ФС нацелены на решение следующих задач:

    именование файлов;

    программный интерфейс для приложений;

    отображения логической модели файловой системы на физическую организацию хранилища данных;

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

    OS /2 , называемая HPFS ( High - Performance File System - быстродействующая файловая система).

Обеспечивает возможность иметь имя файла до 254 символов. Файлы, записанные на диск, имеют минимальную фрагментацию. Может работать с файлами, записанными в MS DOS;

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

В многопользовательских системах появляется еще одна задача: защита файлов одного пользователя от несанкционированного доступа другого пользователя.

    файловая система операционной системы Windows 95

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

    файловые системы операционной системы Unix

Они обеспечивают унифицированный способ доступа к файловым системам ввода-вывода.

Права доступа к файлу практически определяют права доступа к системе (владелец файла – пользователь, который его создал).

Типы файлов

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

Обычные файлы , или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ. Большинство современных операционных систем (например, UNIX, Windows, OS/2) никак не ограничивает и не контролирует содержимое и структуру обычного файла. Содержание обычного файла определяется приложением, которое с ним работает. Например, текстовый редактор создает текстовые файлы, состоящие из строк символов, представленных в каком-либо коде. Это могут быть документы, исходные тексты программ и т. п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют коды символов, они часто имеют сложную внутреннюю структуру, например исполняемый код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы.

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

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

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

Иерархическая структура файловой системы

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

Граф, описывающий иерархию каталогов, может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог (рис. 7.3, б), и сеть - если файл может входить сразу в несколько каталогов (рис. 7.3, в). Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в UNIX - сетевую. В древовидной структуре каждый файл является листом. Каталог самого верхнего уровня называется корневым каталогом, или корнем ( root ).

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

Частным случаем иерархической структуры является одноуровневая организация, когда все файлы входят в один каталог (рис. 7.3, а).

Имена файлов

Все типы файлов имеют символьные имена. В иерархически организованных файловых системах обычно используются три типа имен -файлов: простые, составные и относительные.

Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты, при этом они должны учитывать ограничения ОС как на номенклатуру символов, так и на длину имени. До сравнительно недавнего времени эти границы были весьма узкими. Так, в популярной файловой системе FAT длина имен ограничивались схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени), а в файловой системе s5, поддерживаемой многими версиями ОС UNIX, простое символьное имя не могло содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлам легко запоминающиеся названия, ясно говорящие о том, что содержится в этом файле. Поэтому современные файловые системы, а также усовершенствованные варианты уже существовавших файловых систем, как правило, поддерживают длинные простые символьные имена файлов. Например, в файловых системах NTFS и FAT32, входящих в состав операционной системы Windows NT, имя файла может содержать до 255 символов.

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

Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла. Таким образом, полное имя является составным, в котором простые имена отделены друг от друга принятым в ОС разделителем. Часто в качестве разделителя используется прямой или обратный слеш, при этом принято не указывать имя корневого каталога. На рис. 7.3, б два файла имеют простое имя main.exe, однако их составные имена /depart/main.ехе и /user/anna/main.exe различаются.

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

Файл может быть идентифицирован также относительным именем. Относительное имя файла определяется через понятие «текущий каталог». Для каждого пользователя в каждый момент времени один из каталогов файловой системы является текущим, причем этот каталог выбирается самим пользователем по команде ОС. Файловая система фиксирует имя текущего каталога, чтобы затем использовать его как дополнение к относительным именам для образования полного имени файла. При использовании относительных имен пользователь идентифицирует файл цепочкой имен каталогов, через которые проходит маршрут от текущего каталога до данного файла. Например, если текущим каталогом является каталог /user, то относительное имя файла /user/anna/main.exe выглядит следующим образом: anna/ main.exe.

В некоторых операционных системах разрешено присваивать одному и тому же файлу несколько простых имен, которые можно интерпретировать как псевдонимы. В этом случае, так же как в системе с сетевой структурой, устанавливается соответствие «один файл - много полных имен», так как каждому простому имени файла соответствует по крайней мере одно полное имя.

И хотя полное имя однозначно определяет файл, операционной системе проще работать с файлом, если между файлами и их именами имеется взаимно однозначное соответствие. С этой целью она присваивает файлу уникальное имя, так что справедливо соотношение «один файл - одно уникальное имя». Уникальное имя существует наряду с одним или несколькими символьными именами, присваиваемыми файлу пользователями или приложениями. Уникальное имя представляет собой числовой идентификатор и предназначено только для операционной системы. Примером такого уникального имени файла является номер индексного дескриптора в системе UNIX.

Атрибуты файлов

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

    тип файла (обычный файл, каталог, специальный файл и т. п.);

    владелец файла;

    создатель файла;

    пароль для доступа к файлу;

    информация о разрешенных операциях доступа к файлу;

    времена создания, последнего доступа и последнего изменения;

    текущий размер файла;

    максимальный размер файла;

    признак «только для чтения»;

    признак «скрытый файл»;

    признак «системный файл»;

    признак «архивный файл»;

    признак «двоичный/символьный»;

    признак «временный» (удалить после завершения процесса);

    признак блокировки;

    длина записи в файле;

    указатель на ключевое поле в записи;

    длина ключа.

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

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

Значения атрибутов файлов могут непосредственно содержаться в каталогах, как это сделано в файловой системе MS-DOS (рис. 7.6, а). На рисунке представлена структура записи в каталоге, содержащая простое символьное имя и атрибуты файла. Здесь буквами обозначены признаки файла: R - только для чтения, А - архивный, Н - скрытый, S - системный.

Рис. 7.6. Структура каталогов: а - структура записи каталога MS-DOS (32 байта), б - структура записи каталога ОС UNIX

Другим вариантом является размещение атрибутов в специальных таблицах, когда в каталогах содержатся только ссылки на эти таблицы. Такой подход реализован, например, в файловой системе ufs ОС UNIX. В этой файловой системе структура каталога очень простая. Запись о каждом файле содержит короткое символьное имя файла и указатель на индексный дескриптор файла, так называется в ufs таблица, в которой сосредоточены значения атрибутов файла (рис. 7.6, б).

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

Операции над файлами

Большинство современных ОС рассматривают файл как неструктурированную последовательность байт переменной длины. В стандарте POSIX над файлом определены следующие операции:

    int open ( char * fname , int flags , mode _ t mode )

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

Параметр char * fname задает имя файла.int flags - это битовая маска, определяющая режим открытия файла.Файл может быть открыт только на чтение, только на запись и начтение и запись; кроме того, можно открывать существующий файл,а можно пытаться создать новый файл нулевой длины.Необязательный третий параметр mode используется толькопри создании файла и задает атрибуты этого файла.

    off _ t lseek ( int handle , off _ t offset , int whence )

Эта операция перемещает указатель чтения/записи в файле.Параметр offset задает количество байт, на которое нужно сместитьуказатель, а параметр whence - откуда отсчитывать смещение.Предполагается, что смещение можно отсчитывать от начала файла(SEEK_SET), от его конца (SEEK_END) и от текущегоположения указателя (SEEK_CUR). Операция возвращает положениеуказателя, отсчитываемое от начала файла. Таким образом, вызовlseek(handle, 0, SEEK_CUR) возвратит текущее положение указателя,не передвигая его.

    int read(int handle, char * where, size_t how_much)

Операция чтения из файла. Указатель where задает буфер,куда нужно поместитьпрочитанные данные; третий параметр указывает, сколько данных надо считать.Система считывает требуемое число байт из файла, начиная с указателячтения/записи в этом файле, и перемещает указатель к концу считаннойпоследовательности. Если файл кончился раньше, считывается столько данных,сколько оставалось до его конца. Операция возвращает количествосчитанных байт. Если файл открывался только для записи, вызов readвозвратит ошибку.

    int write(int handle, char * what, size_t how_much)

Операция записи в файл. Указатель what задает начало буфера данных;третий параметр указывает, сколько данных надо записать.Система записывает требуемое число байт в файл, начиная с указателячтения/записи в этом файле, заменяя хранившиеся на в этом месте данные,и перемещает указатель к концу записанного блока. Если файл кончился раньше,его длина увеличивается. Операция возвращает количество записанных байт.

Если файл открывался только для чтения, вызов write возвратит ошибку.

    int ioctl(int handle, int cmd, ...) ; int fcntl ( int handle , int cmd , ...)

Дополнительные операции над файлом. Первоначально, по-видимому,предполагалось, что ioctl - это операции над самим файлом,а fcntl - это операции над дескриптором открытого файла,но потом историческое развитие несколько перемешало функции этих системныхвызовов. Стандарт POSIX определяет некоторые операции как наддескриптором, например дублирование (в результате этой операции мы получаемдва дескриптора, связанных с одним и тем же файлом), так и над самим файлом,например, операцию truncate - обрезать файл до заданной длины.В большинстве версий Unix операцию truncate можноиспользовать и для вырезания данных из середины файла. При считывании данныхиз такой вырезанной области считываются нули, а сама эта область незанимает физического места на диске.

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

Большинство реализаций стандарта POSIX предлагает и своидополнительные операции. Так, в Unix SVR 4 этими операциямиможно устанавливать синхронную или отложенную запись и т.д.

    caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int handle, off_t offset)

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

Еще две операции выполняются уже не над файлом, а над его именем:это операции переименования и удаления файла. В некоторых системах,например в системах семейства Unix , файл может иметьнесколько имен, и существует только системный вызов для удаления имени.Файл удаляется при удалении последнего имени.

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

Примерно та же модель работы с файлами принята в CP / M ,а набор файловых системных вызовов MS DOS фактическископирован с вызовов Unix v 7 . В свою очередь, OS /2 и Windows NT унаследовали принципы работы с файламинепосредственно от MS DOS .

Напротив, в системах, не имеющих Unix в родословной,может использоваться несколько иная трактовка понятия файла.Чаще всего файл трактуется как набор записей. Обычно система поддерживаетзаписи как постоянной длины, так и переменной. Например, текстовый файлинтерпретируется как файл с записями переменной длины, а каждой строке текстасоответствует одна запись. Такова модель работы с файлами в VMS и в ОС линии OS /360 -MVS фирмы IBM.

Общее. В теории информатики определены следующие три основных типа структур данных – линейная, табличная, иерархическая. Пример книга: последовательность листов – линейная структура. Части, разделы, главы, параграфы – иерархия. Оглавление – таблица – связывает – иерархическую с линейной. У структурированных данных появляется новый атрибут - Адрес. И так:

      Линейные структуры (списки, вектора). Обычные списки. Адрес каждого элемента однозначно определяется его номером. Если все элементы списка имеют равную длину – вектора данных.

      Табличные структуры (таблицы, матрицы). Отличие таблицы от списка – каждый элемент – определяется адресом, состоящим не из одного, а нескольких параметров. Самый распространенный пример – матрица - адрес – два параметра – номер строки и номер столбца. Многомерные таблицы.

      Иерархические структуры. Используются для представления нерегулярных данных. Адрес – определяется маршрутом – от вершины дерева. Файловая система – компьютера. (Маршрут может превысить – величину данных, дихотомия – всегда два разветвления – влево и вправо).

Упорядочение структур данных. Основной способ – сортировка. ! При добавлении нового элемента в упорядоченную структуру – возможно изменения адреса у существующих. Для иерархических структур – индексация – каждому элементу уникальный номер – который далее используется в сортировке и поиске.

    Основные элементы файловой системы

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

Файл - это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Три параметра:

    последовательность произвольного числа байтов,

    уникальное собственное имя (фактически – адрес).

    данные одного типа – тип файла.

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

Первая, в современном понимании, развитая файловая система была разработана фирмой IBM для ее серии 360 (1965-1966 годы). Но в нынешних системах она практически не применяется. Использовала списочные структуры данных (ЕС- том, раздел, файл).

Большинство из Вас знакомо с файловыми системами современных ОС. Это прежде всего MS DOS, Windows, а некоторые с построением файловой системы для различных вариантов UNIX.

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

Именование файлов. Все современные файловые системы поддерживают многоуровневое именование файлов за счет поддержания во внешней памяти дополнительных файлов со специальной структурой - каталогов. Каждый каталог содержит имена каталогов и/или файлов, содержащихся в данном каталоге. Таким образом, полное имя файла состоит из списка имен каталогов плюс имя файла в каталоге, непосредственно содержащем данный файл. Разница между способами именования файлов в разных файловых системах состоит в том, с чего начинается эта цепочка имен. (Unix, DOS-Windows)

Защита файлов. Системы управления файлами должны обеспечивать авторизацию доступа к файлам. В общем виде подход состоит в том, что по отношению к каждому зарегистрированному пользователю данной вычислительной системы для каждого существующего файла указываются действия, которые разрешены или запрещены данному пользователю. Существовали попытки реализовать этот подход в полном объеме. Но это вызывало слишком большие накладные расходы как по хранению избыточной информации, так и по использованию этой информации для контроля правомочности доступа. Поэтому в большинстве современных систем управления файлами применяется подход к защите файлов, впервые реализованный в ОС UNIX (1974). В этой системе каждому зарегистрированному пользователю соответствует пара целочисленных идентификаторов: идентификатор группы, к которой относится этот пользователь, и его собственный идентификатор в группе. Соответственно, при каждом файле хранится полный идентификатор пользователя, который создал этот файл, и отмечается, какие действия с файлом может производить он сам, какие действия с файлом доступны для других пользователей той же группы, и что могут делать с файлом пользователи других групп. Эта информация очень компактна, при проверке требуется небольшое количество действий, и этот способ контроля доступа удовлетворителен в большинстве случаев.

Режим многопользовательского доступа. Если операционная система поддерживает многопользовательский режим вполне реальна ситуация, когда два или более пользователей одновременно пытаются работать с одним и тем же файлом. Если все эти пользователи собираются только читать файл, ничего страшного не произойдет. Но если хотя бы один из них будет изменять файл, для корректной работы этой группы требуется взаимная синхронизация. Исторически в файловых системах применялся следующий подход. В операции открытия файла (первой и обязательной операции, с которой должен начинаться сеанс работы с файлом) помимо прочих параметров указывался режим работы (чтение или изменение). + имеется специальные процедуры синхронизации действий пользователей. Нельзя по записям!

    Журналирование в файловых системах. Общие принципы.

Запуск проверки системы (fsck) на больших файловых системах может занять много времени, что очень плохо, учитывая сегодняшние высоко скоростные системы. Причиной, по которой целостность отсутствует в файловой системе, может являться не корректное размонтирование, например в момент прекращения работы на диск велась запись. Приложения могли обновлять данные, содержащиеся в файлах и система могла обновлять мета-данные файловой системы, которые являются «данными о данных файловой системы», иными словами, информация о том какие блоки связаны с какими файлами, какие файлы размещены в каких директориях и тому подобное. Ошибки (отсутствие целостности) в файлах данных – это плохо, но куда хуже ошибки в мета-данных файловой системы, что может привести к потерям файлов и другим серьезным проблемам.

Для минимизации проблем связанных с целостностью и минимизации времени перезапуска системы, журналируемая файловая система хранит список изменений, которые она будут проводить с файловой системой перед фактической записью изменений. Эти записи хранятся в отдельной части файловой системы, называемой «журналом» или «логом». Как только эти записи журнала (лога) безопасно записаны, журналируемая файловая система вносит эти изменения в файловую систему и затем удаляет эти записи из «лога» (журнала регистраций). Записи журнала организованы в наборы связанных изменений файловой системы, что очень похоже на то, как изменения добавляемые в базу данных организованны в транзакции.

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

Классический вид журналируемой файловой системы это хранение в журнале (логе) изменений метаданных файловой системы и хранение изменений всех данных файловой системы, включая изменения самих файлов.

    Файловая система MS-DOS (FAT)

Файловая система MS-DOS представляет собой древовидную файловую систему для небольших дисков и простых структур каталогов, в корне которой находится корневой каталог, а листьями являются файлы и другие каталоги, возможно пустые. Размещение файлов под управлением этой файловой системы происходит по кластерам, размер которых может колебаться от 4 КБ до 64 КБ кратно 4, без использования свойства смежности смешанным способом выделения дисковой памяти. Например, на рисунке показано три файла. Файл File1.txt является достаточно большим: он задействует три следующих друг за другом блока. Небольшой файл File3.txt использует пространство только одного размещаемого блока. Третий файл File2.txt. является большим фрагментированным файлом. В каждом случае точка входа указывает на первый распределяемый блок, принадлежащий файлу. Если файл использует несколько распределяемых блоков, то предшествующий блок указывает на следующий в цепочке. Значение FFF отождествляется с концом последовательности.

Дисковый раздел FAT

Для эффективного доступа к файлам используется таблица размещения файлов – File Allocation Table, которая размещается в начале раздела (или логического диска). Именно от названия таблицы размещения и происходит название этой файловой системы – FAT. В целях защиты раздела на нем хранятся две копии FAT, на тот случай, если одна из них окажется поврежденной. Кроме того, таблицы размещения файлов должны размещаться по строго фиксированным адресам, чтобы файлы, необходимые для запуска системы, были размещены корректно.

Таблица размещения файлов состоит из 16-разрядных элементов и содержит следующую информацию о каждом кластере логического диска:

    кластер не используется;

    кластер используется файлом;

    плохой кластер;

    последний кластер файла;.

Так как каждому кластеру должен быть присвоен уникальный 16-разрядный номер, то следовательно, FAT поддерживает максимально 216, или 65 536 кластеров на одном логическом диске (да еще некоторую часть кластеров резервирует для своих нужд). Таким образом получаем предельный размер диска, обслуживаемого MS-DOS, в 4 ГБ. Размер кластера можно увеличить или уменьшить в зависимости от размера диска. Однако, когда размер диска превышает некоторую величину, кластеры становятся слишком большого размера что ведет к внутренней дефрагментации диска. Кроме информации о файлах, в таблице размещения файлов может быть помещена информация и о каталогах. При этом каталоги рассматриваются как специальные файлы с 32-байтовыми элементами для каждого файла, содержащегося в этом каталоге. Корневой каталог имеет фиксированный размер – 512 записей для жесткого диска, а для дискет этот размер определяется объемом дискеты. Кроме того, корневой каталог расположен сразу же после второй копии FAT, поскольку в нем находятся файлы, необходимые загрузчику MS-DOS.

При поиске файла на диске MS-DOS вынуждена просматривать структуру каталога, чтобы найти его. Например, чтобы запустить исполняемый файл С:\Program\NC4\nc.exe находит исполнимый файл, выполнив следующие действия:

    читает корневой каталог диска C: и ищет в нем каталог Program;

    читает начальный кластер Program и ищет в этом каталоге запись о вложенном каталоге NC4;

    читает начальный кластер вложенного каталога NC4 и ищет в нем запись о файле nc.exe;

    читает все кластеры файла nc.exe.

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

Достоинства FAT

    Является лучшим выбором для логических дисков небольшого размера, т.к. стартует с минимальными накладными расходами. На дисках, размер которых не превышает 500 МБ, она работает с приемлемыми характеристиками.

Недостатки FAT

    Поскольку размер записи о файле ограничен 32 байтами, а информация должна включать в себя и размер файла и дату, и атрибуты и т.д., то размер под название файла также ограничен и не может превышать 8+3 символа на каждый файл. Использование так называемых коротких имен файлов делает FAT менее привлекательной для использования по сравнению с другими файловыми системами.

    Использование FAT на дисках, объем которых превышает 500 МБ нерационально по причине дефрагментации диска.

    Файловая система FAT не обладает никакими средствами защиты и поддерживает минимальные возможности по обеспечению безопасности информации.

    Скорость выполнения операций в FAT происходит обратно пропорционально глубине вложенности каталогов и объему диска.

    Файловая система UNIX – систем (ext3)

Современная, мощная и бесплатная операционная система Linux предоставляет широкую территорию для разработки современных систем и пользовательского программного обеспечения. Некоторые из наиболее интересных разработок в недавних ядрах Linux это новые, высоко производительные технологии для управления хранением, размещением и обновлением данных на диске. Один из наиболее интересных механизмов – это файловая система ext3, которая интегрируется в ядро Linux начиная с версии 2.4.16, и уже доступна по умолчанию в Linux дистрибутивах от компаний Red Hat и SuSE.

Файловая система ext3 является журналируемой файловой системой, 100% совместимой со всеми утилитами созданными для создания, управления и тонкой настройки файловой системы ext2, которая используется в Linux системах несколько последних лет. Перед детальным описанием различий между файловыми системами ext2 и ext3, уточним терминологию файловых систем и хранения файлов.

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

Файловые системы созданы на разделах диска для упрощения хранения и организации данных в форме файлов и директорий. Linux, как Unix система, использует иерархическую файловую систему составленную из файлов и директорий, которые соответственно содержат либо файлы либо каталоги. Файлы и директории в файловой системе Linux становятся доступным пользователю путем их монтирования (команда «mount»), которая обычно является частью процесса загрузки системы. Список файловых систем доступных для использования хранится в файле /etc/fstab (FileSystem TABle). Список файловых систем не смонтированных в данные момент системой хранится в файле /etc/mtab (Mount TABle).

В момент монтирования файловой системы в процессе загрузки, бит в заголовке («чистый бит» / «clean bit») стирается, это означает что файловая система используется, и что структуры данных используемые для управления размещением и организации файлов и директорий, в данной файловой системы могут быть изменены.

Файловая система расценивается как целостная если все блоки данных в ней либо используются, либо свободны; каждый размещенный блок данных занят одним и только одним файлом или директорией; все файлы и директории могут быть доступны после обработки серии других директорий в файловой системе. Когда система Linux намеренно прекращает работу используя команды оператора, все файловые системы размонтируются. Размонтирование файловой системы в процессе завершения работы устанавливает «чистый бит» в заголовок файловой системы, указывая на то, что файловая система была размонтирована должным образом и, тем самым, может рассматриваться как целостная.

Года отладки и переработки файловой системы и использование улучшенных алгоритмов для записи данных на диск в большой степени уменьшили повреждение данных вызываемых приложениями или самим ядром Linux, но устранение повреждения и потери данных в связи с отключением питания и другими системными проблемами до сих пор является сложной задачей. В случае аварийной остановки или простого отключения Linux системы без использования стандартных процедур остановки работы «чистый бит» в заголовке файловой системы не устанавливается. При следующей загрузке системы, процесс монтировки обнаруживает, что система не маркирована как «чистая», и физически проверяет ее целостность использую Linux/Unix утилиту проверки файловой системы "fsck" (File System ChecK).

Существует несколько журналируемых файловых систем доступных для Linux. Наиболее известные из них: XFS, журналируемая файловая система разработанная Silicon Graphics, но сейчас выпущенная открытым кодом (open source); RaiserFS, журналируемая файловая система разработанная специально для Linux; JFS, журналируемая файловая система первоначально разработанная IBM, но сейчас выпущенная как открытый код; ext3 – файловая система разработанная доктором Стефаном Твиди (Stephan Tweedie) в Red Hat, и несколько других систем.

Файловая система ext3 – это журналируемая версия Linux файловой системы ext2. Файловая система ext3 имеет одно значительно преимущество перед другими журналируемыми файловыми системами – она полностью совместима с файловой системой ext2. Это делает возможным использование всех существующих приложений разработанных для манипуляции и настройки файловой системы ext2.

Файловая система ext3 поддерживается ядрами Linux версии 2.4.16 и более поздними, и должна быть активизирована использованием диалога конфигурации файловых систем (Filesystems Configuration) при сборке ядра. В Linux дистрибутивы, такие как Red Hat 7.2 и SuSE 7.3 уже включена встроенная поддержка файловой системы ext3. Вы можете использовать файловую систему ext3 только в том случае, когда поддержка ext3 встроена в ваше ядро и у вас есть последние версии утилит «mount» и «e2fsprogs».

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

# /sbin/tune2fs -j <имя-раздела >

Например, перевод файловой системы ext2 расположенной на разделе /dev/hda5 в файловую систему ext3 может быть осуществлен с помощью следующей комманды:

# /sbin/tune2fs -j /dev/hda5

Опция "-j" команды "tune2fs" создает журнал ext3 на существующей ext2 файловой системе. После перевода файловой системы ext2 в ext3, вы так же должны внести изменения в записи файла /etc/fstab, для указания что теперь раздел является файловой системой "ext3". Так же вы можете использовать авто определение типа раздела (опция «auto»), но все же рекомендуется явно указывать тип файловой системы. Следующий пример файл /etc/fstab показывает изменения до и после перевода файловой системы для раздела /dev/hda5:

/dev/ hda5 /opt ext2 defaults 1 2

/dev/ hda5 /opt ext3 defaults 1 0

Последнее поле в /etc/fstab указывает этап в загрузке, во время которого целостность файловой системы должна быть проверена с помощью утилиты «fsck». При использовании файловой системы ext3, вы можете установить это значение в «0», как показано на предыдущем примере. Это означает что программа "fsck" никогда не будет проверять целостность файловой системе, в связи с тем что целостность файловой системы гарантируется путем отката в журнале.

Перевод корневой файловой системы в ext3 требует особого подхода, и лучше всего его проводить в режиме одного пользователя (single user mode) после создания RAM диска поддерживающего файловую систему ext3.

Кроме совместимости с утилитами файловой системы ext2 и простым переводом файловой системы из ext2 в ext3, файловая система ext3 так же предлагает несколько различных типов журнилирования.

Файловая система ext3 поддерживает три различных режима журналирования, которые могут быть активированы из файла /etc/fstab. Эти режимы журналирования следующие:

    Журнал / journal – запись всех изменений данных файловой системы и мета-данных. Наиболее медленный из всех трех режимов журналирования. Этот режим минимизирует шанс потери изменений файлов которые вы проводите в файловой системе.

    Последовательный / ordered – записываются изменения только мета-данных файловой системы, но записывает обновления данных файла на диск перед изменениями ассоциируемых мета-данных файловой системы. Этот режим журналирования ext3 установлен по умолчанию.

    Обратная запись / writeback – записываются только изменения мета-данных файловой системы, основан на стандартном процессе записи изменений данных файлов. Это наиболее быстрый метод журналирования.

Различия между этими режимами журналирования одновременно и едва заметны, и основательны. Использование режима «журнал» требует, что бы файловая система ext3 записывала каждое изменение файловой системы дважды – первый раз в журнал, а затем в саму файловую систему. Это может снизить общую производительность вашей файловой системы, но этот режим наиболее любим пользователями, потому что он минимизирует шанс потери изменения данных ваших файлов, так как и изменения мета - данных и изменения данный файлов записывается в журнал ext3 и может быть повторено при перезагрузке системы.

Используя «последовательный» режим, записываются только изменения мета - данных файловой системы, что понижает избыточность между записью в файловую систему и в журнал, именно в связи с эти метод более быстрый. Не смотря на то, что изменения данных файла не записываются в журнал, они должны быть сделаны до изменений ассоциируемых мета - данных файловой системы, которые проводит журналирующий ext3 демон, что может немного снизить производительность вашей системы. Использование этого метода журналирования гарантирует что файлы в файловой системе никогда не будет рассинхронизированы со связанными мета-данными файловой системы.

Метод «обратная запись» наиболее быстрый, чем остальные два журналируемых метода, так как хранятся данные только о изменениях мета-данных файловой системы, и нет ожидания изменения ассоциируемых данных файла при записи (перед обновлением таких вещей как размер файла и информация о директории). Так как обновление данных файла производиться асинхронно по отношению к журналируемым изменениям мета-данных файловой системы, файлы в файловой системе могут показывать ошибки в мета-данных, например ошибка в указании владельца блоков данных (обновление которых к моменту перезагрузки системы было не закончено). Это не фатально, но может помешать пользователю.

Указание журналируемого режима, используемого в ext3 файловой системе производиться в файле /etc/fstab для этой файловой системы. «Последовательный» режим используется по умолчанию, но вы можете указать различные режимы журналирования, путем изменения опций для требуемого раздела в файле /etc/fstab. Например, запись в /etc/fstab указывающая на использование режима журналирования «обратная запись» будет выглядеть следующим образом:

/dev/hda5 /opt ext3 data=writeback 1 0

    Файловая система семейства Windows NT (NTFS)

      Физическая структура NTFS

Начнем с общих фактов. Раздел NTFS, теоретически, может быть почти какого угодно размера. Предел, конечно, есть, но я даже не буду указывать его, так как его с запасом хватит на последующие сто лет развития вычислительной техники - при любых темпах роста. Как обстоит с этим дело на практике? Почти так же. Максимальный размер раздела NTFS в данный момент ограничен лишь размерами жестких дисков. NT4, правда, будет испытывать проблемы при попытке установки на раздел, если хоть какая-нибудь его часть отступает более чем на 8 Гб от физического начала диска, но эта проблема касается лишь загрузочного раздела.

Лирическое отступление. Метод инсталляции NT4.0 на пустой диск довольно оригинален и может навести на неправильные мысли о возможностях NTFS. Если вы укажете программе установки, что желаете отформатировать диск в NTFS, максимальный размер, который она вам предложит, будет всего 4 Гб. Почему так мало, если размер раздела NTFS на самом деле практически неограничен? Дело в том, что установочная секция просто не знает этой файловой системы:) Программа установки форматирует этот диск в обычный FAT, максимальный размер которого в NT составляет 4 Гбайт (с использованием не совсем стандартного огромного кластера 64 Кбайта), и на этот FAT устанавливает NT. А вот уже в процессе первой загрузки самой операционной системы (еще в установочной фазе) производится быстрое преобразование раздела в NTFS; так что пользователь ничего и не замечает, кроме странного "ограничения" на размер NTFS при установке. :)

      Структура раздела - общий взгляд

Как и любая другая система, NTFS делит все полезное место на кластеры - блоки данных, используемые единовременно. NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Никаких аномалий кластерной структуры NTFS не имеет, поэтому на эту, в общем-то, довольно банальную тему, сказать особо нечего.

Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.

Свободное место диска, однако, включает в себя всё физически свободное место - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Жизнь продолжается... Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.

      MFT и его структура

Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности (они очень важны) хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, "зацепившись" за самую основу - за первый элемент MFT.

        Метафайлы

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

Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени "$", хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение.

копия первых 16 записей MFT, размещенная посередине диска

файл поддержки журналирования (см. ниже)

служебная информация - метка тома, версия файловой системы, т.д.

список стандартных атрибутов файлов на томе

корневой каталог

карта свободного места тома

загрузочный сектор (если раздел загрузочный)

файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5)

файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально.

        Файлы и потоки

Итак, у системы есть файлы - и ничего кроме файлов. Что включает в себя это понятие на NTFS?

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

    Опциональный элемент - потоки данных файла. Может показаться странным определение "опциональный", но, тем не менее, ничего странного тут нет. Во-первых, файл может не иметь данных - в таком случае на него не расходуется свободное место самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего "физического" воплощения в основной файловой области - все данные такого файла хранятся в одном месте - в MFT.

Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки! Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей - например, файлу можно "прилепить" еще один поток, записав в него любые данные - например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла - это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология прилепила в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто имейте в виду, что файл на NTFS - это более глубокое и глобальное понятие, чем можно себе вообразить просто просматривая каталоги диска. Ну и напоследок: имя файла может содержать любые символы, включая полый набор национальных алфавитов, так как данные представлены в Unicode - 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла - 255 символов.

      Каталоги

Каталог на NTFS представляет собой специфический файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Внутренняя структура каталога представляет собой бинарное дерево. Вот что это означает: для поиска файла с данным именем в линейном каталоге, таком, например, как у FAT-а, операционной системе приходится просматривать все элементы каталога, пока она не найдет нужный. Бинарное же дерево располагает имена файлов таким образом, чтобы поиск файла осуществлялся более быстрым способом - с помощью получения двухзначных ответов на вопросы о положении файла. Вопрос, на который бинарное дерево способно дать ответ, таков: в какой группе, относительно данного элемента, находится искомое имя - выше или ниже? Мы начинаем с такого вопроса к среднему элементу, и каждый ответ сужает зону поиска в среднем в два раза. Файлы, скажем, просто отсортированы по алфавиту, и ответ на вопрос осуществляется очевидным способом - сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента.

Вывод - для поиска одного файла среди 1000, например, FAT придется осуществить в среднем 500 сравнений (наиболее вероятно, что файл будет найден на середине поиска), а системе на основе дерева - всего около 10-ти (2^10 = 1024). Экономия времени поиска налицо. Не стоит, однако думать, что в традиционных системах (FAT) всё так запущено: во-первых, поддержание списка файлов в виде бинарного дерева довольно трудоемко, а во-вторых - даже FAT в исполнении современной системы (Windows2000 или Windows98) использует сходную оптимизацию поиска. Это просто еще один факт в вашу копилку знаний. Хочется также развеять распространенное заблуждение (которое я сам разделял совсем еще недавно) о том, что добавлять файл в каталог в виде дерева труднее, чем в линейный каталог: это достаточно сравнимые по времени операции - дело в том, что для того, чтобы добавить файл в каталог, нужно сначала убедится, что файла с таким именем там еще нет:) - и вот тут-то в линейной системе у нас будут трудности с поиском файла, описанные выше, которые с лихвой компенсируют саму простоту добавления файла в каталог.

Какую информацию можно получить, просто прочитав файл каталога? Ровно то, что выдает команда dir. Для выполнения простейшей навигации по диску не нужно лазить в MFT за каждым файлом, надо лишь читать самую общую информацию о файлах из файлов каталогов. Главный каталог диска - корневой - ничем не отличается об обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.

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

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

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

Пример 2: более сложный случай - идет запись данных на диск. Вдруг, бах - отключается питание и система перезагружается. На какой фазе остановилась запись, где есть данные, а где чушь? На помощь приходит другой механизм системы - журнал транзакций. Дело в том, что система, осознав свое желание писать на диск, пометила в метафайле $LogFile это свое состояние. При перезагрузке это файл изучается на предмет наличия незавершенных транзакций, которые были прерваны аварией и результат которых непредсказуем - все эти транзакции отменяются: место, в которое осуществлялась запись, помечается снова как свободное, индексы и элементы MFT приводятся в с состояние, в котором они были до сбоя, и система в целом остается стабильна. Ну а если ошибка произошла при записи в журнал? Тоже ничего страшного: транзакция либо еще и не начиналась (идет только попытка записать намерения её произвести), либо уже закончилась - то есть идет попытка записать, что транзакция на самом деле уже выполнена. В последнем случае при следующей загрузке система сама вполне разберется, что на самом деле всё и так записано корректно, и не обратит внимания на "незаконченную" транзакцию.

И все-таки помните, что журналирование - не абсолютная панацея, а лишь средство существенно сократить число ошибок и сбоев системы. Вряд ли рядовой пользователь NTFS хоть когда-нибудь заметит ошибку системы или вынужден будет запускать chkdsk - опыт показывает, что NTFS восстанавливается в полностью корректное состояние даже при сбоях в очень загруженные дисковой активностью моменты. Вы можете даже оптимизировать диск и в самый разгар этого процесса нажать reset - вероятность потерь данных даже в этом случае будет очень низка. Важно понимать, однако, что система восстановления NTFS гарантирует корректность файловой системы, а не ваших данных. Если вы производили запись на диск и получили аварию - ваши данные могут и не записаться. Чудес не бывает.

Файлы NTFS имеют один довольно полезный атрибут - "сжатый". Дело в том, что NTFS имеет встроенную поддержку сжатия дисков - то, для чего раньше приходилось использовать Stacker или DoubleSpace. Любой файл или каталог в индивидуальном порядке может хранится на диске в сжатом виде - этот процесс совершенно прозрачен для приложений. Сжатие файлов имеет очень высокую скорость и только одно большое отрицательное свойство - огромная виртуальная фрагментация сжатых файлов, которая, правда, никому особо не мешает. Сжатие осуществляется блоками по 16 кластеров и использует так называемые "виртуальные кластеры" - опять же предельно гибкое решение, позволяющее добиться интересных эффектов - например, половина файла может быть сжата, а половина - нет. Это достигается благодаря тому, что хранение информации о компрессированности определенных фрагментов очень похоже на обычную фрагментацию файлов: например, типичная запись физической раскладки для реального, несжатого, файла:

кластеры файла с 1 по 43-й хранятся в кластерах диска начиная с 400-го кластеры файла с 44 по 52-й хранятся в кластерах диска начиная с 8530-го...

Физическая раскладка типичного сжатого файла:

кластеры файла с 1 по 9-й хранятся в кластерах диска начиная с 400-го кластеры файла с 10 по 16-й нигде не хранятся кластеры файла с 17 по 18-й хранятся в кластерах диска начиная с 409-го кластеры файла с 19 по 36-й нигде не хранятся....

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

      Безопасность

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

Права файловой системы NTFS неразрывно связаны с самой системой - то есть они, вообще говоря, необязательны к соблюдению другой системой, если ей дать физический доступ к диску. Для предотвращения физического доступа в Windows2000 (NT5) всё же ввели стандартную возможность - об этом см. ниже. Система прав в своем текущем состоянии достаточно сложна, и я сомневаюсь, что смогу сказать широкому читателю что-нибудь интересное и полезное ему в обычной жизни. Если вас интересует эта тема - вы найдете множество книг по сетевой архитектуре NT, в которых это описано более чем подробно.

На этом описание строение файловой системы можно закончить, осталось описать лишь некоторое количество просто практичных или оригинальных вещей.

Эта штука была в NTFS с незапамятных времен, но использовалась очень редко - и тем не менее: Hard Link - это когда один и тот же файл имеет два имени (несколько указателей файла-каталога или разных каталогов указывают на одну и ту же MFT запись). Допустим, один и тот же файл имеет имена 1.txt и 2.txt: если пользователь сотрет файл 1, останется файл 2. Если сотрет 2 - останется файл 1, то есть оба имени, с момента создания, совершенно равноправны. Файл физически стирается лишь тогда, когда будет удалено его последнее имя.

      Symbolic Links (NT5)

Гораздо более практичная возможность, позволяющая делать виртуальные каталоги - ровно так же, как и виртуальные диски командой subst в DOSе. Применения достаточно разнообразны: во-первых, упрощение системы каталогов. Если вам не нравится каталог Documents and settings\Administrator\Documents, вы можете прилинковать его в корневой каталог - система будет по прежнему общаться с каталогом с дремучим путем, а вы - с гораздо более коротким именем, полностью ему эквивалентным. Для создания таких связей можно воспользоваться программой junction (junction.zip(15 Kb), 36 кб), которую написал известный специалист Mark Russinovich (http://www.sysinternals.com). Программа работает только в NT5 (Windows 2000), как и сама возможность. Для удаления связи можно воспользоваться стандартной командой rd. ВНИМАНИЕ: Попытка удаления связи с помощью проводника или других файловых менеджеров, не понимающих виртуальную природу каталога (например, FAR), приведет к удалению данных, на которые ссылается ссылка! Будьте осторожны.

      Шифрование (NT5)

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

Файловая система NTFS
Для различных операционных систем разработано несколько различных файловых систем. На компьютере, работающем под управлением Windows ХР, для организации раздела диска можно выбрать одну из трех файловых систем: NTFS (NT File System), FAT 16 или FAT 32. Улучшенная файловая система NTFS обеспечивает очень высокий уровень быстродействия и безопасности, а также дополнительные возможности, недоступные ни в одной версии файловой системы FAT. Кроме того, в Windows ХР файловая система NTFS обеспечивает разрешения для файлов и папок, шифрование, дисковые квоты и сжатие.
NTFS необходимо использовать, если требуется управлять доступом к файлам и папкам и организовать поддержку учетных записей с ограниченными правами. В случае же применения файловой системы FAT 32 все пользователи будут иметь доступ ко всем файлам на жестком диске, независимо от типа учетной записи (администратор, ограниченные права или стандартные права). NTFS лучше других подходит для работы с большими дисками. К NTFS имеют доступ только компьютеры, работающие под управлением Windows ХР или Windows 2000, а также Windows NT 4.0 с дополнениями.
Файловую систему NTFS рекомендуется выбирать, когда работа в среде нескольких операционных систем не планируется.
Если диск или раздел будет преобразован в формат NTFS, то обратное преобразование в формат FAT 16 или FAT 32 будет проблематичным. Необходимо будет переформатировать диск или раздел, что приведет к уничтожению всех содержащихся в нем данных, включая программы и файлы. Файловые системы FAT 16 и FAT 32
В Windows XP, 7, 8 чаще всего используется одна из разновидностей файловой системы, называемая таблицей размещения файлов - FAT (File Allocation Table).
Файловая система FAT относится к числу архаичных, используемых с времен MS DOS.
FAT 16 нашла также применение в операционных системах семейства Windows для упорядочения файлов и управления ими. FAT 16 представляет собой структуру данных, создаваемую Windows при форматировании тома для файловых систем. Windows хранит в таблице размещения файлов сведения о каждом файле, чтобы при необходимости можно было извлечь необходимый файл. FAT 16 поддерживает длинные имена файлов. К FAT 16 можно получить доступ из систем MS DOS, а также любых версий Windows, Windows NT, Windows 2000, Windows XP, Windows 7, Windows 8 и OS/2.
Том представляет собой область памяти на жестком диске. Том форматируется для определенной файловой системы, такой как FAT или NTFS, и обозначается буквой. Содержимое тома можно просмотреть, щелкнув на его значке в проводнике Windows или в окне "Мой компьютер". Один жесткий диск может содержать несколько томов; тома также могут занимать несколько дисков.

Файловая система FAT 32 является производной от системы FAT 16.
FAT 32 поддерживает меньшие размеры кластеров, что позволяет более эффективно использовать дисковое пространство.
Смысл перехода из системы FAT 16 в FAT 32 состоит в следующем.
"Порции" данных хранятся на дисках в пределах отрезков дисковой памяти определенной величины - кластеров. Если каждый кластер заполняется не до конца, то остаток места пропадает. В файловой системе FAT 16 используются кластеры объемом 32 Кбайт, а в файловой системе FAT 32 каждый кластер занимает пространство всего 4 Кбайт. Таким образом, при неполном заполнении кластеров дисковой памяти будет потеряно меньше. Так же, как и NTFS, система FAT 32 поддерживает работу с дисковой памятью больших объемов. К FAT 32 можно получить доступ из Windows 2000, Windows XP Windows 7, Windows 8.
FAT 16 или FAT 32 целесообразно использовать в том случае, если на ПК планируются работы как в Windows XP, так и в среде систем предыдущих генераций.

В настоящее время компьютерный рынок предлагает множество возможностей хранения огромного количества личной или корпоративной информации в цифровой форме. Устройства хранения включают в себя внутренние и внешние жесткие диски, флэш-накопители USB, карты памяти фото / видеокамер, сложные RAID-системы и т. д. Фактические документы, презентации, изображения, музыка, видео, базы данных, электронные сообщения хранятся в виде файлов, которые могут занимать много места.

В этой статье представлено подробное описание того, как информация хранится на устройстве хранения.

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

Как правило, в компьютерных хранилищах используется пара секторов и смещение в секторе для ссылки на любой байт информации в хранилище. Сектор представляет собой группу байтов (обычно 512 байт), минимальную адресуемую единицу физического хранилища. Например, 1040 байт на жестком диске будет упоминаться как сектор № 3 и смещение в секторе 16 байт ([сектор - 512] + [сектор - 512] + ). Эта схема применяется для оптимизации адресации хранилища и использования меньшего числа для ссылки на любую часть информации в хранилище.

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

Каждый файл хранится в «неиспользуемых» секторах и может быть прочитан по известному положению и размеру. Однако, как мы узнаем, какие сектора используются, а какие нет? Где хранятся размер, положение и имя файла? Эти ответы даются файловой системой.

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

Огромные операции записи / удаления в файловой системе приводят к фрагментации файловой системы. Таким образом, файлы не сохраняются как целые единицы, а делятся на фрагменты. Например, хранилище целиком занимают файлы размером около 4 блоков (например, коллекция изображений). Пользователь хочет сохранить файл, который займет 8 блоков и, следовательно, удалит первый и последний файлы. Делая это, он очищает пространство на 8 блоков, однако первый сегмент близок к началу хранения, а второй - к концу хранилища. В этом случае файл с 8 блоками разбивается на две части (по 4 блока для каждой части) и занимает «дыры» свободного пространства. Информация об обоих фрагментах как части одного файла хранится в файловой системе.

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

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

Файловые системы Windows

ОС Microsoft Windows использует две основные файловые системы: FAT, унаследованные от старой DOS с ее более поздним расширением FAT32 и широко используемыми файловыми системами NTFS. Недавно выпущенная файловая система ReFS была разработана Microsoft как файловая система нового поколения для серверов Windows 8, 10.

FAT (таблица распределения файлов) - один из простейших типов файловых систем. Он состоит из сектора дескриптора файловой системы (загрузочного сектора или суперблока), таблицы распределения блоков файловой системы (называемой таблицей распределения файлов) и простого пространства для хранения файлов и папок. Файлы в FAT хранятся в каталогах. Каждый каталог представляет собой массив из 32-байтных записей, каждый из которых определяет файлы или расширенные атрибуты файла (например, длинное имя файла). Запись файла присваивает первый блок файла. Любой следующий блок можно найти через таблицу распределения блоков, используя его как связанный список.

Таблица распределения блоков содержит массив дескрипторов блоков. Значение «ноль» указывает, что блок не используется, а значение отличное от нуля относится к следующему блоку файла или специальному значению для конца файла.

Числа в FAT12, FAT16, FAT32 обозначают количество бит, используемых для перечисления блока файловой системы. Это означает, что FAT12 может использовать до 4096 различных ссылок на блоки, в то время как FAT16 и FAT32 могут использовать до 65536 и 4294967296 соответственно. Фактическое максимальное количество блоков еще меньше и зависит от реализации драйвера файловой системы.

FAT12 использовался для старых дискет. FAT16 (или просто FAT) и FAT32 широко используются для карт флэш-памяти и USB-флеш-накопителей. Система поддерживается мобильными телефонами, цифровыми камерами и другими портативными устройствами.

FAT или FAT32 - это файловая система, которая используется в Windows-совместимых внешних хранилищах или дисковых разделах с размером менее 2 ГБ (для FAT) или 32 ГБ (для FAT32). Windows не может создать файловую систему FAT32 более чем на 32 ГБ (однако Linux поддерживает FAT32 до 2 ТБ).

NTFS (новая технологическая файловая система) была представлена ​​в Windows NT и в настоящее время является основной файловой системой для Windows. Это файловая система по умолчанию для дисковых разделов и единственная файловая система, которая поддерживает разделы диска по 32 ГБ. Файловая система довольно расширяема и поддерживает многие свойства файла, включая контроль доступа, шифрование и т. д. Каждый файл в NTFS хранится в виде файлового дескриптора в таблице основных файлов и содержимом файла. Таблица главного файла содержит всю информацию о файле: размер, распределение, имя и т. д. В первом и последнем секторах файловой системы содержатся параметры файловой системы (загрузочная запись или суперблок). Эта файловая система использует 48 и 64-битные значения для ссылок на файлы, тем самым поддерживая дисковые хранилища с большой емкостью.

ReFS (Resilient File System) - последняя разработка Microsoft, доступная в настоящее время для серверов Windows 8 и 10. Архитектура файловой системы абсолютно отличается от других файловых систем Windows и в основном организована в виде B + -tree. ReFS обладает высокой устойчивостью к отказам из-за новых функций, включенных в систему, а именно, Copy-on-Write (CoW): никакие метаданные не изменяются без копирования; данные записываются на новое дисковое пространство, а не поверх существующих данных. При любых модификациях файлов новая копия метаданных хранится в свободном пространстве для хранения, а затем система создает ссылку из старых метаданных в более новую. Таким образом, система хранит значительное количество старых резервных копий в разных местах, обеспечивая легкое восстановление файлов, если это место для хранения не перезаписано.

Для получения информации о восстановлении данных из этих файловых систем посетите страницу «Шансы для восстановления ».

Файловые системы MacOS

Операционная система Apple MacOS применяет две файловые системы: HFS +, расширение к своей собственной файловой системе HFS, используемой на старых компьютерах Macintosh, и недавно выпущенную APFS.

Файловая система HFS + работает под управлением продуктов Apple, включая компьютеры Mac, iPod, а также продукты Apple X Server. В расширенных серверных продуктах также используется файловая система Apple Xsan, кластерная файловая система, созданная из файловых систем StorNext или CentraVision.

Эта файловая система хранит файлы и папки и информацию Finder о просмотре каталогов, положениях окна и т. д.

Файловые системы Linux

ОС Linux с открытым исходным кодом нацелена на внедрение, тестирование и использование различных концепций файловых систем.

Самые популярные файловые системы Linux:

  • Ext2, Ext3, Ext4 - «родная» файловая система Linux. Эта файловая система подпадает под активные разработки и улучшения. Файловая система Ext3 - это просто расширение Ext2, которое использует операции записи транзакций с журналом. Ext4 является дополнительной расширенной разработкой Ext3, с поддержкой оптимизированной информации о распределении файлов (экстентов) и расширенных атрибутов файлов. Эта файловая система часто используется как «корневая» файловая система для большинства установок Linux.
  • ReiserFS - альтернативная файловая система Linux для хранения огромного количества небольших файлов. Она имеет хорошие возможности поиска файлов и позволяет компактно распределять файлы, сохраняя хвосты файлов или небольшие файлы вместе с метаданными, чтобы не использовать большие блоки файловой системы для той же цели.
  • XFS - файловая система, созданная компанией SGI и первоначально использовавшаяся для серверов IRIX компании. Теперь спецификации XFS реализованы в Linux. Файловая система XFS имеет отличную производительность и широко используется для хранения файлов.
  • JFS - файловая система, разработанная IBM для мощных вычислительных систем компании. JFS1 обычно обозначает JFS, JFS2 - вторая версия. В настоящее время эта файловая система является с открытым исходным кодом и реализована в большинстве современных версий Linux.

Концепция «жесткой связи », используемая в таких операционных системах, делает большинство файловых систем Linux одинаковыми, поскольку имя файла не рассматривается как атрибут файла и скорее определяется как псевдоним для файла в определенном каталоге. Объект файла можно связать со многими местоположениями, даже размножаться из одного и того же каталога под разными именами. Это может привести к серьезным и даже непреодолимым трудностям при восстановлении имен файлов после удаления файлов или повреждения файловой системы.

Для получения информации о восстановлении данных из этих файловых систем посетите страницу « ».

Файловые системы BSD, Solaris, Unix

Наиболее распространенной файловой системой для этих операционных систем является UFS (Unix File System), также часто называемая FFS (Fast File System).

В настоящее время UFS (в разных версиях) поддерживается всеми операционными системами семейства Unix и является основной файловой системой ОС BSD и операционной системы Sun Solaris. Современные компьютерные технологии, как правило, реализуют замены для UFS в разных операционных системах (ZFS для Solaris, JFS и производных файловых систем для Unix и т. д.).

Для получения информации о восстановлении данных из этих файловых систем посетите страницу « ».

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

Кластерные файловые системы используются в компьютерных кластерных системах. Эти файловые системы поддерживают распределенное хранилище.

Распределенные файловые системы включают:

  • ZFS - «Zettabyte File System» - новая файловая система, разработанная для распределенных хранилищ Sun Solaris OS.
  • Apple Xsan - эволюция компании Apple в CentraVision и более поздних файловых системах StorNext.
  • VMFS - «Файловая система виртуальных машин», разработанная компанией VMware для своего VMware ESX Server.
  • GFS - Red Hat Linux «Глобальная файловая система».
  • JFS1 - оригинальный (устаревший) дизайн файловой системы IBM JFS, используемой в старых системах хранения AIX.

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

Для получения дополнительной информации о восстановлении данных из этих файловых систем посетите страницу « ».

Классификация, структура, характеристики файловых систем!!!

1.Понятие, структура и работа файловой системы.

Файловая система - совокупность (порядок, структура и содержание) организации хранения данных на носителях информации, которая непосредственно представляет доступ к хранимым данным, на бытовом уровне это совокупность всех файлов и папок на диске. Основными "единицами" файловой системы принято считать кластер, файл, каталог, раздел, том, диск.
Совокупность нулей и единиц на носителе информации составляют кластера (минимальный размер места для хранения информации, также их принято называть понятием сектор, размер их кратен 512 байтам).
Файлы - поименованная совокупность байтов, разделенная на сектора. В зависимости от файловой системы, файл может обладать различным набором свойств. Для удобства в работе с файлами используются их (символьные идентификаторы) имена.
Для организации строения файловой системы файлы группируются в каталоги .
Раздел - область диска созданная при его разметке и содержащая один или несколько отформатированных томов.
Том - область раздела с файловой системой, таблицей файлов и областью данных. Один или несколько разделов составляют диск .
Вся информация о файлах хранится в особой области раздела - таблице файлов. Таблица файлов позволяет ассоциировать числовые идентификаторы файлов и дополнительную информацию о них (дата изменения, права доступа, имя и т. д.) с непосредственным содержимым файла, хранящимся в другой области раздела.

MBR (Master Boot Record) специальная область расположенная в начале диска - содержащая необходимую для BIOS информацию для загрузки операционной системы с жесткого диска.
Таблица разделов (partition table) также расположена в начале диска, ее задача - хранить информацию о разделах: начало, длина, загрузка. На загрузочном разделе расположен загрузочный сектор (boot sector), хранящий программу загрузки операционной системы.

Отсчет начинается от MBR (от сектора с номером 0) для всех основных (primary) разделов, как для обычных, так и для расширенного, и только для основных.
Все обычные логические (not extended logical) разделы задаются сдвигом относительно начала того расширенного раздела, в котором они описаны.
Все расширенные логические (extended logical) разделы задаются сдвигом относительно начала основного расширенного раздела (extended primary).

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

В MBR может быть записан как "стандартный" загрузчик,

так и загрузчики типа LILO/GRUB.

Стандартный загрузчик находит в таблице основных разделов первый раздел с флагом bootable (загрузочный), считывает его первый сектор (boot-сектор) и передает управление коду, записанному в этом boot-секторе. Если вместо стандартного загрузчика MBR стоит другой, то он не смотрит на флаг bootable, может загружать с любого раздела (прописанных в его настройках).

Например для загрузки операционной системы Windows NT/2k/XP/2003 в boot-секторе записывается код, загружающий с текущего раздела в память основной загрузчик (ntloader).
Для каждой файловой системы FAT16/FAT32/NTFS используется свой загрузчик. В корне раздела обязательно должен присутствовать файл ntldr. Если вы видете при попытке загрузить Windows сообщение "NTLDR is missing", то это как раз тот случай, когда файл ntldr отсутствует. Также для нормальной работы ntldr возможно нужны файлы bootfont.bin, ntbootdd.sys, ntdetect.com и правильно написанный boot.ini.

Пример boot.ini

C:\boot.ini

timeout=8
default=C:\gentoo.bin

C:\gentoo.bin="Gentoo Linux"
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP (32-bit)" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Windows XP (64-bit)" /fastdetect /usepmtimer

Пример конфигурационного файла grub.conf

#grub.conf generated by anaconda
#
#Note that you do not have to rerun grub after making changes to this file
#
#NOTICE: You have a /boot partition. This means that
#all kernel and initrd paths are relative to /boot/, eg.
#root (hdO.O)
#kernel /vmlinuz-version ro root=/dev/sda2
#initrd /initrd-version.img
#boot=/dev/sda default=0 timeout=5
splashimage=(hdO,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux server (2.6.18-53.el 5)
root (hdO.O)
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet-
initrd /initrd-2.6.18-53.el5.img

Структура файла lilo.conf

# LILO configuration file generated by "liloconfig"
//Секция описания глобальных параметров
# Start LILO global section
//Место, куда записан Lilo. В данном случае это MBR
boot = /dev/hda
//Сообщение, которое выводится при загрузке
message = /boot/boot_message.txt
//Вывод приглашения
prompt
//Time Out на выбор операционной системы
timeout = 1200
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# VESA framebuffer console @ 800x600x256
//Выбор видеорежима отображения меню
vga = 771
# End LILO global section
//Секция описания параметров загрузки windows
# DOS bootable partition config begins
other = /dev/hda1
label = Windows98
table = /dev/hda
# DOS bootable partition config ends
//Секция описания параметров загрузки QNX
# QNX bootable partition config begins
//Путь к операцционной системе
other = /dev/hda2
label = QNX
table = /dev/hda
# QNX bootable partition config ends
//Секция описания параметров загрузки Linux
# Linux bootable partition config begins
//Путь к образу ядра
image = /boot/vmlinuz
root = /dev/hda4
label = Slackware
read-only
# Linux bootable partition config ends


2.Наиболее известные файловые системы.

  • Advanced Disc Filing System
  • AdvFS
  • Be File System
  • CSI - DOS
  • Encrypting File System
  • Extended File System
  • Second Extended File System
  • Third Extended File System
  • Fourth Extended File System
  • File Allocation Table (FAT)
  • Files - 11
  • Hierarchical File System
  • HFS Plus
  • High Perfomance File System (HPFS)
  • ISO 9660
  • Journaled File System
  • Macintosh File System
  • MINIX file system
  • MicroDOS
  • Next3
  • New Implementation of a Log-structured F (NILFS)
  • Novell Storage Services
  • New Technology File System (NTFS)
  • Protogon
  • ReiserFS
  • Smart File System
  • Squashfs
  • Unix File System
  • Universal Disk Format (UDF)
  • Veritas File System
  • Windows Future Storage (WinFS)
  • Write Anywhere File Layout
  • Zettabyte File System (ZFS)

3.Основные характеристики файловых систем.

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

Максимальный (минимальный) размер тома;
- Максимальное (минимальное) количество файлов в корневом каталоге;
- Максимальное количество файлов в некорневом каталоге;
- Безопасность на уровне файлов;
- Поддержка длинных имен файлов;
- Самовосстановление;
- Сжатие на уровне файлов;
- Ведение журналов транзакций;

4.Краткое описание наиболее распространенных файловых систем FAT, NTFS, EXT.

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

FAT (file allocation table) означает «таблица размещения файлов».
В файловой системе FAT логическое дисковое пространство любого логического диска делится на две области:
- системную область;
- область данных.
Системная область создается при форматировании и обновляется при манипулировании файловой структурой. Область данных содержит файлы и каталоги, подчиненные корневому, и доступна через пользовательский интерфейс. Системная область состоит из следующих компонентов:
- загрузочной записи;
- зарезервированных секторов;
- таблицы размещения файлов (FAT);
- корневого каталога.
Таблица размещения файлов представляет собой карту (образ) области данных, в которой описывается состояние каждого участка области данных. Область данных разбивается на кластеры. Кластер – один или несколько смежных секторов в логическом дисковом адресном пространстве (только в области данных). В таблице FAT кластеры, принадлежащие одному файлу (некорневому каталогу), связываются в цепочки. Для указания номера кластера в системе управления файлами FAT16 используется 16-битовое слово, следовательно, можно иметь до 65536 кластеров.
Кластер – минимальная адресуемая единица дисковой памяти, выделяемая файлу или некорневому каталогу. Файл или каталог занимает целое число кластеров. Последний кластер при этом может быть задействован не полностью, что приведет к заметной потере дискового пространства при большом размере кластера.
Так как FAT используется при доступе к диску очень интенсивно, она загружается в ОЗУ и находится там максимально долго.
Корневой каталог отличается от обычного каталога тем, что он размещается в фиксированном месте логического диска и имеет фиксированное число элементов. Для каждого файла и каталога в файловой системе хранится информация в соответствии со следующей структурой:
- имя файла или каталога – 11 байт;
- атрибуты файла – 1 байт;
- резервное поле – 1 байт;
- время создания – 3 байта;
- дата создания – 2 байта;
- дата последнего доступа – 2 байта;
- зарезервировано – 2 байта;
- время последней модификации – 2 байта;
- номер начального кластера в FAT – 2 байта;
- размер файла – 4 байта.
Структура системы файлов является иерархической.

Файловая система FAT32.
FAT32 является полностью независимой 32-разрядной файловой системой и содержит многочисленные усовершенствования и дополнения по сравнению с FAT16. Принципиальное отличие FAT32 заключается в более эффективном использовании дискового пространства: FAT32 использует кластеры меньшего размера, что приводит к экономии дискового пространства.
FAT32 может перемещать корневой каталог и использовать резервную копию FAT вместо стандартной. Расширенная загрузочная запись FAT32 позволяет создавать копии критических структур данных, что повышает устойчивость дисков к нарушениям структуры FAT по сравнению с предыдущими версиями. Корневой каталог представляет собой обычную цепочку кластеров, поэтому может находиться в произвольном месте диска, что снимает ограничение на размер корневого каталога.


Файловая система NTFS.
Файловая система NTFS (New Technology File System) содержит ряд значительных усовершенствований и изменений, существенно отличающих ее от других файловых систем. С точки зрения пользователей файлы по-прежнему хранятся в каталогах, но работа на дисках большого объема в NTFS происходит намного эффективнее:
- имеются средства для ограничения доступа к файлам и каталогам;
- введены механизмы, существенно повышающие надежность файловой системы;
- сняты многие ограничения на максимальное количество дисковых секторов и/или кластеров.

Основные характеристики файловой системы NTFS:
- надежность. Высокопроизводительные компьютеры и системы совместного использования должны обладать повышенной надежностью, для этой цели введен механизм транзакций, при котором ведется журналирование файловых операций;
- расширенная функциональность. В NTFS введены новые возможности: усовершенствованная отказоустойчивость, эмуляция других файловых систем, мощная модель безопасности, параллельная обработка потоков данных, создание файловых атрибутов, определенных пользователем;
- поддержка стандарта POSIX. К числу базовых средств относятся необязательное использование имен файлов с учетом регистра, хранение времени последнего обращения к файлу и механизм альтернативных имен, позволяющий ссылаться на один и тот же файл по нескольким именам;
- гибкость. Распределение дискового пространства отличается большой гибкостью: размер кластера может изменяться от 512 байт до 64 Кбайт.
NTFS хорошо работает с большими массивами данных и большими томами. Максимальный размер тома (и файла) – 16 Эбайт. (1 Эбайт равен 2**64 или 16000 млрд. гигабайт.) Количество файлов в корневом и некорневом каталогах не ограничено. Поскольку в основу структуры каталогов NTFS заложена эффективная структура данных, называемая «бинарным деревом», время поиска файлов в NTFS не связано линейной зависимостью с их количеством.
Система NTFS обладает некоторыми средствами для самовосстановления и поддерживает различные механизмы проверки целостности системы, включая ведение журнала транзакций, позволяющий отследить по системному журналу файловые операции записи.
Файловая система NTFS поддерживает объектную модель безопасности и рассматривает все тома, каталоги и файлы как самостоятельные объекты NTFS. Права доступа к томам, каталогам и файлам зависит от учетной записи пользователя и той группы, к которой он принадлежит.
Файловая система NTFS обладает встроенными средствами сжатия, которые можно применять к томам, каталогам и файлам.

Файловая система Ext3.
Файловая система ext3 может поддерживать файлы размером до 1 ТБ. С Linux-ядром 2.4 объём файловой системы ограничен максимальным размером блочного устройства, что составляет 2 терабайта. В Linux 2.6 (для 32-разрядных процессоров) максимальный размер блочных устройств составляет 16 ТБ, однако ext3 поддерживает только до 4 ТБ.
Ext3 имеет хорошую совместимость с NFS и не имеет проблемы с производительностью при дефиците свободного дискового пространства.Еще одно достоинство ext3 происходит из того, что она основана на коде ext2. Дисковый формат ext2 и ext3 идентичен; из этого следует, что при необходимости ext3 filesystem можно монтировать как ext2 без каких либо проблем. И это еще не все. Благодаря факту, что ext2 и ext3 используют идентичные метаданные, имеется возможность оперативного обновления ext2 в ext3.
Надежность Ext3
В дополнение к ext2-compatible, ext3 наследует другие преимущества общего формата metadata. Пользователи ext3 имеют в своем распоряжении годами проверенный fsck tool. Конечно, основная причина перехода на journaling filesystem - отказ от необходимости периодических и долгих проверок непротиворечивости метаданных на диске. Однако "журналирование" не способно защитить от сбоев ядра или повреждения поверхности диска (или кое-чего подобного). В аварийной ситуации вы оцените факт преемственности ext3 от ext2 с ее fsck.
Журнализация в ext3.
Теперь, когда имеется общее понимание проблемы, посмотрим, как ext3 осуществляет journaling. В коде журнализации для ext3 используется специальный API, называемый Journaling Block Device layer или JBD. JBD был разработан для журнализации на любых block device. Ext3 привязана к JBD API. При этом код ext3 filesystem сообщает JBD о необходимости проведения модификации и запрашивает у JBD разрешение на ее проведение. Журналом управляет JBD от имени драйвера ext3 filesystem. Такое соглашение очень удобно, так как JBD развивается как отдельный, универсальный объект и может использоваться в будущем для журналирования в других filesystems.
Защита данных в Ext3
Теперь можно поговорить о том, как ext3 filesystem обеспечивает журнализацию и data, и metadata. Фактически в ext3 имеются два метода гарантирования непротиворечивости.
Первоначально ext3 разрабатывалась для журналирования full data и metadata. В этом режиме (называется "data=journal" mode), JBD журналирует все изменения в filesystem, связанные как с data, так и с metadata. При этом JBD может использовать журнал для отката и восстановления metadata и data. Недостаток "полного" журналирования в достаточно низкой производительности и расходе большого объема дискового пространства под журнал.
Недавно для ext3 был добавлен новый режим журналирования, который сочетает высокую производительность и гарантию непротиворечивости структуры файловой системы после сбоя (как у "обычных" журналируемых файловых систем). Новый режим работы обслуживает только metadata. Однако драйвер ext3 filesystem по-прежнему отслеживает обработку целых блоков данных (если они связаны с модификацией метаданных), и группирует их в отдельный объект, называемый transaction. Транзакция будет завершена только после записи на диск всех данных. "Побочный" эффект такой "грубой" методики (называемой "data=ordered" mode) - ext3 обеспечивает более высокую вероятность сохранности данных (по сравнению с "продвинутыми" журналируемыми файловыми системами) при гарантии непротиворечивости metadata. При этом происходит журналирование изменений только структуры файловой системы. Ext3 использует этот режим по умолчанию.
Ext3 имеет множество преимуществ. Она разработана для максимальной простоты развертывания. Она основана на годами проверенном коде ext2 и получила "по наследству" замечательный fsck tool. Ext3 в первую очередь предназначена для приложений, не имеющих встроенных возможностей по гарантированию сохранности данных. В целом, ext3 - замечательная файловая система и достойное продолжение ext2.Есть еще одна характеристика, положительно отличающая ext3 от остальных journaled filesystems под Linux - высокая надежность.

Файловая система ext4 является достойным эволюционным продолжением системы ext.



Загрузка...