Файловая система ReFS изнутри. Сравнение файловых систем ReFS (Resilient file system) и NTFS Файловая система exFAT

,

NTFS и FAT32 - не единственные файловые системы, которые способна видеть и читать Windows 10. Она также поддерживает работу с устаревшей FAT , расширенной exFAT , новой ReFS , виртуальной CDFS , а также частично с используемыми в Linux EXT2 и EXT3 . При работе с дисками, в том числе съёмными, у вас может возникнуть необходимость определить текущую файловую систему носителя или логического раздела. В Windows 10 сделать это можно разными способами.

Самый простой - это открыть свойства диска и посмотреть, что указано в параметре .

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

Нажатием Win + X откройте меню кнопки Пуск, запустите оснастку и посмотрите содержимое колонки .

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


list volume

Первая команда запускает утилиту, вторая выводит список всех логических разделов. Нужную вам информацию найдёте в колонке ФС . Альтернатива - консоль . Чтобы узнать тип файловой системы для всех дисков, запустите её от имени администратора и выполните команду get-volume . Искомые значения будут перечислены в колонке FileSystemType .

Увы, у всех описанных выше способов есть общий недостаток, а именно некорректное распознавание линуксовых файловых систем CDFS и EXT2/3/4 .

Так, в нашем примере определил CDFS как Unknown (неизвестный) и оснастка управления дисками определили CDFS правильно, но не смогли распознать EXT3 , определив её как RAW , то есть как отсутствие файловой системы. Правильные результаты штатные инструменты стали показывать только после установки - утилиты и драйвера для обеспечения доступа к носителям EXT2/3/4 из-под Windows.

И раз уж речь зашла об EXT2/3/4 , заодно стоит также упомянуть о файловых системах HFS или HFS+ , используемых в маках. Будучи подключёнными к компьютеру с Windows, они также не будут определяться и, чтобы иметь возможность с ними работать, необходимо установить драйвер Paragon HFS+ либо MacDrive .

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

20 лет спустя

Однако у всего есть предел, и у возможностей файловых систем - тоже. Сегодня возможности NTFS подошли к своим границам: проверка ёмких носителей данных занимает слишком много времени, «Журнал» тормозит доступ, а максимальный размер файлов уже практически достигнут. Понимая это, Microsoft реализовала в Windows 8 новую файловую систему - ReFS (Resilient File System - отказоустойчивая файловая система). Считается, что ReFS обеспечивает лучшую защиту данных на ёмких и быстрых жестких дисках. Наверняка у нее есть и свои недостатки, но до начала по-настоящему массового использования в Windows 8 говорить о них трудно.

Так что пока попробуем разобраться во внутреннем устройстве и преимуществах ReFS.

Изначально ReFS была известна под кодовым названием «Protogon». Впервые о ней широкой публике примерно год назад рассказал Стивен Синофски - президент подразделения Windows в Microsoft, отвечающий за разработку и маркетинг Windows и Internet Explorer .

Рассказал такими словами:

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

В Windows 8, ReFS будет введена только как часть Windows Server 8, такой же подход мы использовали для внедрения всех предыдущих файловых систем. Конечно же, на прикладном уровне клиентам будет предоставляться доступ к данным ReFS такой же, как к данным NTFS. Нельзя забывать о том, что NTFS все еще является ведущей технологией в индустрии среди файловых систем для ПК».

Действительно, впервые ReFS мы увидели в серверной ОС Windows Server 8. Новая файловая система разработана все же не с нуля. Например для открытия, закрытия, чтения и записи файлов ReFS использует те же интерфейсы доступа API, что и NTFS. Также из NTFS перекочевали многие хорошо знакомые возможности - например, шифрование диска Bitlocker и символьные ссылки для библиотек. Зато исчезло, например, сжатие данных и ряд прочих функций.

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

Архитектура ReFS

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

Наряду с реальной 64-битной нумерацией всех элементов системы это исключает появление «узких мест» при дальнейшем ее масштабировании

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

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

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

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

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

Размер метаданных пустой файловой системы составляет порядка 0.1% от размера самой файловой системы (т.е. около 2 Гб на том 2 Тб). Некоторые основные метаданные дублируются для большей устойчивости от сбоев

Вариант ReFS, который мы увидели в Windows Server 8 Beta , имеет поддержку кластеров данных размером только 64 Кб и кластеров метаданных размером 16 Кб. Пока параметр «Размер кластера» при создании тома ReFS игнорируется и всегда принимается умалчиваемым. При форматировании файловой системы единственным доступным вариантом для выбора размера кластера также является 64 Кб.

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

Защищенность ReFS

С точки зрения архитектуры файловой системы ReFS имеет все требуемые инструменты для безопасного восстановления файлов даже после серьезного сбоя оборудования. Главный минус системы журналов в файловой системе NTFS и ей подобных - то, что обновление диска может повредить записанные ранее метаданные при сбое питания во время записи - этот эффект получил уже устойчивое название: т.н. «оборванная запись ».

Для предотвращения оборванных записей , разработчики из Microsoft избрали новый подход, при котором части структур метаданных содержат собственные идентификаторы, что позволяет проверить принадлежность структур; ссылки на метаданные содержат 64-бит контрольные суммы блоков, на которые производится ссылка.

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

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

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

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


Еще одна интересная тема в вопросе безопасности ReFS - взаимодействие со Storage Spaces . ReFS и Storage Spaces разработаны так, чтобы взаимодополнять друг друга как два компонента единой системы хранения данных. Помимо улучшения производительности Storage Spaces защищают данные от частичных и полных сбоев диска за счет хранения копий на нескольких дисках. Во время сбоев при чтении Storage Spaces могут считывать копии, а при сбоях записи (даже при полной потере данных носителя при чтении/записи) возможно «прозрачно» перераспределять данные. Как показывает практика, чаще всего подобный сбой не имеет отношения к носителю - он происходит из-за повреждения данных, либо из-за потери данных или сохранения их не в том месте.

Как раз эти виды сбоев ReFS может обнаружить, используя контрольные суммы. Выявив сбой, ReFS связывается с Storage Spaces для того, чтобы считать все возможные копии данных, и выбирает нужную копию, основываясь на проверке контрольных сумм. После этого система дает Storage Spaces команду на восстановление поврежденных копий на основе верных копий. Все это происходит прозрачно с прикладной точки зрения.

Как указывается на сайте Microsoft, посвященном Windows Server 8 , контрольные суммы всегда включены для метаданных ReFS, и при условии, что том размещен на зеркальных Storage Spaces , включается также автоматическое исправление. Все целостные потоки защищены тем же способом. Это создает сквозное решение с высокой степенью целостности для пользователя, благодаря которому относительно ненадежное хранилище можно сделать весьма надежным.

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

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


Как ReFS действует в случае повреждения диска или сбоя хранения, думаю, понятно. Сложнее бывает выявить и преодолеть потери данных, связанные с «битовым распадом », когда необнаруженные вовремя повреждения редко читаемых частей диска начинают интенсивно расти. К тому времени, как такие повреждения будут считаны и обнаружены, они могут уже затронуть копии, либо данные могут быть утрачены из-за прочих сбоев.

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

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

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

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

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


ReFS на практике

Конечно, о практичности и удобстве (или обратных качествах) ReFS можно будет судить только после того, как компьютеры с Windows 8 получат широкое распространение и пройдет не менее полугода активной работы с ними. Пока же у потенциальных пользователей «восьмерки» больше вопросов, чем ответов на них.

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

В Microsoft говорят, что вероятнее всего, это произойдет уже с выходом первого пакета обновлений для Windows 8

Также в Microsoft утверждают, что протестировали ReFS:

«используя сложный обширный набор десятков тысяч тестов, которые создавались для NTFS в течение более чем двух десятилетий. Эти тесты воссоздают условия развертывания в усложненном виде, с которыми, как мы думаем, система может столкнуться, например, при сбое питания, при проблемах, часто связанных с масштабируемостью и производительностью. Следовательно, можно сказать, что система ReFS готова к тестовому развертыванию в управляемой среде».

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

«Мы не характеризуем ReFS для Windows 8 как бета-версию. Новая файловая система будет готова к выпуску, когда Windows 8 выйдет из стадии „бета“, потому что нет ничего важнее, чем надежность данных. Итак, в отличие от любого другого аспекта системы, здесь необходим консервативный подход к первоначальному использованию и тестированию».

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

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

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

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

И вот, в 2012 году разработчики Microsoft представили Resilient File System или сокращенно ReFS –восстанавливаемую файловую систему, позиционируемую в роли альтернативы NTFS, а в будущем, возможно, и ее замены. По сути, ReFS является продолжением развития NTFS, из коей было принято решение удалить все лишнее, так и не ставшее востребованным, а вместо него добавить новые фичи.

Новое в Resilient File System:

  • Архитектура с использованием функции (дисковые пространства)
  • Высокая отказоустойчивость. Ошибки файловой системы, которые в NTFS приводили к потере данных, в ReFS будут сведены к минимуму
  • Изоляция поврежденных участков. В случае повреждения областей файловой системы доступ к записанным данным можно будет получать из-под работающей Windows
  • Упреждающее исправление ошибок. Автоматическое сканирование томов на предмет повреждений и применение профилактических мер по восстановлению данных
  • Автоматическое восстановление вложенных папок и связанных с ними файлов при повреждении метаданных
  • Использование избыточной записи для повышения отказоустойчивости
  • Максимальный размер тома в ReFS может достигать 402 Эбайт против 18,4 Эбайт в NTFS
  • На отформатированный в ReFS можно записать файл размером 18,3 Эбайт
  • Количество файлов в одной папке – 18 трлн. против 4,3 млрд. в NTFS
  • Длина имени файла и пути к нему – 32767 против 255 в NTFS

Что будет удалено:

  • Поддержка компрессии данных
  • Шифрование данных с использованием технологии EFS
  • Расширенные атрибуты файлов
  • Жесткие ссылки
  • Дисковые квоты
  • Поддержка коротких имен и ID-объектов
  • Возможность изменения размера кластера (остается под вопросом)

Что будет унаследовано от NTFS:

  • Списки контроля доступа (ACL)
  • Создание снимков тома
  • Точки монтирования
  • Точки повторной обработки
  • Шифрование BitLocker
  • Создание и использование символьных ссылок
  • Запись всех происходящих в файловой системе изменений (журнал USN)

В настоящее время ReFS находится в стадии раннего тестирования, тем не менее, компьютерные гики могут оценить преимущества ReFS уже сейчас, причем на клиентской системе Windows 8.1 или 10. Для этого нужно будет выполнить следующий твик реестра:


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

Стоит ли ждать реализации ReFS в ближайшее время? C большей долей уверенности можно сказать, что нет. Если она получит практическое применение, то сначала на серверных системах, что также случится нескоро, а вот пользователям клиентских Windows придется подождать после этого еще как минимум лет пять. Достаточно вспомнить реализацию NTFS на клиентских системах, а тогда у Microsoft на это ушло семь лет. Ну а самое главное, что особой нужды в ReFS попросту нет. Вот когда появятся на десктопных компьютерах зеттабайтные диски, тогда, возможно, и настанет для ReFS звездный час, а нам пока что только остается запастись терпением и ждать.

Отличного Вам дня!

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

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

На сегодняшний день в мире существует огромное количество файловых систем, но среди них можно выделить основные, о которых вы возможно даже слышали. Речь идет о файловой системе exFAT и NTFS.

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

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

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

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

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

И эту файловую систему подарила нам компания Microsoft. NTFS и по сей день используется как современный аналог системы FAT 32.

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

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

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

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

Это была одна из первых очень удачных файловых систем, ей даже сейчас все еще пользуются. Но как вы уже узнали вы у нее было несколько неприятных ограничений: максимальный размер файла 4ГБ, логический диск может быть не больше 8ТБ, но различные программы да и сами Windows не могут создать том более 250ГБ, так же есть ограничения на количество файлов в разделе или одной папке.

Какая файловая система лучше exFAT, NTFS или FAT32?

Скажу сразу, что файловая система exFAT не имеет те улучшенные дополнения, которые присутствуют в NTFS. В NTFS отсутствует файловый поток передачи данных, благодаря которому увеличивается скорость обмена информацией. Но и у exFAT есть преимущества перед конкурентом. К ним относится использование меньшего объема служб памяти. Да и размерность хранения файлов больше - 4 Гб.

Что касается конкретного вопроса, какая из файловых систем лучше, то точного ответа нет, все зависит от таких факторов, как вид носителя, его объем и преимущества самого пользователя, конечно. Но, если вы хотите быть уверены, что файловая система не будет конфликтовать с вашей операционной системой, тогда рекомендуем использовать NTFS. В некоторых случаях например при создании загрузочных флешек оптимальнее будет выбрать систему FAT32 для большей совместимости с разными компьютерами, а также некоторые загрузчики. Подробнее о файловых системах можно узнать в википедии . Там например можно узнать о новой файловой системе WinFS которая уже разрабатывается и выйдет на замену NTFS. Всего хорошего и оставайтесь с нами!

Почему смартфон может не запускать программы с карты памяти? Чем 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 да да да да да да