Tux3

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:47, 4 марта 2017.
Tux3
Полное название Tux3
Содержимое каталога B-tree
Распределение файлов B-tree
Limits
Макс. размер тома 260 bytes (1 EiB)
Макс. длина имени файла 255 bytes
Разрешенные символы
в именах файлов
Все байты за исключением NUL и'/'
Features
Даты зарегистрирован атрибут модификации(ctime), модификация(mtime), время доступа(atime), версия создания
Диапазон дат 40 bits
Дата резолюции 1/256сек
Разрешения файловой системы POSIX
Другие
Операционная система Linux

Tux3 — разрабатываемая файловая система для Linux, которая по набору возможностей должна встать в один ряд с btrfs и ZFS. Создатель - Дэниэл Филлипс. Он представил эту файловую систему как замену созданной им ранее файловой системы Tux2, которая столкнулась с проблемами лицензирования после подачи нескольких патентов. Филлипс ранее создал систему индексирования каталога HTree который в итоге стал официальной основой ext3 . Технические детали Tux3 были впервые опубликованы в электронном письме от 23 июля 2008 года. Пока что её разработка далека от завершения. Одной из задач Tux3 является создание более эффективного нежели существующий метода репликации данных для проекта Zumastor.

Проектирование

В общих чертах Tux3 представляет собой обычный дизайн inode/файла/каталога в Unix-стиле. Таблица Tux3 inode представляет собой B-дерево с версионированными атрибутами на листьях. Файл является inode-атрибутом, который представляет собой B-дерево с версионированными экстентами на листьях. Индексы каталогов отображаются в блоки файлов каталога, как с HTree. Свободное пространство отображается с помощью B-дерева с экстентами на листьях. Стараются избежать традиционной журнализации путем введения логики восстановления, которая позволяет восстановиться после переустановки.

История разработки

По состоянию на август 2008 года,Tux3 был способен только выполнять базовый ввод/вывод файлов. К концу 2008 года Tux3 был способен работать в ядре и в состоянии выдержать повторные запуски файловой системы FSx-тренажера Linux, что являлось большим достижением.
17 февраля 2009, Linux впервые загрузился с корневой файловой системы Tux3.
18 января 2013 года, была добавлена ​​начальная поддержка Fsck. До сих пор он просто проверяет физическую целостность ссылок, но разработчики уверены, что они могут сделать полностью функциональный e2fsck качества FSCK в ближайшее время.
17 мая 2014 года Даниэль Филлипс сделал заявление к сопровождающим ядро, чтобы просмотреть код и реализовать его в ядре ​. Цель состоит в том, чтобы стабилизировать код в ядре, и, наконец, получить стабильную версию.

Особенности

Первый публичный выпуск Tux3 был представлен в 2008 году, до этого около 10 лет проект развивался под грифом внутренней разработки, нацеленной на опробование некоторых новых подходов к построению файловых систем. Файловая система Tux3 позиционируется как файловая система общего назначения, которая использует версионный механизм учёта изменений и позволяет вернуться к состоянию файловой системы в любой момент времени в прошлом, что достигается благодаря тому, что данные при внесении изменений не переписываются, а копируются на новое место. При этом контроль версий применяется как для файловой системы в целом, так и для индивидуальных файлов и директорий. Для выбранного состояния могут осуществляться версионные срезы (снапшоты), которые могут продолжать существование как самостоятельные объекты, для которых возможна запись и изменение данных.
Другими интересными особенностями Tux3 являются встроенные средства для репликации между системами отдельных файлов, директорий или целиком файловой системы, режим атомарного обновления данных, возможность изменения размера файловой системы на лету, динамическое распределение i-node (i-node хранятся в виде дерева btree и не имеют фиксированного размера или жестко заданного набора атрибутов), высокая скорость работы fsck за счёт ведения лога изменений в виде Btree-дерева, быстрый доступ к большим директориям, содержимое которых индексируется с использованием структур PHTree (в планах). Максимальные размеры файлов, разделов, числа i-node и версионных изменений практически не ограничены (260 и 248).

Сравнение с Btrfs и ZFS

В отличие от файловых систем Btrfs и ZFS, Tux3 базируется на модели использования одного указателя для экстента ("один указатель для каждого экстента") и привязке информации о версиях к конечным узлам дерева (в классических "copy on write" системах учитывается состояние всего дерева файловой системы). Подобный подход позволил добиться сокращения объема мета-данных и значительного упрощения "физического" дизайна за счет переноса функциональности на "логический" уровень, что упрощает проведение таких операций как проверка целостности и восстановление после сбоя. Тем не менее, так как изменение дочерних элементов не приводит к изменению родительских, в процессе монтирования приходится отталкиваться от исходного состояния элементов, проигрывая все последующие изменения для создания кэша (в процессе работы данная особенность не сказывается, так как все изменения отражаются в прокэшированном дереве). С другой стороны, подобный подход позволяет избавиться от рекурсивных операций с деревьями, свойственными copy-on-write системам.

Сравнение с ext4

Сравнение производительности с файловой системой Ext4 показало, что Tux3 немного опережает Ext4 (46.338/46.684, 49.101/44.011, 49.838/43.773) и при этом создаёт вдвое меньшую нагрузку на CPU. Тестирование проведено с использованием утилиты fsstress, оценивающей скорость выполнения нескольких сценариев работы с файловой системой, свойственных для высоконагруженных систем. В качестве одной из причин низкой нагрузки на CPU называется разделение реализации Tux3 на две раздельные подсистемы - фронтэнд и бэкенд. Фронтэнд осуществляет выполнение операций, свойственных для файловых систем, использующих POSIX, и работает только с данными имеющимися в кэше. Бэкенд в фоновом режиме следит за синхронизацией кэша, осуществляя операции с диском в атомарном виде (в показателях теста учитывается только нагрузка от фронтэнда, но разработчики утверждают, что если учесть и бэкенд, общая нагрузка на CPU всё равно будет ниже). Все изменения передаются фронтэндом в виде транзакций, которые группируются в delta-наборы с тем расчётом, что каждый набор может быть записан на носитель в виде атомарного изменения.

Заключение

Несмотря на то, что файловая система Tux3 уже пригодна для экспериментов, ещё не все запланированные функции реализованы. Наиболее существенной функцией, которую планируется реализовать в первую очередь, является поддержка снапшотов. Также пока не реализован в коде новый метод индексирования директорий (PHtree). Требуется доработка систем для управления свободным дисковым пространством и распределения блоков для уменьшения фрагментации. Необходимо создать эффективную утилиту для восстановления повреждённых файловых систем (fsck). В планах также реализация возможностей, связанных с миграцией блоков, увеличением/уменьшением размера разделов, дефрагментацией, дедупликацией и репликацией.

Ссылки

  • Официальный сайт [Электронный ресурс]: — Режим доступа: http://tux3.org/
  • Репозиторий проекта на GitHub [Электронный ресурс]: — Режим доступа: https://github.com/OGAWAHirofumi/tux3