Аналитики Phoronix.com произвели серию тестов различных файловых систем, поддерживаемых ядром Linux 2.6.30. В тестировании также участвовала новоприбывшая журнально-структурированная NILFS2, которая хорошо проявила себя в тестах Dbench и SQLite.
Специалистами компании Phoronix недавно было произведено сравнение производительности различных файловых систем в ОС Linux. В сравнении принимали участие:
Ext3 - ФС, используемая по умолчанию во многих Linux-дистрибутивах.
Ext4 - преемник Ext3, изначально создававшийся как набор расширений для неё. На данный момент активно разрабатывается.
Xfs - ФС, изначально разработанная Silicon Graphics для IRIX, впоследствии портированная на Linux. Является одной из старейших ФС с поддержкой журналирования.
Btrfs - молодая ФС, разрабатываемая компанией Oracle как ФС enterprise-уровня.
Тест проходил на preview-версии дистрибутива Fedora 11, которая из коробки способна ставиться на все вышеперечисленные ФС.
Результаты оказались следующими:
Michael Larabel:
«Конечно, Btrfs пока еще далека от совершенства среди других ФС. В большей части проведенных тестов EXT4 значительно её обогнала. Иногда впереди на некоторых тестах оказывалась и XFS. К тому же, для загрузки чистой системы с Btrfs потребовалось больше времени по сравнению с EXT3/EXT4.
Несмотря на то, что Btrfs на данный момент не имеет особенных преимуществ в плане производительности перед другими ФС, у нее есть множество уникальных возможностей, таких как снимки состояний (snapshots), контрольные суммы, онлайн-дефрагментация и т.д. Также стоит принять во внимание, что Btrfs сейчас активно развивается и ее формат еще не до конца стабилизировался.»
После включения Btrfs в ядро разработчики обновили номер версии до v0.17. Основные изменения:
1. Изменен формат FS. Разработчики планируют обеспечивать обратную совместимость с этим форматом для будущих релизов FS, хотя нигде и не сказано, что этот формат окончательный.
2. Добавлен режим компрессии данных используя алгоритм zlib.
3. Переработаны процедуры block allocation, что привело к значительному увеличению производительности FS.
4. Улучшения в использовании блоков в процессе перемещения экстентов.
5. Возможность создания FS внутри родительской FS (Seed device). Seed device - это специальный тип Btrfs с установленным флагом SEEDING super flag. Seed device позволяет создать новую btrfs поверх существующей. Новая FS содержит ту же информацию, что и родительская (Seed device), но может быть смонтирована только в режиме read-only.
6. Множество багфиксов и улучшений производительности.
Линус Торвальдс, после дискуссии в списке рассылки разработчиков ядра Linux, одобрил включение файловых систем Btrfs и Squashfs в состав будущей версии ядра 2.6.29. Патчи Btrfs уже интегрированы в Git-репозиторий ядра, в то время как патчи со Squashfs еще ожидают добавления. По заявлению разработчиков Btrfs, данная файловая система уже достаточно стабильна для начала полномасштабного тестирования внутри ядра Linux.
Squashfs - файловая система, работающая только в режиме чтения данных и хранящая информация в сжатом виде и широко используемая для формировании образов LiveCD дистрибутивов.
Btrfs - открытая файловая система, разрабатываемая при поддержке компании Oracle и похожая по возможностям на файловую систему ZFS. Теоретический предел дискового раздела файловой системы BTRFS равен 18 эксабайтам. Основные характеристики:
Для всех блоков данных и метаданных дополнительно хранятся контрольные суммы.
Возможность определения и автовосстановления ошибок, через поддержку copy-on-write режима работы с данными и метаданными (транзакционная файловая система, в которой данные не перезаписываются).
Снапшоты, с возможностью записи и изменения данных.
Максимальное число файлов - 2^64.
Минимальный расход дискового пространства для хранения небольших файлов и индексов директорий.
Двойное индексирование дерева каталогов: Btree и TEA hash.
Динамическое распределение inode.
Подразделы (несколько корней в одной ФС).
Быстрая проверка и восстановление ошибок.
Функции зеркалирования (Raid0, Raid1 и Raid10) и разнесение на несколько дисков на уровне объектов.
Проверка целостности ФС на лету.
Эффективные средства инкрементального бэкапа и зеркалирования.
Возможность продолжения работы даже при частичном повреждении данных.
ACL.
Изменение размера ФС на лету, без остановки работы (включая возможность уменьшения размера).