Архитектура Vitastor. Тёмная сторона моей распределённой СХД Базы данных и системы хранения

Доклад принят в программу конференции
Виталий Филиппов
Личный проект

Ведущий разработчик, линуксоид, цефер. Занимается веб-разработкой на React, Node.js, PHP, Go, Python, Perl, Java. Интересуется всем: от баз данных до кластерных систем.

https://yourcmc.ru/wiki/Участник:VitaliyFilippov
Тезисы

Vitastor — это мой быстрый «Ceph-заменитель». Распределённая блочная программная система хранения данных (SDS), способная, в отличие от большинства других систем, нормально работать с быстрыми твердотельными накопителями, и при этом, в отличие от большинства других систем, имеющая симметричную распределённую архитектуру без единой точки отказа. А под «нормально», конечно, понимается «так быстро, как только возможно» :-).

В предыдущем докладе на DevOpsConf (https://devopsconf.io/moscow/2021/abstracts/7458) я рассказал о ситуации с SDS («нечего надеть»), причинах создания Vitastor и общих принципах его разработки.

В этом докладе я хочу больше остановиться на технической стороне. Тёмной, архитектурной технической стороне.

Что такое «симметричная распределённая архитектура»? Как конкретно обеспечивается консистентность? Как реализованы снапшоты и клоны? Зачем нужен io_uring? Как Vitastor использует RDMA? Что ещё за монитор на node.js и откуда там LP солвер (утилита решения задач линейного программирования)?

С какими ещё архитектурными выборами придётся столкнуться по ходу разработки? Например, что будет, если всё-таки захочется реализовать поверх Vitastor файловую систему? Обо всех этих вопросах и пойдёт речь в докладе.

Другие доклады секции Базы данных и системы хранения