Снапшоты своей файловой системы через LSM: с RocksDB легко, но есть нюансы

Базы данных и системы хранения

Доклад принят в программу конференции

Целевая аудитория

Доклад будет полезен инженерам, рассматривающим embedded базы данных типа RocksDB и LevelDB для сложных систем, а также всем, кто хочет заглянуть под капот современных хранилищ и понять, как теория LSM-деревьев сталкивается с практикой высоких нагрузок.

Тезисы

Разрабатывая собственную файловую систему, мы столкнулись с проблемой: как эффективно и быстро реализовать механизм снапшотов для защиты данных? Для хранения метаданных файловой системы мы используем RocksDB, популярную реализацию LSM-дерева на диске, которая будто бы идеальна для этой задачи — но на пути оказались скрытые рифы, неочевидные из документации.

В этом докладе я расскажу о нашем опыте интеграции преимуществ RocksDB, сфокусировавшись на реализации снапшотов файловой системы.

Вы узнаете как воспользоваться преимуществами LSM-дерева для реализации снапшотов и при этом не раздуть их метаданные из-за особенностей RocksDB. Как стреляют в ногу нюансы дедуплицирующей файловой системы и POSIX. И как делать поверх всего этого очистку более неиспользуемых данных.

4 года в IT, 2 года в YADRO. Дорос до старшего инженера. Спроектировал и руководил разработкой снапшотов в команде TATLIN.Backup.

Сам интересуюсь программированием со школы, попробовал несколько языков (работал на PHP, JS/TS, C#, Java и Rust, остановился на последнем)

В команде TATLIN.Backup меня почему-то называют техлидом, там я занимаюсь больше архитектурными вещами и ревью кода, поэтому отыгрываюсь на домашних проектах, пишу игры на расте и Godot :)

Видео

Другие доклады секции

Базы данных и системы хранения