FSComparison

Материал из OpenWiki
Перейти к: навигация, поиск

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

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

Критерии оценки: Производительность, Тип деревьев, Размер инода, Журналируемость.

TODO: добавить самое главное -- надёжность
(попробовал добавить)

Сравнительная таблица

ФС Производительность Надежность Потребление ресурсов Технологии Достоинства Недостатки Лимиты OS Журнал Оптимизации для SSD Примечания.
Ext2 Средняя в типовых случаях.

Плохая на больших иерархиях а также при работе с большими файлами.
Плохая
(нет журнала)
Обработка линейных списков и битовых карт требует довольно много CPU.

Потребление RAM невелико
Классический аллокатор с битовыми картами занятости блоков.

Линейные списки-таблицы файлов в директориях.
Простая а потому довольно распостраненная ФС

Достаточно хороший fsck.
Нет журнала: необходимость fsck после краха. Медленно работает с большими иерархиями из-за линейных списков. Плохая производительность аллокатора с битовыми картами что заметно на больших файлах. Все иноды создаются заранее, что приводит к потреблению ими места на томе и жесткому лимиту на количество файлов. Файл:2Tb.
Том:32Tb.
Блоки: 1, 2, 4 или 8Кб, выбирается при создании. Имена файлов: до 255 байтов, любые символы кроме \0 и "/".

Дополнительно: директория может содержать максимум 31998 поддиректорий.
Linux
(изначально)
Также есть для Windows (сторонние драйвера IFS), BSD, ReactOS, Hurd, Darwin, MacOS X
нет  ? Рекомендуется применение ИБП, т.к. нет журнала.

По состоянию на 2012 год данная ФС является устаревшей.
Ext3 Средняя в типовых случаях, меньше чем у ext2 из-за журналирования.

Ниже средней при работе с большими файлами.
Средняя (журналирование только метаданных)

Хорошая (полное журналирование)
Обработка больших файлов требует много CPU из-за обработки битовых карт. Работа с большими иерархиями быстрее чем ext2. Блочный аллокатор как в ext2. Индексирование директорий HTREE для ускорения работы с большими иерархиями. Наличие журнала и разных режимов журналирования на выбор. HTREE значительно ускоряет работу с большими иерархиями. Множество опций монтирования. Совместима с ext2: драйвер ext2 может монтировать том ext3 как ext2, игнорируя журнал. Медленный блочный аллокатор как в ext2. Журналирование снижает скорость относительно ext2. Полное журналирование очень медленное. Иноды размещаются как в ext2 с теми же проблемами. Ограничения дизайна совпадают с ext2 Linux (все возможности).

Частичная поддержка в BSD и Windows (драйвера могут не реализовывать все опции)
да (различные режимы)  ? "Ext2 с журналом и HTREE индексом". Устойчивость к сбоям гораздо выше, чем у ext2. Использование дискового пространства не совсем рационально (по тем же причинам что и ext2). По состоянию на 2012 год имеет смысл обращать внимание на дальнейшее развитие этой ФС в виде ext4 который быстрее при прочих равных.
Ext4 Высокая Средняя (журналирование только метаданных)

Средняя+ (полное журналирование)
Весьма умеренное потребление RAM и CPU в типовых сценариях. Эстентный аллокатор, позволяющий выделять регионы до 128Мб одной записью. Индексирование директорий и экстентов в HTREE. Реализована поддержка TRIM для уведомления SSD о неиспользуемых регионах. Delayed allocation. В режимах с журналированием только метаданных - очень быстрая ФС за счет экстентного аллокатора и индексирования директорий. Отличается хорошей скоростью работы при умеренном потреблении ресурсов. Имеет режим оптимизации под SSD. Возможен апгрейд тома ext3 до ext4 без пересоздания ФС. Достаточно качественные утилиты восстановления. Низкая склонность к фрагментации. Есть онлайн-дефрагментатор. Возможность изменения размера на лету. Потенциально могут оставаться некоторые баги, особенно в старых версиях ядра Linux и утилит. Файл:16Tb
Том:1EiB.
Имена файлов: до 255 байтов, любые символы кроме \0 и "/".
Лимит поддиректорий в директории увеличен до 64000.
Linux

Частичная поддержка в Windows через драйвер ext2fsd.
да (различные режимы) Да: Linux версия поддерживает trim Развитие идей ext3, включает некоторые идеи из xfs/lustre. От предыдущих EXT-ов отличается множеством оптимизаций ориентированных на скорость работы, например экстенты, отложенное выделение и т.д.. а также увеличинными лимитами. По состоянию на 2012 год является выбором по умолчанию для многих дистрибутивов Linux благодаря удачному сочетанию параметров.
ReiserFS 3.x.x (3.6.x) Высокая, особенно при работе с мелкими файлами Средняя у ФС (журналирование только метаданных).

Плохая у утилит: fsck иногда может полностью разрушить том, некорректно опознав начало дерева. Known issue.
 ? balanced trees (сбалансированные деревья) Быстро работает с множеством мелких файлов. Умеет tail packing для экономии места. Плохие утилиты восстановления, склонные убивать тома окончательно вместо починки. Tail packing может вызывать просадку производительности и спровоцировать различные баги. Журналирование реализуется только для метаданных. (to be added) Linux да (только метаданные)  ? особенно хороша для мелких файлов, т.к. они полностью ложатся в свой инод. Менее надёжна, чем ext3 (живёт долго, умирает крепко).
Reiser4 Высокая, особенно при работе с мелкими файлами; по заявлениям разработчиков, самая быстрая из существующих файловых систем  ?

Экспериментальная ФС - недостаточно данных о реальной эксплуатации
 ? dancing trees ("пляшущие" деревья) Быстрая при работе с мелкими файлами. Плагинная архитектура. Весьма экспериментальная разработка, не принятая в основное ядро Linux и испытывающая проблемы с количеством разработчиков. (to be added) Linux да (плагины потенциально могут реализовывать различные техники)  ? особенно хороша для мелких файлов, т.к. они полностью ложатся в свой инод; быстрее и эффективнее ReiserFS 3.x.x за счёт использования dancing trees; имеет модульную архитектуру, любая функция добавляется модулем. Экспериментальная
Jfs Средняя+ Средняя (журналирование только метаданных) Очень низкая нагрузка на CPU и умеренное потребление RAM. B+ деревья и экстенты Скромное потребление системных ресурсов делает эту ФС интересным вариантом для слабых конфигураций. В последниз версиях Linux ядра поддерживается TRIM. Не известно каких либо фатальных багов на данный момент. Заурядная скорость работы. Журналирование только метаданных. (to be added) Linux, AIX, OS/2 да (только метаданные) Да: в свежих ядрах Linux.

Нет: прочие реализации.
Заслуживающий внимания вариант для слабых конфигураций где потребление CPU является проблемой. В остальном обладает заурядной скоростью и ничем особым из ФС похожего класса (b-деревья с экстентами, классическое журналирование) не выделяется. Умеет опцию монтирования iocharset.
xfs Высокая для больших файлов.

Очень высокая для многодисковых хранилищ в случае больших файлов.

Средняя для небольших файлов
Средняя (журналирование только метаданных).

Ниже средней с старыми ядрами Linux до 2.6.28 из-за склонности к забиванию файлов на которых оборвалась запись нулями в случае краха.
Большая нагрузка на CPU при работе с метаданными. Один из самых больших модулей ядра файловых систем Linux у этого класса ФС B+ деревья, экстенты, allocation groups для параллелизации доступа в многодисковых хранилищах. Delayed allocation в новых ядрах Linux. Очень быстрая работа с большими файлами, особенно в многодисковых конфигурациях когда хранилище состоит из нескольких дисков. Нормально относится к многопоточному доступу. Возможность увеличения налету. Начиная с Linux ядра 3.0 поддерживает TRIM. Медленная работа с метаданными делает эту ФС не лучшим выбором для работы с множеством мелких файлов. Журналируются только метаданные. Ранние версии были склонны к затиранию файлов при крахе нулями. Ощутимая нагрузка на CPU и большой размер модуля делают эту ФС не лучшим выбором для слабых конфигураций и embedded. (to be added) Linux, IRIX, экспериментальная поддержка в FreeBSD. да (только метаданные) Да: linux начиная с ядра 3.0

 ? для остальных
64-разрядная ФС, ориентированная на работу с большими файлами на мощных рабочих станциях. Допускает изменение размера на ходу. Высокая надёжность при условии использования с UPS на стабильном железе/ядре. При откате журнала принудительно обнуляются блоки, подозрительные на попадание в "чужой" файл. Особенно этим отличались ядра до 2.6.28, с тех пор поведение было пересмотрено и был внесен ряд исправлений нацеленных на минимизацию этого эффекта.
btrfs Выше среднего в большинстве нагрузок. Есть ряд эффективных настроек позволяющих согласовать большинство типов нагрузок с поведением ФС ФС в разработке. Потенциально дизайн может быть очень надежным благодаря недеструктивной записи, зеркалированию метаданных на несколько носителей, чексуммах и т.д., однако в существующих реализациях возможны баги. Не следует применять в ответственных применениях до официального объявления стабильной. Также зависист от используемых возможностей. Зависит от используемых возможностей и характера нагрузки. В данный момент активно оптимизируется - сложно делать окончательные выводы. Модифицированный под CoW вариант B-tree, экстенты, copy-on-write (CoW), управление томами. Поддержка оптимизаций для SSD и trim. Новый дизайн ФС, созданный с оглядкой на все существовавшие до него. Попытка взять лучшее из свойств различных ФС, оставив за бортом их недостатки. Благодаря CoW - быстрая запись, эквивалентная полному журналированию. Просто и быстро создаваемые снапшоты, в том числе writeable. Гибкость в размещении данных и метаданных, возможность конверсии из ext4 путем оформления ext4 как начального снапшота. Простой и быстрый crash recovery (откат на ближайший автоснапшот). Возможность создания subvolumes с разными настройками. Сжатие. Управление многодисковыми конфигурациями. Встроен дефрагментатор совмещенный с GC. Оптимизации для SSD + поддержка trim. Экспериментальная ФС: дизайн не полностью оптимизирован + возможны баги. На данный момент некоторые нагрузки могут провоцировать избыточные объемы метаданных. Медленная работа вызова fsync() - частично исправлено в ядре 3.7. Некоторые пользователи сообщают о проблемах с исчерпанием места на томе при долговременном использовании. Традиционная утилита fsck в данный момент находится в экспериментальном состоянии. (to be added) Linux Недеструктивная запись (CoW). Возможность отката к снапшотам. Да: изменение логики работы + поддержка trim. Очень мощная и фичастая ФС нового поколения. По мнению многих специалистов она через некоторое время станет ФС по умолчанию в большинстве дистрибутивов Linux. Тем не менее, отладка и оптимизация данной ФС потребует некоторое время. Очень интенсивно оптимизируется и багфиксится в данный момент. На данный момент ФС работоспособна и для простых/неответственных сценариев вполне возможно ее практическое применение.
ФС Производительность Надежность Потребление ресурсов Технологии Достоинства Недостатки Лимиты OS Журнал Оптимизации для SSD Примечания.

Примечания

  • Хотя формально патчи с htree были и для ext2, в mainline ядре Linux htree появился только в ext3. Поэтому htree не отнесен к возможностям ext2. Тем не менее, технически возможно создать том ext3 без журнала но с htree. Тем не менее, большинство драйверов ext2 игнорируют и htree и журнал, пользоваться htree сможет только драйвер ext3.
  • Необходимо добавить технические лимиты для некоторых ФС.
  • Btrfs обладает таким количеством возможностей что список достоинств просто неприлично длинный :)
  • Для EXT-ов блоки 8Kb и вытекающие из них максимальные лимиты доступны не на всех архитектурах.
  • Была попытка добавить ссылки на википедию по каждой ФС, но сервер испытывает какой-то сбой после ввода recaptcha.

Ссылки