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. Потребление RAM невелико. |
Блочный аллокатор как в 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.