В Техасе разработали новую файловую систему для Linux
20/07/2018
Система базируется на файловой системе 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, веб-сервисе для хостинга ИТ-проектов и их совместной разработки.
Современные приложения нередко хранят данные во множестве файлов, встроенных баз данных и NoSQL-хранилищах. В качестве примеров таких приложений можно назвать браузеры и системы управления версиями. Они должны обладать средствами обеспечения сохранности информации на случай возникновения сбоев. Механизм транзакций позволяет эффективно решить эту задачу.
Использование TxFS делает возможным выполнение групп операций над одним или несколькими файлами. Атомарность гарантирует, что транзакция не будет выполнена частично – либо будут выполнены все операции, либо не выполнено ни одной. Если транзакцию невозможно завершить полностью, все изменения, внесенные ею, будут отменены, а файловая система вернется в исходное состояние (будет произведен «откат» транзакции). Таким образом, принцип функционирования транзакционной файловой системы напоминает транзакции в СУБД.
Для демонстрации преимуществ транзакций в новой файловой системе разработчики внесли изменения в исходный код популярной СУБД SQLite и Git, одной из самых распространенных в мире систем управления версиями, адаптировав их для работы через TxFS. Затем был проведен двадцатичетырехчасовой стресс-тест, в ходе которого база данных SQLite подверглась множеству модификаций в несколько потоков.
По итогам стресс-тестирования «пропатченная» SQLite показала достаточно высокий уровень стабильности и устойчивости к сбоям. «Краха» ядра Linux также не произошло. В стандартном тесте на обработку транзакций TPC-C в однопоточном режиме модифицированная SQLite продемонстрировала прирост производительности в 1,61 раза по сравнению с оригинальной сборкой благодаря особенностям архитектуры, в частности за счет сокращения количества обращений к диску для синхронизации.
С репозиторием Git, развернутом на виртуальной машине, сперва производили различные манипуляции, а в момент применения изменений (выполнения «коммита») машину внезапно отключали. В результате сборка Git с поддержкой транзакций TxFS смогла обеспечить сохранность данных без потери производительности. Репозиторий, управляемый оригинальной сборкой, в такой ситуации оказывался повережденным.