Проект CoreOS, развивающий основанное на идеях контейнерной изоляции серверное окружение, анонсировал новое распределённое хранилище Torus. В основе Torus лежит уже проверенная на практике система хранения данных в формате ключ/значение etcd, которая применяется в качестве низкоуровневого звена для хранения содержимого файлов и координации достижения консенсуса между узлами. Код Torus написан на языке Go и распространяется под лицензией Apache 2.0.
Torus реализует пул ресурсов и базовые файловые примитивы, позволяющие манипулировать данными в хранилище с использованием простых файловых операций. Распределение данных по узлам производится с использованием шардинга с применением закольцованной консистентной хэш-функции. Возможно создание различных типов разделов, которые могут развиваться в виде плагинов-субпроектов, а также применения иных методов хэширования для шардинга. В настоящее время доступен только плагин с реализацией раздела с простым блочным устройством на базе NBD (Network Block Device). Планируется создание плагина для хранилища объектов.
Согласованность данных достигается благодаря работе в режиме только добавления. Чистка производится с использованием сборщика мусора. Предоставляются функции репликации и ребалансировки пула, которая выполняется с использованием внутреннего peer-to-peer API. На будущее запланировано интеграции средств для хранения данных в зашифрованном виде и применения кодов автоматической коррекции ошибок.
Разработка пока находится в состоянии экспериментального прототипа, который может использоваться в качестве постоянного хранилища в кластере контейнеров, развёрнутого при помощи системы Kubernetes. В отличие от существующих распределённых хранилищ, Torus разработан с учётом специфики работы в кластерах микросерверов, работающих с использованием технологий контейнерной изоляции. Подобным кластерам свойственна активная миграция контейнеров между узлами, частые операции остановки и запуска.
|