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

Файловая системаФайловая система (сокр. ФС или FS от англ. "file system") – стандартизированный принцип хранения данных на жёстком диске или ином носителе, определяющий методы доступа к ним. По сути, файловая система отвечает за то, как будет распределяться информация на запоминающем устройстве и какими способами будет группироваться в физическом плане (например, в последовательных кластерах или в произвольных).

Для взаимодействия с определённой файловой системой носителя информации на компьютере (или ином устройстве) должен присутствовать специальный программный механизм (API), который обеспечивает поддержку ФС. Если прямой поддержки в API операционной системы не заложено, иногда применяется программная эмуляция некой временной переходной буферной зоны, которую называют виртуальной файловой системой. Она позволяет считать данные и отобразить их в доступной ОС форме файловой структуры.

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

FAT32, NTFS и другие

Файловая система FAT32, NTFS и другие
Язык:Русский
Формат:
Обновлено:2018-07-08
Автор:





FAT32, NTFS и другие

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

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

Как же компьютер "понимает", где ему, например, искать наш текстовый документ, который лежит, скажем, на Рабочем столе? За это, оказывается, отвечает файловая система жёсткого диска. И сегодня мы с Вами узнаем, какие бывают файловые системы и каковы их особенности.

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

Чтобы понять, что такое файловая система, лучше всего воспользоваться методом аналогий. Представим, что жёсткий диск – это некий ящик, в котором хранятся разноцветные кубики. Эти кубики – части разных файлов, хранящихся в ограниченных по размеру ячейках, называемых кластерами. Они могут быть просто навалены кучей или иметь определённый порядок размещения. Так вот, если эти условные кубики хранятся не хаотичной грудой, а в соответствии с какой-то логикой, мы и можем говорить о наличии некоего аналога файловой системы.

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

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

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

В первом случае все файлы отображаются в виде единого плоского списка, а во втором – в виде иерархического. Уровень вложений при этом, как правило, неограничен, а ветвление идёт либо только от одного ("root" в UNIX), либо от нескольких корневых каталогов (логические диски в Windows):

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

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

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

Гораздо же более часто журналируются только логические операции и (опционально) состояние кластеров файловой системы. То есть, в журнал записывается только то, что, скажем, файл с именем "file.txt" размером 52 КБ был записан в такие-то кластеры. Содержимое же самого файла в логе никак не значится. Такой подход позволяет избежать дублирования данных, ускоряет процессы работы с файлами и уменьшает в разы размеры самого журнала. Единственный недостаток при таком способе журналирования – при сбое могут быть потеряны записываемые данные (поскольку их копии нет), но само состояние файловой системы останется работоспособным.


Форматирование

Поскольку мы говорим о файловых системах в контексте современных компьютеров с их жёсткими или SSD-дисками, то большее внимание мы уделим именно многоуровневым ФС с произвольным доступом к кластерам. Наиболее популярными в компьютерном мире сегодня являются: FAT32, NTFS, exFAT, ext3/ext4, ReiserFS и HFS+.

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

Метки файловых систем NTFS и FAT32 на жёстком диске

Для форматирования можно воспользоваться штатными средствами операционной системы (например, консольными командами Linux или контекстным меню диска в Windows), функциями, доступными на подготовительном этапе установки ОС, или же специальными программами. Единственное, что следует учесть при программном решении, так это то, что Ваша операционная система может не поддерживать выбранную Вами файловую систему без установки дополнительных драйверов (например, ext3/4 в Windows):

Форматирование диска в Windows

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

Осуществляется оно сейчас при помощи специального софта (HDD Low Level Format Tool для Windows) или команд (DD для Linux). При его применении все кластеры жёсткого диска перезаписываются нулями и полностью уничтожается любая разметка. После этого файловая система фактически исчезает и в Windows отображается как RAW. Чтобы получить доступ к диску после такого форматирования, нужно отформатировать его в одной из доступных традиционных файловых систем более высокого уровня.

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

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

Ну а теперь рассмотрим некоторые особенности самых распространённых файловых систем.

FAT32

Одна из самых старых файловых систем для дисков, которая ещё широко используется в наши дни – FAT32 (сокр. англ. "File Allocation Table" – "таблица размещения файлов"). В силу своей распространённости, она поддерживается максимальным числом всевозможного оборудования, начиная с автомагнитол, кончая мощными современными компьютерами. Большинство флеш-накопителей, продаваемых сегодня, тоже отформатированы в FAT32.

Впервые данная ФС появилась в Windows 95 OSR2 в 1996 году, став логическим развитием ещё более ранней FAT16 (1983 год). Одной из основных причин перехода на новую файловую систему стало появление ёмких (по тем временам) жёстких дисков объёмом более 2 ГиБ (гибибайт – более точный вариант гигабайта (109) – 230 байт) (максимально возможный размер раздела в FAT16). FAT32 позволила использовать до 268 435 445 кластеров максимум по 32 КБ, что эквивалентно 8 ТиБ на том. Однако, если размер кластера будет стандартным (512 Б), то максимальный размер тома будет лишь чуть более 127 ГБ.

Windows 95

Основой FAT32, как следует из её названия, является файловая таблица. Она хранит в себе записи об имеющихся файлах, а также о времени их создания и последнего доступа к ним. Журналирование отсутствует, поэтому процессы чтения/записи в этой файловой системе происходят быстрее, нежели, например, в NTFS, которая ведёт более полные логи. Именно по причине хорошего быстродействия FAT32 всё ещё широко используется в наши дни.

Главным же недостатком FAT32 на данный момент является ограничение на максимальный размер файла – 4 ГиБ. Файлы, превышающие данный порог, должны быть разбиты на части, что в свою очередь, затрудняет доступ к ним. Кроме того, FAT32 имеет ещё некоторые ограничения в среде Windows. Например, штатными средствами Вы не сможете создать разделы более 32 ГБ. Поэтому флешки на 64 ГБ и более придётся форматировать либо при помощи специального софта, либо на Linux.

Однако, и в этом случае, хоть доступ к носителю и сохранится, но он будет затруднён "тормозами" как при чтении, так и при записи данных. Поэтому при использовании накопителей объёмом более 32 ГБ лучше отформатировать их в иных файловых системах, вроде exFAT или NTFS.

NTFS

Если линейка Windows 95/98 продолжала традиции уже на тот момент устаревающей операционной системы DOS, то новая линейка NT изначально была направлена на инновации. Поэтому с появлением Windows NT 3.1 в 1993 году специально под неё была создана новая файловая система NTFS (сокр. англ. "New Technology File System" — "файловая система новой технологии").

Windows NT 3.1

Эта файловая система до сих пор является основной для всех современных версий Windows, поскольку обеспечивает неплохую скорость работы, поддерживает накопители объёмом до 16 ЭиБ (эксбибайт – 260) (при максимальном размере кластера в 64 КБ) без ограничений по размерам файлов и имеет в своём арсенале довольно неплохой функционал. Например, NTFS является журналируемой файловой системой, а также поддерживает распределение ролей пользователей для доступа к отдельным данным, чего не было в той же FAT32.

Как и в FAT32, основой NTFS является таблица, но она являет собой более совершенную базу данных и называется MFT (сокр. англ. "Master File Table" – "главная файловая таблица"). Строки в этой таблице соответствуют файлам, хранящимся на конкретном разделе, а столбцы содержат атрибуты этих файлов (дата создания, размер, права доступа и т.п.).

Кроме того, для повышения отказоустойчивости в NTFS ведётся журнал USN (сокр. англ. "Update Sequence Number" – досл. "номер порядка обновления"). В этот журнал, аналогично таблице FAT32, записываются данные об изменениях того или иного файла. Однако, если в таблице FAT32 записывалось только время последнего доступа к данным, что не давало никаких особых практических выгод, то в USN может сохранятся предыдущее состояние файловой системы, что позволяет восстанавливать его в случае сбоев.

Ещё одной особенностью NTFS является поддержка альтернативных потоков данных (англ. "Alternate Data Streams" – ADS). Изначально они были задуманы для разграничения выполнения различных процессов. Потом (в Windows 2000) использовались для хранения некоторых атрибутов файлов (имя автора, иконка и т.п.), аналогично тому, как это делалось в HFS от MacOS. В современных Windows альтернативные потоки могут хранить практически любую информацию. Этим даже пользуются некоторые вирусы для скрытия своего присутствия в системе.

Дело в том, что альтернативные потоки не пеленгуются Проводником Windows и, по сути, невидимы для пользователей и большинства программ. Однако, Вы можете их просматривать и даже пользоваться ими, например, для скрытия каких-либо данных при помощи специального ПО. Смотреть данные в альтернативных потоках удобно при помощи программы NTFS Stream Explorer, а использовать их для сокрытия файлов при помощи Xp-lore:

Программа Xp-lore

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

NTFS изначально была создана исключительно для Windows, однако, сегодня поддерживается большинством медиаплееров (флешки могут быть тоже отформатированы в ней), операционными системами Linux и MacOS (правда, с некоторыми ограничениями на запись). Стоит, однако, отметить слабую поддержку NTFS на популярных игровых консолях. Из них поддержка её есть только у Xbox One.

exFAT

С увеличением во второй половине 2000-х годов объёмов флеш-накопителей стало ясно, что повсеместно используемая файловая система FAT32 скоро исчерпает свой потенциал. Использовать журналируемую NTFS для флешек с их ограниченным количеством циклов перезаписи и более медленной работой оказалось не совсем целесообразно. Поэтому в 2006 году всё та же корпорация Microsoft выпустила в свет новую файловую систему exFAT (сокр. англ. "Extended FAT" – "расширенная FAT") в комплекте с операционной системой Windows Embedded CE 6.0:

Windows Embedded CE 6.0

Она стала логическим продолжением развития FAT32, поэтому иногда её называют также FAT64. Главным козырем новой файловой системы стало снятие ограничения на размеры файлов и увеличение теоретического предела для дискового раздела до 16 ЭиБ (как в NTFS). При этом, в силу отсутствия журналирования, exFAT сохранила высокую скорость доступа к данным и компактность.

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

В силу того, что exFAT – относительно новая ФС, имеются некоторые ограничения по её использованию. В Windows полная её поддержка появилась лишь в Vista SP1 (хотя есть обновление для Windows XP SP2 – KB955704). MacOS поддерживает exFAT с версии 10.6.5, а для Linux требуется устанавливать отдельный драйвер (в некоторых дистрибутивах он встроен, а в некоторых поддерживается только чтение).

ext2, ext3 и ext4

Если в среде Windows уже не первое десятилетие "правит бал" NTFS, то в лагере Linux традиционно царит очень большое разнообразие, в том числе и среди применяемых файловых систем. Правда, есть одна их линейка, которая используется большинством дистрибутивов по умолчанию. Это файловые системы семейства ext (англ. сокр. "Extended File System" – "расширенная файловая система"), которые с 1992 года изначально создавались именно под Linux.

ext в Linux 0.96c

Наибольшее распространение получила вторая версия ext2, которая, как и NTFS, появилась ещё в 1993 году. Правда, в отличии от NTFS, ext2 не является журналируемой файловой системой. Это одновременно и её плюс, и минус. Плюс в том, что она является одной из самых быстрых ФС на запись данных. Также отсутствие журналирования делает предпочтительным её использование на флеш-накопителях и SSD-дисках. Платой же за быстродействие является низкая отказоустойчивость.

С целью улучшить стабильность ext2 в 2001 году была разработана её улучшенная версия ext3. В ней появилось журналирование, которое может работать в трёх режимах: "writeback" (записываются только метаданные файловой системы), "ordered" (запись в журнал производится всегда ПЕРЕД изменением ФС) и "journal" (полный бэкап метаданных и самих изменяемых файлов).

В остальном особых новшеств не появилось. Да и скорость работы, по сравнению с предыдущей версией, существенно снизилась, поэтому уже в 2006 году появился прототип следующей стадии развития файловой системы ext4, окончательный релиз которой состоялся в 2008 году. Четвёртая расширенная файловая система сохранила журналирование, но существенно повысила скорость чтения данных, которая стала даже выше, чем в ext2!

Из других новшеств стоит отметить увеличение максимального объёма раздела диска до 1 ЭиБ (с 32 ТиБ в ext2 и ext3), увеличение максимального размера файла до 16 ТиБ (с 2 ТиБ в более ранних версиях) и появление механизма экстентов (от англ. "extent" – "пространство"). Последний позволяет обращаться не к одиночным блокам, как это реализовано в других ФС (и в ext3 в частности), а к объединённым пространствам диска из последовательно идущих кластеров, общим объёмом до 128 МБ, что существенно повышает производительность и уменьшает фрагментацию данных.

На сегодняшний день поддержка файловых систем семейства ext той или иной версии присутствует по умолчанию почти во всех Linux'ах. Из них, практически все системы 2010 года выпуска и старше поддерживают ext4. Для доступа к ext-разделам в Windows и MacOS требуется устанавливать специальное ПО и/или драйверы.

ReiserFS

Ещё одной молодой и перспективной файловой системой "родом" из мира Linux является ReiserFS. Стараниями команды американского разработчика Ганса Райзера она стала первой журналируемой ФС, которая была добавлена в ядро Linux версии 2.4.1 в 2001 году, как раз перед добавлением поддержки ext3.

Linux 2.4.1

Фактически, как и появившаяся вслед за ней ext3, ReiserFS дала возможность использовать в Linux полное или частичное журналирование. Однако, в отличие от ext3, имела больший допустимый размер файла (до 8 ТиБ против 2) и максимальную длину имени файла равную 255 символам, а не байтам (4032 байт).

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

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

Правда, несмотря на ряд нововведений, улучшений и исправлений, новая файловая система осталась уделом немногих энтузиастов. Дело в том, что в 2006 году Ганс Райзер совершил убийство собственной жены и был взят под стражу, а позднее и заключён в тюрьму. Соответственно, его компания Namesys, которая занималась разработкой Reiser4, была расформирована. С тех пор поддержку и доработку файловой системы осуществляет группа разработчиков под курированием русского разработчика Эдуарда Шишкина.

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

HFS

Говоря о файловых системах, характерных для различных операционок, нельзя не упомянуть о MacOS с её HFS (сокр. англ. "Hierarchical File System" – "иерархическая файловая система"). Первые версии данной системы появились ещё в 1985 году вместе с операционной системой Macintosh System 1.0:

Macintosh System 1.0

По современным меркам данная файловая система была весьма малоэффективной, поэтому в 1998 года вместе с MacOS 8.1 появилась её улучшенная версия под названием HFS+ или Mac OS Extended, которая поддерживается до сегодняшнего дня.

Как и предшественница, HFS+ делит диск на блоки по 512 КБ (по умолчанию), которые объединяет в кластеры, ответственные за хранение тех или иных файлов. Однако, новая ФС имеет 32-битную адресацию (вместо 16-битной). Это позволяет избежать ограничений на размер записываемого файла и обеспечивает поддержку максимального размера тома до 8 ЭиБ (а в последних ревизиях до 16 ЭиБ).

Из других преимуществ HFS+ нужно отметить журналирование (под него выделяется целый скрытый том под названием HFSJ), а также многопоточность. Причём, если в NTFS альтернативные потоки не имеют особо чёткой регламентации на типы хранимой информации, то в HFS+ конкретно выделяется два потока: поток данных (хранит основные данные файлов) и поток с ресурсами (хранит метаданные файлов).

HFS+ практически идеальна для традиционных HDD, однако, как и рассмотренная выше ReiserFS, имеет не самые эффективные алгоритмы борьбы с фрагментацией данных. Поэтому с распространением SSD-накопителей и внедрением их в технику Apple всё чаще на смену ей приходит файловая система, разработанная в 2016 году APFS (сокр. англ. "Apple File System" – "Файловая система Apple"), появившаяся в настольной macOS High Sierra (10.13) и мобильной iOS 10.3.

Во многом APFS сходна с exFAT в плане оптимизации процессов чтения/записи, однако, в отличие от неё, имеет журналирование, поддерживает распределение прав доступа к данным, имеет улучшенные алгоритмы шифрования и сжатия данных, а также может работать с томами размером аж до 9 ЙиБ (не смейтесь – "йобибайт") за счёт 64-битной адресации!

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

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

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

Характеристики / ФС FAT32 NTFS exFAT ext2 ext4 ReiserFS HFS+ APFS
Год внедрения 1996 1993 2008 1993 2006 2001 1998 2016
Сфера применения Windows, съёмные накопители, Linux Windows, съёмные накопители, Linux съёмные накопители, Windows Vista+, Linux Linux, съёмные накопители Linux Linux MacOS MacOS
Максимальный размер файла 4 ГиБ 16 ЭиБ 16 ЭиБ 2 ТиБ 16 ТиБ 8 ТиБ 16 ЭиБ 9 ЙиБ
Максимальный размер тома 8 ТиБ 16 ЭиБ 64 ЗиБ (зебибайт) 32 ТиБ 1 ЭиБ 16 ТиБ 16 ЭиБ 9 ЙиБ
Журналирование - + - - + + + +
Управление правами доступа - + - - + + + +

Выводы

Как видим, для каждой операционной системы существует своя оптимальная файловая система, которая позволяет наиболее эффективно работать с данными. Например, для Windows – это NTFS, для MacOS – HFS+ или APFS. Исключением из правила можно считать лишь многочисленные дистрибутивы Linux. Здесь имеется не один десяток файловых систем, каждая со своими преимуществами и недостатками.

Большинству же пользователей Windows стоит запомнить лишь три наиболее распространённые ФС: FAT32 – для небольших флешек и старого оборудования, NTFS – для большинства компьютеров и exFAT – для ёмких флеш-накопителей и внешних SSD-дисков (об актуальности форматирования системного диска в exFAT до сих пор спорят в виду отсутствия журналирования и большей подверженности сбоям).

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.







Полезный совет:



Система проверки ошибок от Mistakes.ru