Файловая система. Обзор файловых систем Windows, Linux, носителей

Файловые систем Windows, Linux. Fat, Fat32, NTFS, Ext

Немножко теории

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

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

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

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

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

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

В Windows существуют три файловые системы FAT, FAT32, NTFS 4.0 или NTFS 5.0. Какую из них выбрать? Вопрос совсем не сложный. Все зависит от Ваших потребностей или потребностей двигаться в русле со временем.

Наиболее важные параметры при выборе файловой системы:

- нужно понять для чего будет использована ФС, будь то сервер или рабочая станция

- нужно учитывать количество дисков, требования к безопасности

FAT

Файловая система FAT может использоваться  с Windows NT/2000, Windows 9x, Windows for Workgroups, MS-DOS и OS/2.
Использование файловой системы FAT является одним из лучшим выбором для томов небольшого размера, и в этом случае накладные расходы минимальны. На томах, размер которых не превышает 500 Мбайт, она работает очень хорошо. Однако на больших томах (1 Гбайт и более) FAT становится крайне неэффективной.
Для томов, размер которых находится в пределах 400—500 Мбайт, FAT является предпочтительным выбором по сравнению с NTFS, поскольку лишена накладных расходов NTFS, связанных с дисковым пространством: при форматировании тома для использования файловой системы NTFS создается целый ряд системных файлов и файл журнала транзакций, которые потребляют некоторый процент дискового пространства (и для небольших томов этот процент значителен).

FAT32

32-разрядная файловая система FAT32 была введена с выпуском Windows 95 OSR2, и ее поддержка обеспечивается в Windows 98. Она обеспечивает оптимальный доступ к жестким дискам, повышая скорость и производительность всех операций ввода/вывода. FAT32 представляет собой усовершенствованную версию файловой системы FAT, предназначенную для использования на томах, объем которых превышает 2 Гбайт. Windows 2000 продолжает поддерживать файловую систему FAT, а также добавляет дополнительную поддержку для FAT32.

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

В дополнение к этому, FAT32 уменьшает размер кластера на больших дисках, снижая таким образом объем неиспользуемого пространства. Например, при использовании FAT16 на жестком диске размером 2 Гбайт, размер кластера будет составлять 32 Кбайт. Если этот же диск отформатировать с использованием FAT32, то размер кластера будет составлять только 4 Кбайт, Все утилиты Microsoft, предназначенные для работы с дисками (Formal. FDISK, Defrag и ScanDisk), были переработаны для обеспечения поддержки FAT32. Кроме того, Microsoft проводит большую работу по поддержке ведущих фирм-производителей драйверов устройств и утилит для работы с диском, чтобы помочь и в обеспечении поддержки FAT32 в их продуктах. Итак, файловая система FAT32 обеспечивает следующие преимущества по сравнению с прежними реализациями файловой системы FAT:

Обеспечивается поддержка дисков размером до 2 терабайт.
Более эффективно используется дисковое пространство. За счет того, что FAT32 использует более мелкие кластеры (так, для дисков размером до 8 Гбайт используются кластеры размером по 4 Кбайт), что позволяет повысить эффективность использования дискового пространства на 10—15% по сравнению с FAT, а также снизить требования к ресурсам, необходимым для работы компьютера.
Обеспечивается большая надежность. FAT32 обладает возможностью перемещения корневого каталога и использования резервной копии FAT вместо стандартной копии по умолчанию. В дополнение, загрузочная запись на дисках FAT32 была расширена, и включает в свой состав резервные копии наиболее важных структур данных. Это означает, что диски FAT32 менее чувствительны к одиночным сбоям, нежели тома FAT.
Более быстрая загрузка программ. Благодаря тому, что FAT32 имеет меньшие размеры кластеров, приложения и необходимые для их загрузки файлы могут быть оптимальным образом размещены на диске.

NTFS

Файловая система Windows NT (NTFS) обеспечивает такое сочетание производительности, надежности и эффективности, которое невозможно предоставить с помощью любой из реализаций FAT (как FAT16, так и FAT32). Основными целями разработки NTFS являлись обеспечение скоростного выполнения стандартных операций над файлами (включая чтение, запись, поиск) и предоставления дополнительных возможностей, включая восстановление поврежденной файловой системы на чрезвычайно больших дисках.

NTFS обладает характеристиками защищенности, поддерживая контроль доступа к данным и привилегии владельца, играющие исключительно важную роль в обеспечении целостности жизненно важных конфиденциальных данных. Папки и файлы NTFS могут иметь назначенные им права доступа вне зависимости от того, являются они общими или нет. NTFS ≈ единственная файловая система в Windows NT/2000, которая позволяет назначать права доступа к отдельным файлам. Однако, если файл будет скопирован из раздела или тома NTFS в раздел или на том FAT, все права доступа и другие уникальные атрибуты, присущие NTFS, будут утрачены.

Файловая система NTFS, как и FAT, в качестве фундаментальной единицы дискового пространства использует кластеры. В NTFS размер кластера по умолчанию (когда он не задается ни командой format, ни в оснастке Управление дисками) зависит от размера тома. Если для форматирования тома NTFS используется утилита командной строки FORMAT, то нужный размер кластера можно указать в качестве параметра этой команды. Размеры кластеров по умолчанию приведены в табл. 7.3.

Зависимость размера кластера по умолчанию от размера раздела для NTFS

ависимость размера кластера по умолчанию от размера раздела для NTFS

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

В Windows 2000 была введена новая версия NTFS ≈ NTFS 5.0. Новые структуры данных, появившиеся в составе этой реализации, позволяют использовать новые возможности Windows 2000, например, квоты на использование диска для каждого пользователя, шифрование файлов, отслеживание ссылок, точки перехода (junction points), встроенные наборы свойств (native property sets). Кроме того, добавлять дополнительное дисковое пространство к томам NTFS 5.0 можно без перезагрузки. Новые возможности NTFS 5.0 приведены в табл.

Дополнительные возможности, обеспечиваемые NTFS 4 и NTFS 5

Дополнительные возможности NTFS

Итог

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

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


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

В качестве «родных» для Linux (то есть тех, на которые он может быть установлен и с которых способен стартовать) рассматриваются следующие файловые системы: ext2fs, ext3fs, ReiserFS, XFS, JFS. Именно они обычно и предлагаются на выбор при установке подавляющего большинства дистрибутивов. Конечно, существуют и способы установки Linux на файловые системы FAT/VFAT/FAT32, но это — только для тех медам и мсье, которые понимают толк в извращениях, и о них я говорить не буду.

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

Так вот, под мелкими файлами понимаются файлы размером меньше логического блока файловой системы, который в Linux в большинстве случаев равен четырем килобайтам, хотя и может задаваться при форматировании в некоторых пределах (зависящих от конкретной FS). Таких мелких файлов в любой Unix-подобной ОС — бессчетное количество. Типичным примером являются файлы, составляющие дерево портов FreeBSD, портежей Gentoo и тому подобных портообразных систем.
В большинстве файловых систем для таких мини файлов существует как свой inode (информационный узел, содержащий мета информацию о файле), так и блок данных, что приводит как к расходу дискового пространства, так и снижению быстродействия файловых операций. В частности, именно в этом причина катастрофической задумчивости файловой системы FreeBSD (как старой, UFS, так и новой, UFS2) при работе с собственной же системой портов.

В файловой системе ReiserFS в таких случаях отдельные блоки под данные не выделяются — она умудряется запихать данные файла непосредственно в область его же inode. За счет этого и дисковое пространство экономится, и быстродействие возрастает — буквально в несколько раз по сравнению со всеми прочими FS.
Такое обращение с мелкими файлами ReiserFS послужило причиной возникновения легенды о ее ненадежности. Действительно, при крахе файловой системы (то есть разрушении служебных областей) данные, размещенные совместно со своими inodes, вместе с ними же и пропадают — причем безвозвратно. Тогда как в тех файловых системах, где inodes и блоки данных всегда разобщены пространственно, последние теоретически можно восстановить. Так, для ext2/ext3 даже существуют средства, позволяющие это сделать.

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

По суммарному быстродействию ReiserFS однозначно быстрее всех остальных журналируемых FS, а по некоторым показателям превосходит и ext2. С результатами сравнения скорости выполнения некоторых распространенных файловых файловых операций можно ознакомиться здесь.
А вот с совместимостью у ReiserFS дело обстоит несколько хуже. Доступ к ней из ОС семейства Windows, насколько мне известно, невозможен. В некоторых операционках семейства BSD (DragonFlyBSD, FreeBSD) реализована поддержка этой файловой системы, но в режиме только для чтения. Даже вероятность того, что произвольный Linux LiveCD прошлых лет не имеет поддержку ReiserFS, не нулевая.

И тут впору вспомнить об ext3fs. Преимущество ее вовсе не в большей надежности — это такая же легенда, как и неустойчивость ReiserFS. О случаях краха ext3fs я слышал не меньше, чем об аналогичных происшествиях с ReiserFS. Самому мне не удавалось порушить ни ту, ни другую. Разве что с ext2 получалось — но и то очень давно, во времена ядра 2.2 (или даже еще 2.0).

Нет, главное преимущество ext3fs в ее совместимости — она с гарантией будет прочитана любой Linux-системой. Например, при восстановлении с какого-нибудь древнего подручного LiveCD — ситуация, практически не столь уж невероятная, мне приходилось в нее попадать. Опять же, большинство BSD-систем легко понимают ext3fs (хотя и без журналирования). Для Windows также имеются, насколько я знаю, всякого рода драйверы и plug-ins к распространенным файловым менеджерам (типа Total Commander), обеспечивающие доступ к разделам с ext2fs/ext3fs.

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

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

Относительно XFS можно сказать следующее. В плане совместимости к ней относится все то же самое, что написано для ReiserFS — более того, до некоторого времени она не поддерживалась стандартным ядром Linux. С точки зрения быстродействия она XFS она также не блещет, выступая суммарно примерно на одном уровне с ext3fs. А на операции удаления файлов вообще демонстрирует удручающую медлительность.
По моим наблюдениям, использование XFS оправдывает себя при работе не просто с большими, а с очень большими файлами — каковыми являются фактически только образы DVD и видеофайлы.

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

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

Если предусматривается отдельный раздел под каталог /boot (а это рекомендуется при использовании загрузчика GRUB его разработчиками) — для него никакая другая файловая система, кроме ext2fs, не оправданна, какое-либо журналирование тут смысла не имеет. Наконец, если создается отдельный раздел под всякого рода мультимедийные материалы — тут можно подумать и о XFS.

Файловые системы носителей данных

  • Файловые системы
    • ISO 9660
      • Joliet расширение файловой системы ISO 9660.
      • Rock Ridge (RRIP, IEEE P1282) — расширение файловой системы ISO 9660, разработанное для хранения файловых атрибутов, используемых в операционных системах POSIX
        • Amiga Rock Ridge Extensions
      • El Torito
      • Apple ISO9660 Extensions
        • HFS, HFS+
    • Universal Disk Format cпецификация формата файловой системы, независимой от операционной системы для хранения файлов на оптических носителях. UDF является реализацией стандарта ISO/IEC 13346
      • Mount Rainier