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

В этой статье разберёмся какие возможности предоставляет ReFS и чем она лучше файловой системы NTFS . Как восстановить данные с дискового пространства ReFS. Новая файловая система ReFS от компании Microsoft была первоначально представлена в ОС Windows Server 2012. Она также включена в Windows 10, в составе инструмента Дисковое пространство . ReFS можно использовать для пула дисков. С выходом Windows Server 2016 файловая система была улучшена, вскоре она будет доступна в новой версии Windows 10.

Какие возможности предоставляет ReFS и чем она лучше текущей NTFS системы?

Содержание:

Что означает ReFS?

Сокращение от «Resilient File System» , ReFS – эта новая система, созданная на базе NTFS. На данном этапе ReFS не предлагает комплексную замену NTFS для использования на диске домашних пользователей. Файловая система имеет свои преимущества и недостатки.

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

ReFS защищает данные от повреждения

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

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

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

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

Во время изменения метаданных ReFS создает новую копию данных и связывает данные с файлом, только после записи метаданных на диск. Это исключает возможность повреждения данных. Эта функция называется копированием на запись, она присутствует и в других популярных ОС Linux системах: ZFS, BtrFS, а также файловой системе Apple APFS.

В ReFS удалены некоторые ограничения NTFS

ReFS более современна и поддерживает гораздо большие объемы и более длинные имена файлов чем NTFS. В долгосрочной перспективе это важные улучшения. В файловой системе NTFS имя файла ограничено 255 символами, в ReFS имя файла может содержать до 32768 символов. Windows 10 позволяет отключить ограничение на предел символов для файловых систем NTFS, но он всегда отключается на томах ReFS.

В ReFS больше не поддерживаются короткие имена файлов в формате DOS 8.3. На томе NTFS вы можете получить доступ к C:\Program Files\ в C:\PROGRA~1\ для обеспечения совместимости со старым программным обеспечением.

NTFS имеет теоретический максимальный объем в размере 16 эксабайт, а у ReFS теоретический максимальный объем – 262144 экзабайт. Хотя сейчас это не имеет большого значения, но компьютера постоянно развиваются.

Какая файловая система быстрее ReFS или NTFS?

ReFS разрабатывалась не для повышения производительности файловой системы по сравнению с NTFS. Microsoft сделала систему ReFS намного эффективнее в строго определённых случаях.

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

В Windows Server 2016 Microsoft улучшила ReFS, для обеспечения лучшей производительности функций виртуальной машины. Виртуальная машина Microsoft Hyper-V использует эти преимущества (теоретически, любая виртуальная машина может использовать преимущества ReFS).

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

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

ReFS также предлагает новую функцию «редкого VDL» , которая позволяет ReFS быстро записывать нули в большой файл. Это значительно ускоряет создание нового, пустого файла виртуального жесткого диска фиксированного размера (VHD). В NTFS эта операция может занять 10 минут, в ReFS – несколько секунд.

Почему ReFS не может заменить NTFS

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

Windows 10 не позволяет отформатировать раздел в ReFS, эта файловая система доступна только в рамках Дискового пространства. ReFS защищает данные используемые на пулах из нескольких жестких дисков от повреждения. В Windows Server 2016 вы можете форматировать тома с помощью ReFS вместо NTFS. Такой том можно использовать для хранения виртуальных машин, но операционная система по-прежнему может загружаться только с NTFS.


Hetman Partition Recovery позволяет проанализировать дисковое пространство под управлением файловой системой ReFS с помощью алгоритма сигнатурного анализа. Анализируя устройство сектор за сектором программа находит определенные последовательности байт и отображает их пользователю. Восстановление данных с дискового пространства ReFS не отличается от работы с файловой системой NTFS:

  1. Загрузите и установите программу;
  2. Проанализируйте физический диск, который входит в дисковое пространство;
  3. Выберите и сохраните файлы которые необходимо восстановить;
  4. Повторите пункты 2 и 3 для всех дисков входящих в дисковое пространство.

Будущее новой файловой системы довольно туманно. Microsoft может доработать ReFS для замены устаревшей NTFS во всех версиях Windows. На данный момент ReFS не может использоваться повсеместно и служит только для определенных задач.

Сначала в Windows Server, а теперь и в Windows 10 появилась современная файловая система REFS (Resilient File System), в которой вы можете отформатировать жесткие диски компьютера или созданные системными средствами дисковые пространства.

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

Помимо функций, связанных с поддержкой целостности данных на дисках, REFS имеет следующие основные отличия от файловой системы NTFS:

  • Обычно более высокая производительность, особенно в случае использования дисковых пространств.
  • Теоретический размер тома 262144 экзабайта (против 16 у NTFS).
  • Отсутствие ограничения пути к файлу в 255 символов (в REFS - 32768 символов).
  • В REFS не поддерживаются имена файлов DOS (т.е. получить доступ к папке C:\Program Files\ по пути C:\progra~1\ в ней не получится). В NTFS эта возможность сохранялась в целях совместимости со старым ПО.
  • В REFS не поддерживается сжатие, дополнительные атрибуты, шифрование средствами файловой системы (в NTFS такое есть, для REFS работает ).

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

Обратите внимание, что после форматирования диска в файловой системе REFS, часть места на нем сразу будет занято контрольными данными: например, для пустого диска 10 Гб это около 700 Мб.

Возможно, в будущем REFS может стать основной файловой системой в Windows, однако на данный момент этого не произошло. Официальная информация по файловой системе на сайте Майкрософт:

Не так давно вышла публичная бета-версия Microsoft Windows 8 Server с поддержкой анонсированной файловой системы ReFS (Resilient File System - отказоустойчивая файловая система), ранее известной под кодовым названием “Protogon”. Данная файловая система предлагается как альтернатива зарекомендовавшей себя годами файловой системе NTFS в сегменте систем хранения данных на базе продуктов Microsoft, с дальнейшей ее миграцией в область клиентских систем.

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

Windows Server 8 Beta

Вариант файловой системы, доступный в данной версии операционной системы, имеет поддержку кластеров данных размером только 64КБ и кластеров метаданных размером 16КБ. Пока не ясно, будет ли поддержка файловых систем ReFS с другим размером кластера: в настоящее время параметр «Размер кластера» при создании тома ReFS игнорируется и всегда принимается умалчиваемым. При форматировании ФС единственным доступным вариантом для выбора размера кластера является 64КБ. Он также является единственным упоминаемым в блогах разработчиков.

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

Архитектура файловой системы

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

Основными структурными элементами новой файловой системы являются B+-деревья. Все элементы структуры файловой системы представлены одноуровневыми (списками) или многоуровневыми B+-деревьями, что позволяет значительно масштабировать практически любой из элементов файловой системы. Наряду с реальной 64-битной нумерацией всех элементов системы это исключает появление “узких мест” при дальнейшем ее масштабировании.

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

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

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

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

На диске файлы располагаются в блоках размером 64КБ, хотя адресуются точно так же, как и блоки метаданных (кластерами размером 16КБ). «Резидентность» данных файла на ReFS не поддерживается, поэтому файл размером 1 байт на диске займет целый блок 64КБ, что ведет к значительной избыточности хранения на мелких файлах; с другой стороны это упрощает управление свободным пространством и выделение свободного места под новый файл осуществляется значительно быстрее.

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

Защищенность от сбоев

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

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

Любое изменение структуры метаданных осуществляется в два этапа: сначала создается новая (измененная) копия метаданных в свободном дисковом пространстве, потом, в случае успеха, атомарной операцией обновления производится перевод ссылки со старой (неизмененной) на новую (измененную) область метаданных. Такая стратегия (Copy-on-Write (CoW) -копирование-при-записи) позволяет обойтись без журналирования, сохраняя автоматически целостность данных.

Подтверждение таких изменений на диске может не осуществляться достаточно долго, позволяя объединить несколько изменений состояния ФС в одно.

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

Избыточность хранения данных

В данном случае речь идет о расходовании дискового пространства за счет схемы хранения данных. Для целей тестирования установленный Windows Server был скопирован на раздел ReFS размером 580ГБ. Размер метаданных на пустой ФС составлял около 0.73ГБ.

При копировании установленного Windows Server на раздел с ReFS избыточность хранения данных файлов выросла с 0.1% на NTFS почти до 30% на ReFS. При этом еще около 10% избыточности добавилось за счет метаданных. В итоге «пользовательские данные» размером 11ГБ (более 70 тыс. файлов) на NTFS с учетом метаданных заняли 11.3ГБ, тогда как на ReFS те же данные заняли 16.2ГБ; это означает, что избыточность хранения данных на ReFS составляет почти 50% для этого типа данных. При небольшом количестве файлов большого размера такого эффекта, естественно, не наблюдается.

Скорость работы

Ввиду того, что речь идет о Beta, замеров производительности ФС не проводилось. С точки же зрения архитектуры ФС можно сделать кое-какие выводы. При копировании более 70 тыс. файлов на ReFS, это создало B+-дерево «Каталога» размером в 4 уровня: «корень», промежуточный уровень 1, промежуточный уровень 2, «листья».

Таким образом, для поиска атрибутов папки (при условии кэширования корня дерева) требуется 3 чтения блоков по 16КБ. Для сравнения, на NTFS эта операция займет одно чтение размером 1-4КБ (при условии кэширования карты расположения $MFT).

Поиск атрибутов файла по папке и имени файла в папке (небольшая папка в несколько записей) на ReFS потребует те же 3 чтения. На NTFS же уже потребуется 2 чтения по 1КБ или 3-4 чтения (если запись о файле находится в нерезидентном атрибуте «индекс»). В паках большего размера количество чтений NTFS растет намного быстрее, чем количество чтений, требуемых для ReFS.

Точно так же дела обстоят и для содержимого файлов: там, где рост числа фрагментов файла на NTFS приводит к перебору длинных списков, разнесенных по разным фрагментам $MFT, на ReFS это осуществляется эффективным поиском по B+-дереву.

Выводы

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

СисДев Лабораториз будет следить за развитием данной файловой системы и планирует включение поддержки восстановления данных с этой файловой системы. Экспериментальная поддержка ReFS бета-версии Microsoft Windows 8 Server уже успешно реализована в продуктах UFS Explorer и доступна для закрытого бета-тестирования среди партнеров. Официальный релиз инструментов для восстановления удаленных файлов с ReFS, а также восстановления данных после повреждения файловой системы в результате сбоев оборудования, планируется чуть ранее или одновременно с выходом релиза Microsoft Windows 8 Server с поддержкой ReFS.

Версия от 16.03.2012.
По материалам СисДев Лабораториз

Перепечатка или цитирование разрешены при условии сохранения ссылки на перво

Знакомьтесь - новая файловая система ReFS (Resilient File System - отказоустойчивая файловая система).

В принципе не такая уж она и новая, Microsoft разрабатывала ReFS не с нуля, ранее известная под кодовым названием Protogon, которая разрабатывалась для Windows Server 8 теперь будет устанавливаться на клиентских машинах Windows 8.

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

Прошлая файловая система NTFS (New Technology File System) в версии 1.2 была представлена в далёком 1993 году как часть Windows NT 3.1, а к появлению Windows XP в 2001 году NTFS доросла до версии 3.1, и только тогда её начали ставить на клиентские машины.
Постепенно возможности NTFS подошли к своим границам: проверка носителей данных большой емкости занимает слишком много времени.
Журнал (файл регистрации) тормозит доступ, а максимальный размер файлов уже практически достигнут.

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

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

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

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

Передача данных из NTFS в ReFS

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

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

Сравниваем файловые системы NTFS И ReFS.

Переименовать файл


NTFS

1. NTFS записывает в Журнал, что имя файла должно быть изменено.
Там же NTFS регистрирует все действия.
2. Только после этого она на месте меняет имя файла.
Таким образом, старое имя переписывается новым.
3. В заключение в Журнале (файле регистрации файловой системы) появляется отметка об успешном завершении заданной операции.


ReFS

1 - Новое название записывается в свободное место.
При этом очень важно, что прежнее имя поначалу не стирается.
2 - Как только новое название записано, ReFS изменяет ссылку на поле имени.
Теперь в файловой системе она ведет не на старое имя, а на новое.

Переименование файла при отказе питания


ReFS

1. NTFS, как обычно, записывает запрос на изменение в Журнал.
2. После этого из-за отказа питания процесс переименования прерывается, и не остается записи ни о прежнем, ни о новом именах.
3. Происходит перезагрузка Windows.
4. Вслед за этим запускается программа для исправления ошибок - Chkdisk.
5. Только теперь с помощью Журнала при применении отката восстанавливается изначальное имя файла.


NTFS

1. На первом этапе ReFS записывает новое имя в другом месте файловой системы, однако в этот момент электропитание прекращается.
2. Отказ приводит к автоматической перезагрузке Windows.
3. После нее стартует программа Chkdisk. Она анализирует файловую систему на наличие ошибок и при необходимости исправляет их.
Между тем набор данных ReFS находится в стабильном состоянии. Прежнее имя файла снова становится действующим сразу после отказа питания.

Ключевые цели ReFS:

Сохранить максимальную совместимость с набором широко используемых фич NTFS, и в то же время избавиться от ненужных, которые только усложняют систему;
. Верификация и автоисправление данных;
. Максимальная масштабируемость;
. Невозможность полного отключения файловой системы за счёт изоляции сбойных участков;
. Гибкая архитектура с использованием функции Storage Spaces, которая задумана и реализована специально для ReFS.

Ключевые функции ReFS (некоторые доступны только со Storage Spaces):

Целостность метаданных с контрольными суммами;
. Integrity streams: метод записи данных на диск для дополнительной защиты данных при повреждении части диска;
. Транзакционная модель «allocate on write» (copy on write);
. Большие лимиты на размер разделов, файлов и директорий.
Размер раздела ограничен 278 байт при размере кластера 16 КБ (2 64 ·16·2 10), стек Windows поддерживает 2 64 .
Максимальное количество файлов в директории: 2 64 .
Максимальное количество директорий в разделе: 2 64 ;
. Организация пулов и виртуализация для более простого создания разделов и управления файловой системой;
. Сегментация последовательных данных (data sriping) для повышения производительности, избыточная запись для отказоустойчивости;
. Поддержка техники чистки диска в фоновом режиме (disk scrubbing) для выявления скрытых ошибок;
. Спасение данных вокруг повреждённого участка на диске;
. Общие пулы хранения данных между машинами для дополнительной отказоустойчивости и балансировки нагрузки.

Труборез и трубогиб для самостоятельной сборки СЖО

Два инструмента компании EK Water Blocks адресованы тем, кто собирает СЖО самостоятельно: резак EK-Loop Soft Tube Cutter и приспособление для гибки труб EK-Loop Modulus Hard Tube Bending Tool.

Первый январский 2020 г. набор графических драйверов Radeon Software Adrenalin 2020 Edition 20.1.1 содержит оптимизации для игры Monster Hunter World: Iceborne и исправляет почти три десятка ошибок, выявленных в предшествующих релизах.

Google продолжит поддержку браузера Chrome для Windows 7

Многие пользователи, особенно корпоративные, не спешат отказываться от Windows 7, хотя расширенная поддержка Windows 7 для обычных пользователей завершается 14 января 2020 года.

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