Разработана новая быстрая файловая система для Linux

Софт Системное ПО
мобильная версия
, Текст: Дмитрий Степанов
Файловая система для Linux, разработанная экспертами из Остина, поддерживает механизм транзакций, который обеспечивает высокий уровень устойчивости к сбоям без снижения производительности. Система построена на основе привычной пользователям Linux журналируемой ФС Ext4.

Транзакционная файловая система с производительностью Ext4

Группа специалистов из Teхасского университета в Остине, США при поддержке Vmware Research разработала новую файловую систему ТхFЅ (Texas Transactional File System). Разработку представили на ежегодной технической конференции USENIX в Бостоне.

Система базируется на файловой системе Ext4, но, по заявлению разработчиков, может быть элементарно адаптирована для использования с другими системами, например, ZFS (доступна в ОС Solaris, FreeBSD и Linux через модуль FUSE).

Отличительными чертами ТхFЅ являются наличие встроенной пoддержĸи тpaнзaĸций, удовлетворяющих требованиям АСІD (Atomicity-Consistency-Isolation-Durability – атомарность, согласованность, изоляция, надежность), относительно невысокая сложность, высокая производительность, сопоставимая с Ext4.

Код файловой системы, уместившийся в примерно 5 тыс. строк, пока предлагается лишь в виде модифицированных исходных текстов ядра Lіnuх устаревшей версии 3.18. Актуальной стабильной версией на момент выхода публикации является 4.17.8. Проект доступен на Github, веб-сервисе для хостинга ИТ-проектов и их совместной разработки.

Подробнее о TxFS

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

Использование TxFS делает возможным выполнение групп операций над одним или несколькими файлами. Атомарность гарантирует, что транзакция не будет выполнена частично – либо будут выполнены все операции, либо не выполнено ни одной. Если транзакцию невозможно завершить полностью, все изменения, внесенные ею, будут отменены, а файловая система вернется в исходное состояние (будет произведен «откат» транзакции). Таким образом, принцип функционирования транзакционной файловой системы напоминает транзакции в СУБД.

Cхема демонстрирует принцип работы файловой системы TxFS

Нельзя не отметить простоту и компактность API для управления транзакциям, который включает всего три системных вызова: fs_tx_begin() – объявление начала транзакции; fs_tx_commit() – выполнение транзакции; fs_tx_abort() – отмена транзакции.

Для демонстрации преимуществ транзакций в новой файловой системе разработчики внесли изменения в исходный код популярной СУБД SQLite и Git, одной из самых распространенных в мире систем управления версиями, адаптировав их для работы через TxFS.

Затем был проведен двадцатичетырехчасовой стресс-тест, в ходе которого база данных SQLite подверглась множеству модификаций в несколько потоков. По итогам стресс-тестирования «пропатченная» SQLite показала достаточно высокий уровень стабильности и устойчивости к сбоям. «Краха» ядра Linux также не произошло.

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

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