Файловые системы поддерживаемые windows. Файловые системы Windows. Недостатки файловой системы HPFS

Файловые системы поддерживаемые windows. Файловые системы Windows. Недостатки файловой системы HPFS

Одной из компонент ОС является файловая система – основное хранилище системной и пользовательской информации. Все современные ОС работают с одной или несколькими файловыми системами, например, FAT (File Allocation Table), NTFS (NT File System), HPFS (High Performance File System), NFS (Network File System), AFS (Andrew File System), Internet File System.

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

В широком смысле понятие "файловая система" включает:

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

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

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

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

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

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

Отслеживает свободное пространство на носителе.

Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жестком диске или блоке флэш-памяти) он записан. Все, что знает программа – это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

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


3.1.5 Логическая структура диска

Для того чтобы компьютер мог хранить, читать и записывать информацию жесткий диск предварительно должен быть размечен. На нем с помощью соответствующих программ создаются разделы – это и называется "разбить жесткий диск". Без этой разметки на жесткий диск не удастся установить операционную систему (хотя Windows XP и 2000 могут устанавливаться на неразбитый диск, но они такую разметку проводят сами в процессе установки).

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

Кроме того, существуют и другие причины разбиения диска на разделы, например:

Возможность использования под управлением MS DOS дисков с емкостью большей, чем
32 Мб;

В случае повреждения диска, пропадает только та информация, которая находилась на этом диске;

Реорганизация и выгрузка диска маленького размера проще и быстрее, чем большого;

Каждому пользователю можно выделить свой логический диск.

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

В самом первом секторе жесткого диска (C=0, H=0, R=1) содержится главная загрузочная запись Master Boot Record . Эта запись занимает не весь сектор, а только его начальную часть. Главная загрузочная запись является программой – внесистемным загрузчиком.

В конце первого сектора жесткого диска располагается таблица разделов диска – Partition Table . Эта таблица содержит четыре строки, описывающих максимально четыре раздела. Каждая строка в таблице описывает один раздел:

1) активный раздел или нет;

2) номер сектора, соответствующего началу раздела;

3) номер сектора, соответствующего концу раздела;

4) размер раздела в секторах;

5) код операционной системы, т.е. какой ОС принадлежит данный раздел.

Раздел называется активным, если он содержит программу загрузки операционной системы. Первым байтом в элементе раздела идет флаг активности раздела (0 – не активен, 128 (80H) – активен). Он служит для определения, является ли раздел системным (загрузочным), и для необходимости производить загрузку операционной системы с него при старте компьютера. Активным может быть только один раздел. Небольшие программы, называемые менеджерами загрузки (Boot Manager), могут располагаться в первых секторах диска. Они интерактивно запрашивают пользователя, с какого раздела производить загрузку и соответственно корректируют флаги активности разделов. Поскольку в Partition Table четыре строки, то на диске может быть до четырех различных ОС, следовательно, диск может содержать несколько первичных разделов, принадлежащих разным операционным системам.

Пример логической структуры жесткого диска, состоящего из трех разделов, два из которых принадлежат DOS, а один принадлежит UNIX, приведен на рисунке 3.2а.

Каждый активный раздел имеет свою загрузочную запись – программу, которая осуществляет загрузку данной ОС.

На практике диск разбивается чаще всего на два раздела. Размеры разделов, объявление их активными или нет, устанавливаются пользователем в процессе подготовки жесткого диска к работе. Делается это с помощью специальных программ. В DOS эта программа называется FDISK, в версиях Windows-XX – Diskadministrator.

В DOS первичный раздел – Primary Partition , это тот раздел, который содержит загрузчик операционной системы и саму ОС. Таким образом, первичный раздел является активным разделом, используется как логический диск с именем C:.

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

Расширенный раздел Extended Partition может разбиваться на несколько логических дисков с именами от D: до Z:.

На рисунке 3.2б представлена логическая структура жесткого диска, в котором всего два раздела и четыре логических диска.

Вы знаете, что Windows Phone использует NTFS? Почему большинство карт памяти и почти все USB-накопители по-прежнему используют старый-добрый FAT? Почему вы можете хранить полноразмерные HD-фильмы на некоторых флеш-накопителях и не можете на других? Почему некоторые устройства поддерживают только карты памяти SDHC до 32 ГБ, и что можно сделать, чтобы заставить их использовать 64 ГБ SDXC? Эти и многие другие вопросы связаны с типом файловой системы, используемой конкретным устройством хранения. Но как это связано с Windows?

В начале истории персональных компьютеров (думаю, в эпоху текстовых DOS-боксов и дискет) единственной используемой файловой системой была FAT12. С появлением жестких дисков, способных хранить несколько мегабайт данных (да, именно мегабайт, а не гигабайт!) была разработана новая версия FAT под названием FAT16. Под эту файловую систему и разрабатывался Windows 95, получив лишь «апгрейд» в виде поддержки более длинных имен файлов. В Windows 98 Microsoft добавили поддержку еще одной новой версии FAT под названием FAT32 для поддержки больших жестких дисков (да, к тому времени мы уже начали измерять дисковое пространство в гигабайтах).

В параллельной вселенной Windows NT Microsoft все время использовала файловую систему новых технологий, или NTFS. Windows NT 4, Windows 2000, а затем Windows XP, Vista, Windows 7, 8, 8.1 и новые Windows 10 используют NTFS.

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

Итак, в настоящее время у нас есть три различных семейства файловых систем: древняя, но все же широко применяемая FAT32, новая NTFS и свежеразработанная, оптимизированная на основе Solid ExFAT. Какую из этих файловых систем использовать, и когда? И каковы различия между ними?

FAT32: Очевидный выбор

FAT32 по-прежнему остается единственной файловой системой, используемой в Windows 98 или Windows ME. FAT32 фактически является файловой системой выбора для карт памяти SD до 32ГБ включительно. Наконец, FAT32 часто используется для форматирования USB-накопителей, в том числе емкостью 64ГБ и выше.

Старичок FAT32… Его основные ограничения хорошо известны. FAT32 поддерживает работу с файлами размером не более 4 ГБ. Если кажется, что для одного файла это много, вспомните о том, что один видеоролик в формате HD занимает от 4,5 до 10 ГБ, и сразу станет понятно, насколько данное ограничение существенно в современных реалиях. Его другие ограничения включают в себя отсутствие надежной поддержки, абсолютное отсутствие контроля доступа, отсутствия шифрования, сжатия или отказоустойчивости.

Иначе говоря, это совершенно простая и легкая файловая система, которая подходит практически для любой портативной электроники с низкой производительностью, такой как цифровые камеры и видеокамеры, простые смартфоны, MP3-плееры и аналогичные устройства. Из-за его почтенного возраста и широкой популярности в Windows с 1997 года FAT32 поддерживается практически всей техникой, включая холодильник и кофеварку. Другими словами, если вы хотите носить с собой одно съемное запоминающее устройство и быть уверенным, что его можно использовать с любым подключаемым модулем, FAT32 – то, что вам нужно.

NTFS: системный диск

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

В NTFS есть все, чего не хватает FAT. Мощные параметры контроля доступа? Пожалуйста. Отказоустойчивость и ведение журнала? Получите. Мгновенное сжатие и шифрование отдельных файлов, папок и целых томов диска? Конечно. Альтернативные потоки данных, повышенные меры безопасности, резервное копирование самой файловой системы и важных системных файлов и многие другие функции… Начиная с его первоначального выпуска в 1994 году, NTFS получала все новые обновления, в том числе, повышающие ее совместимость. Ее великолепный дизайн и простая реализация по-прежнему не имеют аналогов среди других файловых систем даже сегодня. Она достаточно универсальна для использования даже на смартфонах начального уровня под управлением Windows Phone 8 и 8.1. Но, если это такая отличная файловая система, почему ее не используют все и везде?

Как вы могли ожидать, NTFS не лишена недостатков. Разработанная еще в 1994 году для серверных операций, эта файловая система всегда требовала большой вычислительной мощности для поддержания своих многочисленных структур. Ее системные записи быстро растут, занимают драгоценное пространство и добавляют дополнительную нагрузку на эти устройства хранения, использующие флэш-память NAND. Наконец, если использовать что-либо, кроме больших жестких дисков, ее накладные расходы окажутся слишком велики, поэтому всеобщее признание система пока так и не завоевала. И последнее, но не менее важное: NTFS запатентована Microsoft, которые не желают открывать лицензии на эту файловую систему конкурентам.

exFAT: лучшее, если поддерживается…

Чтобы преодолеть ограничения FAT32 и уменьшить дополнительную нагрузку, оказываемую NTFS на носители на основе NAND, Microsoft разработала еще одну файловую систему под названием Extended FAT или exFAT. Эта файловая система в значительной степени основана на той же концепции, что и оригинальный FAT, только теперь она является настоящей 64-битной файловой системой без ограничения размера файла, существующего в FAT32. Именно поэтому exFAT используется как стандарт для больших SD-карт (стандарт SDXC требует, чтобы все SD-карты размером 64 ГБ и более были отформатированы с помощью exFAT). Поэтому, если вы покупаете 64-гигабайтную карту microSDXC, она будет работать на основе exFAT … и по этой причине она может не распознаваться вашим смартфоном или планшетом.

Причина, по которой exFAT не заменила древний FAT32 повсюду – платное лицензирование. В отличие от FAT32, которая бесплатна для всех без роялти, с производителей, которые хотят использовать exFAT на своих устройствах Microsoft взимает плату за лицензирование. В результате создатели телефонов Android, низкоуровневых Android-планшетов и дешевых камеры предпочитают сэкономить несколько центов стоимости устройств (в пересчете на единицу выпущенной техники) на лицензировании, предпочитая исключить exFAT из списка поддерживаемых файловых систем. В результате, если вы вставляете новую 64-гигабайтную микро SD-карту в такое устройство, карта, скорее всего, не будет распознана.

Можете ли вы самолично преодолеть это ограничение? В большинстве случаев да, и довольно легко. Просто подключите свою SD-карту к ПК через устройство чтения карт и отформатируйте ее с помощью … вы догадались… FAT32! Таким образом, вы потеряете возможность хранить на ней файлы размером более 4 ГБ, но ваша карта памяти, скорее всего, будет распознана и будет бесперебойно работать на устройстве Android, которое по техническим характеристикам вроде как и не должно поддерживать SD-карты емкостью более 32 ГБ.

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

Однако минуточку… Windows Phone – это ОС Microsoft, так не будут ли устройства Windows Phone поддерживать exFAT по умолчанию? Так и есть! Windows Phone 8 и 8.1 действительно поставляются со встроенной поддержкой exFAT, бесплатной для производителей, которые хотят выпускать устройства для платформы Windows Phone. Microsoft предлагает бесплатную лицензию exFAT в рамках своего «пакета стимулирования», призванного побудить большее число производителей присоединиться к платформе Windows Phone.

Наконец, все или почти все планшеты с операционной системой Windows RT и полной версией Windows 8 или 8.1 поддерживают exFAT и распознают 64-ГБ и более крупные SD-карты без труда.

Восстановление файловых систем Windows

Практически каждый инструмент восстановления данных на базе Windows предлагает поддержку FAT32 и NTFS. Инструменты, поддерживающие exFAT, гораздо менее доступны из-за ограничений лицензирования Microsoft. Одним из инструментов поддержки всех трех файловых систем Windows является RS Partition Recovery .

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

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

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

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

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

  • FAT (File Allocation Table) - файловая система, разработанная для MS-DOS и являющаяся основной для Windows 3.x и 9x. Windows XP и Windows Server 2003 поддерживают три разновидности FAT: FAT12, FAT16 и FAT32. Первые две обеспечивают совместимость со старыми ОС Microsoft. Кроме того, FAT12 используется как формат хранения данных на гибких дисках. FAT 32 - модифицированная версия FAT, используемая в Windows 95 OSR2, Windows 98 и Windows Millennium.
  • NTFS (Windows NT file system) - файловая система, разработанная специально для Windows NT и унаследованная Windows 2000, Windows XP, Windows 2003.
    CDFS (Compact Disk File System) - файловая система компакт-дисков.
    UDF (Universal Disk Format) - универсальный формат дисков, используемый современными магнитооптическими накопителями и, прежде всего, технологией DVD.

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

Файловые системы FAT12 и FAT16.

Файловая система FAT (File Allocation Table) получила свое имя в соответствии с названием метода организации данных - таблицы распределения файлов. FAT (или FAT16) первоначально была ориентирована на небольшие диски и простые структуры каталога. Затем ее усовершенствовали для обеспечения работы с большими дисками и мощными персональными компьютерами.

Windows XP и Windows Server 2003 поддерживают файловую систему FAT по трем причинам:

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

В название каждой версии FAT входит число, которое указывает разрядность, применяемую для идентификации кластеров на диске. 12-разрядный идентификатор кластеров в FAT12 ограничивает размер дискового раздела 212 (4096) кластерами. В Windows используются кластеры размером от 512 байт до 8 Кб, так что размер тома FAT12 ограничен 32 Мб. Поэтому Windows использует FAT12 как формат 5,25- и 3,5-дюймовых дискет, способных хранить до 1,44 Мб данных.

FAT16 - за счет 16-разрядных идентификаторов кластеров - может адресовать до 216 (65 536) кластеров. В Windows размер кластера FAT16 варьируется от 512 байт до 64 Кб, поэтому размер тома FАТ16 ограничен 4 Гб. Размер кластеров, используемых Windows, зависит от размера тома.

Размеры кластеров в FAT16 по умолчанию (в Windows)

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

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

Модифицированная версия FAT - FAT32 - позволяет создавать разделы большие, чем в FAT16, и применять кластеры меньшего размера, что приводит к более эффективному использованию дискового пространства. Впервые FAT32 появилась в Windows 95 OSR2. Она также поддерживается в Windows 98 и Windows Millennium.

FAT32 использует 32-разрядные идентификаторы кластеров, но при этом резервирует старшие 4 бита, так что эффективный размер идентификатора кластера составляет 28 бит. Поскольку максимальный размер кластеров FAT32 равен 32 Кб, теоретически FAT32 может работать с 8-терабайтными томами. Однако реализация FAT32 в Windows XP / Windows 2003 не позволяет создавать тома, превышающие 32 Гб, но ОС может задействовать существующие тома FAT32 любого размера.

Размер кластеров на томах FAT32 (по умолчанию)

Помимо большего предельного числа кластеров преимуществом FAT32 перед FAT12 и FAT16 является следующее:

  • место хранения корневого каталога FAT32 не ограничено предопределенной областью тома, поэтому его размер не ограничен;
  • для большей надежности FAT32 хранит вторую копию загрузочного сектора.

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

Файловая система NTFS - наиболее надежная система, специально разработанная для Windows NT и усовершенствованная в более поздних версиях Windows.

NTFS использует 64-разрядные индексы кластеров. Это позволяет NTFS адресовать тома размером до 1б экзабайт (1б миллиардов Гб). Однако Windows XP ограничивает размеры томов NTFS до значений, при которых возможна адресация 32-разрядными кластерами, т. е. до 128 Тб (с использованием кластеров по 64 Кб).

Размер кластеров на томах NTFS:

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

NTFS поддерживает ряд дополнительных, по сравнению с FAT возможностей. Основные из них перечислены ниже:

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

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

Основная задача файловой системы - обеспечение взаимодействия программ и физических устройств ввода/вывода (различных накопителей). Она также определяет структуру хранения файлов и каталогов на диске, правила задания имен файлов, допустимые атрибуты файлов, права доступа и др.

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

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

Имя файла - это символьная строка, правила построения которой зависят от конкретной файловой системы. Максимальная длина имени файла в Windows составляет 255 символов. Имена могут содержать любые символы, включая пробелы, кроме следующих: прямой и обратный слэш (\ и /), двоеточие (:), звездочка (*), знак вопроса (?), двойная кавычка ("), знаков меньше и больше (< и >), знака «трубопровода» (|). Система сохраняет использованные в длинных именах строчные буквы.

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

Файл может иметь следующие атрибуты:

R (Read-Only) - «только для чтения». При попытке модифицировать или удалить файл с этим атрибутом будет выдано соответствующее сообщение.

H (Hidden) - «скрытый файл». При просмотре содержимого папки (без специальных установок или ключа) сведения о файлах с таким атрибутом не выдаются.

A (Archive) - «неархивированный файл». Этот атрибут устанавливается при создании каждого файла и снимается средствами архивации и резервирования файлов.

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

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

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

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

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

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

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

Каждый диск на компьютере имеет уникальное имя. Диски именуются буквами латинского алфавита. Обычно накопителю на гибком магнитном диске (НГМД) присваивается имя А:, а винчестеру (НЖМД) - С:.

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

Windows XP позволяет форматировать жесткий диск в файловой системе FAT или NTFS.

Система FAT (File Allocation Table) - представляет собой таблицу размещения файлов MS-DOS и Windows 9x и Me, поэтому понимается этими ОС. Но она имеет низкую отказоустойчивость, и при аварийном отключении питания велика вероятность потери данных.

Система NTFS (New Technology File System) - была разработана Microsoft специально для Windows NT. Она гарантирует сохранность данных в случае копирования даже при программно-аппаратном сбое или отключении электропитания, превосходит FAT по эффективности использования ресурсов (например, работает с файлами размером более 4 Гб), предоставляет возможность создавать «динамические» жесткие диски, объединяющие несколько папок, предоставляет средства для разграничения доступа и защиты информации и др.

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

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

Имена файлов и их атрибуты хранятся в каталоге. Если в каталоге хранится имя файла, то говорят, что этот файл находится в данном каталоге. Обращение к каталогу, если он не корневой, осуществляется по имени 3 .

На каждом диске может быть несколько каталогов. В каждом каталоге могут присутствовать файлы и другие каталоги. В зависимости от файловой системы структура каталогов может быть древовидной, когда каталог может входить только в один каталог более высокого уровня (рис. 3.2, а), и сетевой, когда каталог может входить в различные каталоги (рис. 3.2,6). Сетевая структура реализована в Unix, древовидная - в ОС семейства Windows.

Рис. 3.2. Структура каталога: а - древовидная; б - сетевая

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

Почему смартфон может не запускать программы с карты памяти? Чем ext4 принципиально отличается от ext3? Почему флешка проживет дольше, если отформатировать ее в NTFS, а не в FAT? В чем главная проблема F2FS? Ответы кроются в особенностях строения файловых систем. О них мы и поговорим.

Введение

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

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

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

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

Черный ящик

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

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

На мобильных гаджетах с Android чаще всего встречается ext4 во внутренней памяти и FAT32 на карточках microSD. Яблочникам же и вовсе без разницы, что у них за файловая система: HFS+, HFSX, APFS, WTFS... для них существуют только красивые значки папок и файлов, нарисованные лучшими дизайнерами. Богаче всего выбор у линуксоидов, но прикрутить поддержку неродных для операционки файловых систем можно и в Windows, и в macOS - об этом чуть позже.

Общие корни

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

Как и любая иерархическая система, B-дерево начинается с корневой записи и далее ветвится вплоть до конечных элементов - отдельных записей о файлах и их атрибутах, или «листьев». Основной смысл создания такой логической структуры был в том, чтобы ускорить поиск объектов файловой системы на больших динамических массивах - вроде жестких дисков объемом в несколько терабайт или еще более внушительных RAID-массивов.

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

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

Концепция B-деревьев была сформулирована еще в семидесятых годах и с тех пор подвергалась различным улучшениям. В том или ином виде она реализована в NTFS, BFS, XFS, JFS, ReiserFS и множестве СУБД. Все они - родственники с точки зрения базовых принципов организации данных. Отличия касаются деталей, зачастую довольно важных. Недостаток у родственных файловых систем тоже общий: все они создавались для работы именно с дисками еще до появления SSD.

Флеш-память как двигатель прогресса

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

Связано это ограничение с тем, что в NAND-памяти все ячейки объединены в блоки, каждый из которых имеет только одно общее подключение к управляющей шине. Не будем вдаваться в детали страничной организации и расписывать полную иерархию. Важен сам принцип групповых операций с ячейками и тот факт, что размеры блоков флеш-памяти обычно больше, чем блоки, адресуемые в любой файловой системе. Поэтому все адреса и команды для накопителей с NAND flash надо транслировать через слой абстрагирования FTL (Flash Translation Layer).

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

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

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

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

Модули с одноуровневыми ячейками SLC имели заявленный ресурс в 100 тысяч циклов перезаписи и даже больше. Многие из них до сих пор работают в старых флешках и карточках CF. У MLC корпоративного класса (eMLC) ресурс заявлялся в пределах от 10 до 20 тысяч, в то время как у обычной MLC потребительского уровня он оценивается в 3–5 тысяч. Память этого типа активно теснит еще более дешевая TLC, у которой ресурс едва дотягивает до тысячи циклов. Удерживать срок жизни флеш-памяти на приемлемом уровне приходится за счет программных ухищрений, и новые файловые системы становятся одним из них.

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

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

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

От JFFS к F2FS

Одной из первых попыток написать файловую систему, которая бы учитывала принципы организации флеш-памяти, была JFFS - Journaling Flash File System. Изначально эта разработка шведской фирмы Axis Communications была ориентирована на повышение эффективности памяти сетевых устройств, которые Axis выпускала в девяностых. Первая версия JFFS поддерживала только NOR-память, но уже во второй версии подружилась с NAND.

Сейчас JFFS2 имеет ограниченное применение. В основном она все так же используется в дистрибутивах Linux для встраиваемых систем. Ее можно найти в маршрутизаторах, IP-камерах, NAS и прочих завсегдатаях интернета вещей. В общем, везде, где требуется небольшой объем надежной памяти.

Дальнейшей попыткой развития JFFS2 стала LogFS, у которой индексные дескрипторы хранились в отдельном файле. Авторы этой идеи - сотрудник немецкого подразделения IBM Йорн Энгель и преподаватель Оснабрюкского университета Роберт Мертенс. Исходный код LogFS выложен на GitHub . Судя по тому, что последнее изменение в нем было сделано четыре года назад, LogFS так и не обрела популярность.

Зато эти попытки подстегнули появление другой специализированной файловой системы - F2FS. Ее разработали в корпорации Samsung, на долю которой приходится немалая часть производимой в мире флеш-памяти. В Samsung делают чипы NAND Flash для собственных устройств и по заказу других компаний, а также разрабатывают SSD с принципиально новыми интерфейсами вместо унаследованных дисковых. Создание специализированной файловой системы с оптимизацией для флеш-памяти было с точки зрения Samsung давно назревшей необходимостью.

Четыре года назад, в 2012 году, в Samsung создали F2FS (Flash Friendly File System). Ее идея хороша, но реализация оказалась сыроватой. Ключевая задача при создании F2FS была проста: снизить число операций перезаписи ячеек и распределить нагрузку на них максимально равномерно. Для этого требуется выполнять операции с несколькими ячейками в пределах того же блока одновременно, а не насиловать их по одной. Значит, нужна не мгновенная перезапись имеющихся блоков по первому запросу ОС, а кеширование команд и данных, дозапись новых блоков на свободное место и отложенное стирание ячеек.

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

Экстенты и битовые карты

Пока F2FS воспринимается как экзотика для гиков. Даже в собственных смартфонах Samsung все еще применяется ext4. Многие считают ее дальнейшим развитием ext3, но это не совсем так. Речь идет скорее о революции, чем о преодолении барьера в 2 Тбайт на файл и простом увеличении других количественных показателей.

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

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

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


Диета с ограничением FAT

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

Загадка

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

Правильно, это история про файловую систему FAT. Требования совместимости обеспечили ей дурную наследственность. На дискетах она была 12-разрядной, на жестких дисках - поначалу 16-битной, а до наших дней дошла уже как 32-разрядная. В каждой следующей версии увеличивалось число адресуемых блоков, но в самой сути ничего не менялось.

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

Зачем же FAT32 нужна в наши дни? Все так же исключительно для обеспечения совместимости. Производители справедливо полагают, что раздел с FAT32 сможет прочитать любая ОС. Поэтому именно его они создают на внешних жестких дисках, USB Flash и картах памяти.

Как освободить флеш-память смартфона

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

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


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

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

INFO

Для FAT32 и NTFS теоретические ограничения по уровню вложенности не указаны, но на практике они одинаковые: в каталоге первого уровня можно создать только 7707 подкаталогов. Любители поиграть в матрешки оценят.

Другая проблема, с которой сталкивается большинство пользователей, - на раздел с FAT32 невозможно записать файл больше 4 Гбайт. Причина заключается в том, что в FAT32 размер файла описывается 32 битами в таблице размещения файлов, а 2^32 (минус единица, если быть точным) как раз дают четыре гига. Получается, что на свежекупленную флешку нельзя записать ни фильм в нормальном качестве, ни образ DVD.

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

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

exFAT

В отличие от FAT12/16/32, exFAT разрабатывалась специально для USB Flash и карт памяти большого (≥ 32 Гбайт) объема. Extended FAT устраняет упомянутый выше недостаток FAT32 - перезаписывание одних и тех же секторов при любом изменении. Как у 64-разрядной системы, у нее нет практически значимых лимитов на размер одного файла. Теоретически он может иметь длину в 2^64 байт (16 Эбайт), а карточки такого объема появятся нескоро.

Еще одно принципиальное отличие exFAT - поддержка списков контроля доступа (ACL). Это уже не та простушка из девяностых, однако внедрению exFAT мешает закрытость формата. Поддержка exFAT полноценно и легально реализована только в Windows (начиная с XP SP2) и OS X (начиная с 10.6.5). В Linux и *BSD она поддерживается либо с ограничениями, либо не вполне законно. Microsoft требует лицензировать использование exFAT, и в этой области много правовых споров.

Btrfs

Еще один яркий представитель файловых систем на основе B-деревьев называется Btrfs. Эта ФС появилась в 2007 году и изначально создавалась в Oracle с прицелом на работу с SSD и RAID. Например, ее можно динамически масштабировать: создавать новые индексные дескрипторы прямо в работающей системе или разделять том на подтома без выделения им свободного места.

Реализованный в Btrfs механизм копирования при записи и полная интеграция с модулем ядра Device mapper позволяют делать практически мгновенные снапшоты через виртуальные блочные устройства. Предварительное сжатие данных (zlib или lzo) и дедупликация ускоряют основные операции, заодно продлевая время жизни флеш-памяти. Особенно это заметно при работе с базами данных (достигается сжатие в 2–4 раза) и мелкими файлами (они записываются упорядоченно крупными блоками и могут храниться непосредственно в «листьях»).

Также Btrfs поддерживает режим полного журналирования (данных и метаданных), проверку тома без размонтирования и множество других современных фич. Код Btrfs опубликован под лицензией GPL. Эта файловая система поддерживается в Linux как стабильная начиная с версии ядра 4.3.1.

Бортовые журналы

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

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

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

Журналирование в NTFS похоже на второй режим ведения лога в ext3. В журнал записываются только изменения в метаданных, а сами данные в случае сбоя могут быть утеряны. Такой метод ведения журнала в NTFS задумывался не как способ достижения максимальной надежности, а лишь как компромисс между быстродействием и отказоустойчивостью. Именно поэтому люди, привыкшие к работе с полностью журналируемыми системами, считают NTFS псевдожурналируемой.

Реализованный в NTFS подход в чем-то даже лучше используемого по умолчанию в ext3. В NTFS дополнительно периодически создаются контрольные точки, которые гарантируют выполнение всех отложенных ранее дисковых операций. Контрольные точки не имеют ничего общего с точками восстановления в \System Volume Infromation\ . Это просто служебные записи в логе.

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

Подключаем сторонние ФС в Windows

Использование файловых систем лимитировано их поддержкой на уровне ОС. Например, Windows не понимает ext2/3/4 и HFS+, а использовать их порой надо. Сделать это можно, добавив соответствующий драйвер.

WARNING

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

Открытый драйвер для чтения и записи на разделы ext2/3 с частичной поддержкой ext4. В последней версии поддерживаются экстенты и разделы объемом до 16 Тбайт. Не поддерживаются LVM, списки контроля доступа и расширенные атрибуты.


Существует бесплатный плагин для Total Commander. Поддерживает чтение разделов ext2/3/4.


coLinux - открытый и бесплатный порт ядра Linux. Вместе с 32-битным драйвером он позволяет запускать Linux в среде Windows с 2000 по 7 без использования технологий виртуализации. Поддерживает только 32-битные версии. Разработка 64-битной модификации была отменена. сoLinux позволяет в том числе организовать из Windows доступ к разделам ext2/3/4. Поддержка проекта приостановлена в 2014 году.

Возможно, в Windows 10 уже есть встроенная поддержка характерных для Linux файловых систем, просто она скрыта. На эти мысли наводит драйвер уровня ядра Lxcore.sys и сервис LxssManager, который загружается как библиотека процессом Svchost.exe. Подробнее об этом смотри в докладе Алекса Ионеску «Ядро Линукс, скрытое внутри Windows 10», с которым он выступил на Black Hat 2016.


ExtFS for Windows - платный драйвер, выпускаемый компанией Paragon. Он работает в Windows с 7 по 10, поддерживает доступ к томам ext2/3/4 в режиме чтения и записи. Обеспечивает почти полную поддержку ext4 в Windows.

HFS+ for Windows 10 - еще один проприетарный драйвер производства Paragon Software. Несмотря на название, работает во всех версиях Windows начиная с XP. Предоставляет полный доступ к файловым системам HFS+/HFSX на дисках с любой разметкой (MBR/GPT).

WinBtrfs - ранняя разработка драйвера Btrfs для Windows. Уже в версии 0.6 поддерживает доступ к томам Btrfs как на чтение, так и на запись. Умеет обрабатывать жесткие и символьные ссылки, поддерживает альтернативные потоки данных, ACL, два вида компрессии и режим асинхронного чтения/записи. Пока WinBtrfs не умеет использовать mkfs.btrfs, btrfs-balance и другие утилиты для обслуживания этой файловой системы.

Возможности и ограничения файловых систем: сводная таблица

Фай-ло-вая сис-те-ма Мак-си-маль-ный раз-мер тома Пре-дель-ный раз-мер одного файла Дли-на собст-вен-ного имени файла Дли-на пол-но-го имени файла (вклю-чая путь от корня) Пре-дель-ное число файлов и/или ката-ло-гов Точ-ность ука-за-ния даты файла/ката-ло-га Права дос-ту-па Жёсткие ссылки Сим-воль-ные ссылки Мгно-вен-ные снимки (snap-shots) Сжа-тие дан-ных в фоне Шиф-ро-ва-ние дан-ных в фоне Деду-пли-ка-ция дан-ных
FAT16 2 ГБ секторами по 512 байт или 4 ГБ кластерами по 64 КБ 2 ГБ 255 байт с LFN - - - - - - - - - -
FAT32 8 ТБ секторами по 2 КБ 4 ГБ (2^32 - 1 байт) 255 байт с LFN до 32 подкаталогов с CDS 65460 10 мс (создание) / 2 с (изменение) нет нет нет нет нет нет нет
exFAT ≈ 128 ПБ (2^32-1 кластеров по 2^25-1 байт) теоретически / 512 ТБ из-за сторонних ограничений 16 ЭБ (2^64 - 1 байт) 2796202 в каталоге 10 мс ACL нет нет нет нет нет нет
NTFS 256 ТБ кластерами по 64 КБ или 16 ТБ кластерами по 4 КБ 16 ТБ (Win 7) / 256 ТБ (Win 8) 255 символов Unicode (UTF-16) 32760 символов Unicode, но не более 255 символов в каждом элементе 2^32-1 100 нс ACL да да да да да да
HFS+ 8 ЭБ (2^63 байт) 8 ЭБ 255 символов Unicode (UTF-16) отдельно не ограничивается 2^32-1 1 с Unix, ACL да да нет да да нет
APFS 8 ЭБ (2^63 байт) 8 ЭБ 255 символов Unicode (UTF-16) отдельно не ограничивается 2^63 1 нс Unix, ACL да да да да да да
Ext3 32 ТБ (теоретически) / 16 ТБ кластерами по 4 КБ (из-за ограничений утилит e2fs programs) 2 ТБ (теоретически) / 16 ГБ у старых программ 255 символов Unicode (UTF-16) отдельно не ограничивается - 1 с Unix, ACL да да нет нет нет нет
Ext4 1 ЭБ (теоретически) / 16 ТБ кластерами по 4 КБ (из-за ограничений утилит e2fs programs) 16 ТБ 255 символов Unicode (UTF-16) отдельно не ограничивается 4 млрд. 1 нс POSIX да да нет нет да нет
F2FS 16 ТБ 3,94 ТБ 255 байт отдельно не ограничивается - 1 нс POSIX, ACL да да нет нет да нет
BTRFS 16 ЭБ (2^64 - 1 байт) 16 ЭБ 255 символов ASCII 2^17 байт - 1 нс POSIX, ACL да да да да да да


top