Драйвер файловой системы это

Обновлено: 07.07.2024

При эксплуатации ОС может возникнуть необходимость монтировать файловые системы, отличающиеся от "родной" ФС. Особенно часто она возникает в организациях, где используются ОС нескольких разных типов. Да и в организациях, работающих с монокультурой MS DOS/MS Windows, такая потребность возникает все чаще. Во-первых, доступ к файлам на файловом сервере осуществляется существенно иными способами, чем к файлам локальном диске, даже если на сервере стоит та же ДОС с той же Фс тип FAT. Во-вторых, дисководы для CD-ROM становятся все дешевле и распространяются все шире. При этом стандартная ФС на CD-ROM – вовсе FAT.

Решение этой проблемы приходит в голову сразу – необходим драйвер файловой системы со стандартным интерфейсом, подобный драйверу внешнего устройства. Естественно, набор функций такого драйвера должен быть существенно иным.

  • mount – монтирование ФС. В зависимости от типа ФС параметры этой функции должны различаться. Для ФС на локальных дисках достаточно передать системный идентификатор монтируемого диска. Для ФС на удаленной машине мы должны передать сетевой адрес этой машины и имя требуемой файловой системы. Во многих случаях проводится различие между монтированием ФС для чтения/модификации или только для чтения: при монтировании с модификацией устанавливается флаг загрязнения (dirty flag) ФС.
  • umount – размонтирование ФС.
  • GetFreeSpace или df – получение информации о ФС: общее пространство, свободное пространство, количество файлов и т. д.
  • FindFirst/FindNext или opendir/readdir – функции для чтения из каталога. Считанную информацию необходимо привести к формату, принятому в данной ОС. В частности, может оказаться необходимым сократить и/или преобразовать считанные имена файлов. Например, драйвер HPFS, используемый в-эмуляторе MS DOS, в системе OS/2 не выполняет такого преобразования. В результате – программы DOS не видят файлов и каталогов с длинными именами.
  • access – проверить существование файла и возможность доступа к нему в заданном режиме, например, для чтения или для записи.
  • stat – функция для получения информации о файле с заданным именем. Драйвер ФС должен считать доступную информацию о файле и привести ее к принятому в ОС формату. При этом возможно придется проигнорировать часть считанной информации, а другую часть, напротив, драйвер вынужден сочинять сам. Так, драйвер файловой системы FAT в ОС семейства Unix вынужден сочинять идентификатор хозяина файла, права доступа и т. д.
  • open – открыть существующий или создать новый файл с заданным именем.
  • read и write – функции считывания данных из файла в записи в него.
  • lseek – позиционирование в файле.
  • lock – функция (в действительности, набор функций) блокировки для синхронизации доступа к файлу или его участкам. (Подробнее о них см. в разд. "Захват участков файлов"). При работе с локальными ФС операции блокировки могут прослеживаться ядром системы и не доходить до драйвера ФС, но при работе с разделяемыми по сети ФС блокировки необходимо отслеживать на уровне протокола разделения файлов, поэтому драйвер сетевой ФС обязан знать о блокировках.
  • close – закрыть файл.
  • delete или unlink – удалить файл или его имя.
  • link – создать связь с файлом (новое имя). Далеко не все ОС и ФС поддерживают эту операцию.
  • mkdir – создать каталог.
  • rmdir – удалить каталог. Обычно разрешено удаление только пустых каталогов.

Кроме собственно драйвера ФС, для ее полноценной поддержки нужны следующие программы:

  • программа создания ФС – mkfs или FORMAT;
  • программа контроля и починки ФС – fsck или CHKDSK;
  • программа fstyp, которая смотрит на содержимое устройства и пытается определить, "ее" это ФС или не ее. Она полезна при монтировании ФС с автоматическим определением ее типа;
  • программа mount, которая принимает из командной строки зависящие от типа ФС параметры, проверяет их допустимость и инициализирует драйвер ФС.

Драйверы файловых систем в SCO UnixWare

Например, дистрибутив ОС UnxiWare 2.0 фирмы SCO, основанной на ядре UNIX System V R4.2, содержит драйверы следующих файловых систем.

  • memfs – файловая система, размещающая файлы в оперативной памяти. Может рассматриваться как эквивалент виртуального диска в MS DOS.
  • dosfs – файловая система FAT.
  • s5 – "классическая" ФС, сохранившаяся почти без изменений с самых ранних версий системы – s5, по-видимому, означает Unix System 5. Ограничивает имя файла 14 символами. Неустойчива к сбоям.
  • ufs – файловая система, разработанная в университете Беркли, известная также как FFS (Fast File System) и Berkley FS. Является основной ФС в большинстве версий BSD UNIX и поддерживается многими другими ОС семейства Unix. Имеет более высокую производительность, чем s5, в первую очередь за счет разбиения таблицы инодов и списка свободных блоков на участки (группы цилиндров). Поддерживает дисковые квоты ограничения на объем дискового пространства, занятого файлами того и иного пользователя. Ограничивает имя файла размером блока (обычно 512 символов). Неустойчива к сбоям.
  • bfs – Boot File System – загрузочная файловая система. Эта ФС очень простую структуру, отчасти похожую на файловую систему все файлы в ней обязаны занимать непрерывное пространство. "Гака структура упрощает первичный загрузчик системы, которому теперь не нужно разбираться в каталогах и инодах .bfs имеет довольно низкую производительность и требует длительной процедуры размонтирования. если в нее были записаны новые данные.
    Фактически, при таком размонтировании происходит операция сжатия ФС, эквивалентная команде SQEESE в RT-11. Используется для хранения ядра системы и нескольких конфигурационных файлов, применяемых при загрузке. Все эти данные считываются лишь при загрузке системы и перезаписываются только при изменениях конфигурации ядра, поэтому высокая производительность от этой ФС не требуется.
  • vxfs – устойчивая к сбоям ФС Veritas с регистрацией намерений. Версия, входящая в стандартную поставку системы, включает в регистрируемые транзакции только системные структуры данных. За отдельную плату можно приобрести "продвинутую" версию Veritas, которая обеспечивает транзакции и для записи пользовательских данных.
  • cdfs – файловая система ISO, используемая на CD-ROM.
  • nfs – Network File System – драйвер файловой системы, обеспечивающий разделение файлов с использованием сетевого протокола TCP/IP. Протокол NFS был предложен фирмой Sun Microsystems в середине 80-х годов и в настоящее время поддерживается практически всеми членами семейства Unix. NFS-клиенты и NFS-серверы реализованы практически для всех современных ОС.
  • rfs – Remote File Sharing – использование удаленной UNIX-системы в качестве файлового сервера. Этот протокол был разработан фирмой AT&T в 80-е годы и пригоден только для соединения систем UNIX System V.
  • nucfs – NetWare Unix Client File System. Этот драйвер предназначен для присоединения к файловым серверам Novell Netware. Он входит в состав системы UnixWare, поставляемой фирмой SCO, но не в остальные версии UNIX SVR4.

Любопытно, что даже MS/DR DOS версий выше 3.30 имеют возможность устанавливать драйвер файловой системы. Такой драйвер может быть реализован путем перехвата недокументированных функций прерывания 0x2F – группы функций Network Redirector и IPS. Таким образом реализован ряд сетевых клиентов для MS/DR DOS. К сожалению, автор не смог найти полноценного описания этих функций.

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

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

1. Заполняет следующий фрагмент стека пакета IRP необходимой информацией для завершения ввода-вывода. После этого пакет IRP отправляется драйверу класса.

2. Создает последовательность пакетов IRP для выполнения запрошенного ввода-вывода.

Драйвер файловой системы содержит метаданные на самом носителе. В метаданные входит информация о разрешениях доступа к файловой системе и таблица размещения файлов (расположение файлов на диске). Драйвер файловой системы получает пакет IRP, который указывает на определенную операцию по отношению к файлу, считывает необходимые метаданные и отправляет запрос IRP, Который уже относится к блоку диска, а не к файлу. Операционная система поставляется с драйверами файловых систем NTFS, UDFS и FAT.

Создание драйвера файловой системы или драйверов фильтрации для файловых систем в Windows NT З.ж поначалу считали “черной магией”. Впоследствии Microsoft предоставила инсталляционный инструментарий файловых систем (Installable File System Kit), который содержит необходимые заголовочные файлы, документацию и примеры создания файловых систем и драйверов фильтрации файловых систем.

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



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

Вступление

image

Можно попробовать сделать совместимость с имеющимися ОС, дабы была возможность запускать уже привычные приложения. Но… Так тоже уже делали, к примеру в OS/2, как результат — отсутствие нативного софта, преимуществ использования именно этой платформы небыло, использовали кривую windows, которая в те времена обладала своими особенностями. Нечто похожее происходит и сейчас в OS GNU/Linux, в которой есть «не эмулятор» wine — масса негативных отзывов и мнение новичка формируется из ошибок поддержки неродного софта.

image

Можно прикрутить к нашей платформе удобный биллинг и делиться деньгами с разработчиками. Идея не нова, софта действительно настрогают очень много, однако… Если залезть в маркеты и поискать игры… Мы найдем 100 товердефенсов и 1000 тетрисов. Да, количественно софта очень много, но на практике уникального — крупицы в море bloatware, показывающего рекламу и имеющего функционал поделок на уроках информатики. Можно ли прославиться, если под твою платформу написали кучу ненужного софта и каждая софтина клянчит деньги?

image

А может быть и не нужно ничего делать? Может быть просто сделать качественную платформу, под которую будет удобно и легко программировать? Платформу, которую сможет использовать каждый и которая будет нетребовательна к ресурсам? К примеру, к таким платформам как wordpress, joomla, phpbb написаны тысячи плагинов, как бесплатных, так и коммерческих. Да, это не ОС, но это самостоятельная платформа. А что такое программа, если не плагин к операционной системе?

Мотивация.

image

Современные ОС написаны на неуправляемых языках, где возможны утечки памяти и переполнения. Это путь к уязвимостям. Если же писать ОС на управляемом языке, то проблемы с повреждением памяти уйдут в прошлое, как страшный сон. Будет не только достигнут невиданный ранее уровень безопасности, но и появлятся расширенные средства для управления всем процессом работы приложения. К примеру, открываются новые горизонты для многопользовательских приложений, событийного программирования, масштабируемости и виртуализации. Можно смело сказать, что это обеспечит качественный скачек в области программирования и компьютерных наук.

Интерфейсы:

  1. Открытие файла
  2. Закрытие файла
  3. Чтение данных
  4. Запись данных
  5. Обрезание файла
  • readFile($path) — вернет файл целиком
  • readDir($path) — вернет список файлов как массив

Перейдем к делу

image


Довольно слов, займемся делом. В этой части я реализую файловую систему, но файловой системе как правило требуется доступ к диску. Поэтому, в качестве вступления, я реализую «заглушку», которая будет реализовывать интерфейс по чтению секторов. В дальнейшем коде заглушка будет переписана.

Это простенький класс будет выполнять простую, но важную задачу: чтение секторов с устройства. Есть еще один нюанс: у нас нет поддержки разделов. В принципе, реализуется оно просто, к примеру MBR прочитать легко:Аналогично и с разбиением разделов GPT, только там немного другие смещения и 8 байт на смещение.

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

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

Итак, все готово, полетели!

image

Вот собственно и все. Основные вещи я прокомментировал в коде, думаю все понятно. Если я что-то забыл откомментировать, то пишите в комментариях, я с большим удовольствием отвечу.

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

Практическое применение.

image


Вам знакома ситуация, когда Firefox начинает дичайше тормозить, пытаясь реорганизовать свой кеш? А что будет, если кеш копился месяц, а потом Firefox (или вы сами) захотите его удалить? Лично у меня это выглядит как дичайший скрежет винта, который напоминает индексирование всего диска. Вообще, он меня сильно пугал: сидишь себе в интернете, никого не трогаешь, и вдруг диск начинает шуметь так, словно пробрался какой-то злой вирус и удаляет все-все файлы. Лично меня ПУГАЕТ такое поведение. И дело даже не в sqlite. Когда я открывал и закрывал Firefox несколько раз, в попытках окончательно удалить кеш, я все равно не мог избавиться от шуршания диска. Плюнув на все, я пошел в директорию с профайлом, в надежде вычистить его руками. Какого же было мое удивление, что удаление файлов через файловый менеджер заняло у меня 15 минут (!), при этом диск дичайше скрипел, имитируя работу вирусов. И это на новеньком компьютере со скоростным винтом и 16 гигабайтами оперативки. Дело не в том, что в кеше было очень много мелких файлов, а в том, что было достаточно записать несколько секторов, а остальные отметить свободными. Но драйвер файловой системы поступал последовательно, удаляя файл за файлом, тем самым получилась такая картина. Я был вынужден отключить кеш в Firefox, иначе им невозможно пользоваться.

image


Другая картина наверняка будет знакома веб-разработчикам: пользователи заливают свои картинки, от картинок мы генерируем превьюшки, иногда достаточно мелкие, дабы занимали они 1-2 кб. И такими картинками забиты целые диски. Какого же бывает удивление разработчиков, когда картинок всего 200 гигабайт, а терабайтный диск оказывается полностью заполнен. Судорожные попытки проверить целостность файловой системы него не дают. Куда подевалось все место? Может производитель диска в очередной раз всех обманул, только теперь у него мегабайт — это 200000 байт? А причина в том, что обычно (в повседневной жизни) файлы используются несколько бОльшего объема, разработчики под них и подстроили все параметры, поэтому файловая система оказывается просто неоптимизированной для мелких файлов. Знакомо, правда?

Тестирование

image


Пришло время посмотреть, чего же у нас получилось. Но для начала надо подготовить тестовое окружение. Для начала создадим файл весом в 100 мегабайт — это будет образ нашей файловой системы:

Затем сделаем его устройством и отформатируем:

Смонтируем наш раздел

Собственно, раздел присоединен к нашей основной системе.
Копируем файлы, создаем директории. В общем, заполняем раздел данными.
Я создал директорию и пару файлов с длинными кириллическими файлами (для теста)

Осталось демонтировать нашу файловую систему и отсоединить loop:

image


Вы готовы стать маленькими детьми, которые набрасываются на вкуснятинку?


Бинарное сравнение файлов:

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

image

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

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

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

Виды файлов:

· собственно файл (файл текстового редактора Word, электронных таблиц Excel и др.),

· ярлык – ссылка на объект, чаще всего запускной файл; ярлыки принято создавать на рабочем столе Windows.

Файловая система – система организации хранения файлов на каком-либо электроном носителе.

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

Адрес, или путь доступа к файлу, состоит из имени диска и последовательности имен всех каталогов (папок) на пути к файлу.

G:\Задания\Lekzii\Т2_1Архитектура.doc – путь доступа к файлу, адрес.

Примеры расширений (типов) файлов основных офисных приложений:

.doc – файлы, созданные в текстовом редакторе Word (англ. «слово»);

.xls – файлы, созданные в электронных таблицах Excel;

.ppt – файлы-презентации, созданные в пакете презентационной графики Power Point;

.mdb – файлы, созданные в базах данных Access.

Основные типы файлов и расширений

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

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

Ø символ «*» (звездочка) – заменяет неизвестное количество неизвестных символов, т.е. любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.

Например:

*.doc – маска файлов, созданные в текстовом редакторе Word, т.е. все Word-файлы;

?k*.ppt – маска файлов-презентаций, в именах которых на 2-ом месте находится символ «k».

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

Ø обеспечивает доступ к информации, записанной на диск, по имени файла и распределяет пространство на диске;

Ø хранит на диске информацию пользователях и служебную.

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

Типы файловых систем

Рядовому пользователю компьютерных электронных устройств редко, но приходится сталкиваться с таким понятием, как «выбор файловой системы». Чаще всего это происходит при необходимости форматирования внешних накопителей (флешек, microSD), установке операционных систем, восстановлении данных на проблемных носителях, в том числе жестких дисках. Пользователям Windows предлагается выбрать тип файловой системы, FAT32 или NTFS, и способ форматирования (быстрое/глубокое). Дополнительно можно установить размер кластера. При использовании ОС Linux и macOS названия файловых систем могут отличаться.

Возникает логичный вопрос: что такое файловая система и в чем ее предназначение? В данной статье дадим ответы на основные вопросы касательно наиболее распространенных ФС.

Что такое файловая система

Обычно вся информация записывается, хранится и обрабатывается на различных цифровых носителях в виде файлов. Далее, в зависимости от типа файла, кодируется в виде знакомых расширений – *exe, *doc, *pdf и т.д., происходит их открытие и обработка в соответствующем программном обеспечении. Мало кто задумывается, каким образом происходит хранение и обработка цифрового массива в целом на соответствующем носителе.

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

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

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

На физическом уровне драйверы ФС оптимизируют запись и считывание отдельных частей файлов для ускоренной обработки запросов, фрагментации и «склеивания» хранящейся в ячейках информации. Данный алгоритм получил распространение в большинстве популярных файловых систем на концептуальном уровне в виде иерархической структуры представления метаданных (B-trees). Технология снижает количество самых длительных дисковых операций – позиционирования головок при чтении произвольных блоков. Это позволяет не только ускорить обработку запросов, но и продлить срок службы HDD. В случае с твердотельными накопителями, где принцип записи, хранения и считывания информации отличается от применяемого в жестких дисках, ситуация с выбором оптимальной файловой системы имеет свои нюансы.

Основные функции файловых систем

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

Основными функциями файловой системы являются:

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

VDS Timeweb арендовать

Задачи файловой системы

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

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

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

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

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

Существует три основных вида операционных систем, используемых для управления любыми информационными устройствами: Windows компании Microsoft, macOS разработки Apple и операционные системы с открытым исходным кодом на базе Linux. Все они, для взаимодействия с физическими носителями, используют различные типы файловых систем, многие из которых дружат только со «своей» операционкой. В большинстве случаев они являются предустановленными, рядовые пользователи редко создают новые дисковые разделы и еще реже задумываются об их настройках.

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

На мобильных гаджетах с ОС Android чаще всего установлена ФС версии ext4 во внутренней памяти и FAT32 на карточках microSD. Владельцы продукции Apple зачастую вообще не имеют представления, какая файловая система используется на их устройствах – HFS+, HFSX, APFS, WTFS или другая. Для них существуют лишь красивые значки папок и файлов в графическом интерфейсе.

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

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

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

Исходный код файловой системы, получившей название FAT, был разработан по личной договоренности владельца Microsoft Билла Гейтса с первым наемным сотрудником компании Марком Макдональдом в 1977 году. Основной задачей FAT была работа с данными в операционной системе Microsoft 8080/Z80 на базе платформы MDOS/MIDAS. Файловая система FAT претерпела несколько модификаций – FAT12, FAT16 и, наконец, FAT32, которая используется сейчас в большинстве внешних накопителей. Основным отличием каждой версии является преодоление ограниченного объема доступной для хранения информации. В дальнейшем были разработаны еще две более совершенные системы обработки и хранения данных – NTFS и ReFS.

FAT (таблица распределения файлов)

Числа в FAT12, FAT16 и FAT32 обозначают количество бит, используемых для перечисления блока файловой системы. FAT32 является фактическим стандартом и устанавливается на большинстве видов сменных носителей по умолчанию. Одной из особенностей этой версии ФС является возможность применения не только на современных моделях компьютеров, но и в устаревших устройствах и консолях, снабженных разъемом USB.

Пространство FAT32 логически разделено на три сопредельные области:

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

К недостатком стандарта FAT32 относится ограничение размера файлов на диске до 4 Гб и всего раздела в пределах 8 Тб. По этой причине данная файловая система чаще всего используется в USB-накопителях и других внешних носителях информации. Для установки последней версии ОС Microsoft Windows 10 на внутреннем носителе потребуется более продвинутая файловая система.

С целью устранения ограничений, присущих FAT32, корпорация Microsoft разработала обновленную версию файловой системы exFAT (расширенная таблица размещения файлов). Новая ФС очень схожа со своим предшественником, но позволяет пользователям хранить файлы намного большего размера, чем четыре гигабайта. В exFAT значительно снижено число перезаписей секторов, ответственных за непосредственное хранение информации. Функция очень важна для твердотельных накопителей ввиду необратимого изнашивания ячеек после определенного количества операций записи. Продукт exFAT совместим с операционными системами Mac, Android и Windows. Для Linux понадобится вспомогательное программное обеспечение.

NTFS (файловая система новой технологии)

Стандарт NTFS разработан с целью устранения недостатков, присущих более ранним версиям ФС. Впервые он был реализован в Windows NT в 1995 году, и в настоящее время является основной файловой системой для Windows. Система NTFS расширила допустимый предел размера файлов до шестнадцати гигабайт, поддерживает разделы диска до 16 Эб (эксабайт, 10 18 байт ). Использование системы шифрования Encryption File System (метод «прозрачного шифрования») осуществляет разграничение доступа к данным для различных пользователей, предотвращает несанкционированный доступ к содержимому файла. Файловая система позволяет использовать расширенные имена файлов, включая поддержку многоязычности в стандарте юникода UTF, в том числе в формате кириллицы. Встроенное приложение проверки жесткого диска или внешнего накопителя на ошибки файловой системы chkdsk повышает надежность работы харда, но отрицательно влияет на производительность.

ReFS (Resilient File System)

Последняя разработка Microsoft, доступная для серверов Windows 8 и 10. Архитектура файловой системы в основном организована в виде B + -tree. Файловая система ReFS обладает высокой отказоустойчивостью благодаря реализации новых функций:

  • Copy-on-Write (CoW) – никакие метаданные не изменяются без копирования;
  • данные записываются на новое дисковое пространство, а не поверх существующих файлов;
  • при модификации метаданных новая копия хранится в свободном дисковом пространстве, затем система создает ссылку из старых метаданных на новую версию.

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

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

Для операционной системы macOS компания Apple использует собственные разработки файловых систем:

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

  1. HFS+, которая является усовершенствованной версией HFS, ранее применяемой на компьютерах Macintosh, и ее более соверешенный аналог APFS. Стандарт HFS+ используется во всех устройствах под управлением продуктов Apple, включая компьютеры Mac, iPod, а также Apple X Server.
  2. Кластерная файловая система Apple Xsan, созданная из файловых систем StorNext и CentraVision, используется в расширенных серверных продуктах. Эта файловая система хранит файлы и папки, информацию Finder о просмотре каталогов, положениях окна и т.д.

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

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

Файловая система Линукс

Основные файловые системы, используемые в дистрибутивах Linux:

Ext2, Ext3, Ext4 или Extended Filesystem – стандартная файловая система, первоначально разработанная еще для Minix. Содержит максимальное количество функций и является наиболее стабильной в связи с редкими изменениями кодовой базы. Начиная с ext3 в системе используется функция журналирования. Сегодня версия ext4 присутствует во всех дистрибутивах Linux.

JFS или Journaled File System разработана в IBM в качестве альтернативы для файловых систем ext. Сейчас она используется там, где необходима высокая стабильность и минимальное потребление ресурсов (в первую очередь в многопроцессорных компьютерах). В журнале хранятся только метаданные, что позволяет восстанавливать старые версии файлов после сбоев.

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

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

Btrfs или B-Tree File System легко администрируется, обладает высокой отказоустойчивостью и производительностью. Используется как файловая система по умолчанию в OpenSUSE и SUSE Linux.

Другие ФС, такие как NTFS, FAT, HFS, могут использоваться в Linux, но корневая файловая система на них не устанавливается, поскольку они для этого не предназначены.

Дополнительные файловые системы

В операционных системах семейства Unix BSD (созданы на базе Linux) и Sun Solaris чаще всего используются различные версии ФС UFS (Unix File System), известной также под названием FFS (Fast File System). В современных компьютерных технологиях данные файловые системы могут быть заменены на альтернативные: 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 именуется как «глобальная файловая система» для Linux;
  • JFS1 – оригинальный (устаревший) дизайн файловой системы IBM JFS, используемой в старых системах хранения AIX.

Практический пример использования файловых систем

Владельцы мобильных гаджетов для хранения большого объема информации используют дополнительные твердотельные накопители microSD (HC), по умолчанию отформатированные в стандарте FAT32. Это является основным препятствием для установки на них приложений и переноса данных из внутренней памяти. Чтобы решить эту проблему, необходимо создать на карточке раздел с ext3 или ext4. На него можно перенести все файловые атрибуты (включая владельца и права доступа), чтобы любое приложение могло работать так, словно запустилось из внутренней памяти.

Операционная система Windows не умеет делать на флешках больше одного раздела. С этой задачей легко справится Linux, который можно запустить, например, в виртуальной среде. Второй вариант - использование специальной утилиты для работы с логической разметкой, такой как MiniTool Partition Wizard Free . Обнаружив на карточке дополнительный первичный раздел с ext3/ext4, приложение Андроид Link2SD и аналогичные ему предложат куда больше вариантов.

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

Флешки и карты памяти быстро умирают как раз из-за того, что любое изменение в FAT32 вызывает перезапись одних и тех же секторов. Гораздо лучше использовать на флеш-картах NTFS с ее устойчивой к сбоям таблицей $MFT. Небольшие файлы могут храниться прямо в главной файловой таблице, а расширения и копии записываются в разные области флеш-памяти. Благодаря индексации на NTFS поиск выполняется быстрее. Аналогичных примеров оптимизации работы с различными накопителями за счет правильного использования возможностей файловых систем существует множество.

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

Читайте также: