GeeseFS: ФС из S3, или Параллелизм гусей в природе

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

Устройство систем хранения данных

Хранилища

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

Мнение Программного комитета о докладе

Осторожно! Программный комитет предупреждает: после прослушивания этого доклада у вас возникнет желание использовать GeeseFS в продакшне! :)

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

Все, кому интересны ФС, S3 и ФС поверх S3 :)

Тезисы

Никогда такого не было, и вот опять! Спустя 15 лет после появления S3 пользователям всё ещё нужны кластерные ФС под сценарии использования, близкие к тому, на что обычно рассчитано S3. А именно: большую/бесконечную ёмкость, низкую стоимость хранения, крупноблочный доступ, масштабируемость.

А можно ли сделать из S3 ФС? Обычный ответ: можно, но будет очень медленно. Казалось бы, файл — это «именованная последовательность байтов» и объект в S3 — тоже. Однако ФС плохо работает как S3, а S3 обычно плохо работает как ФС. Но почему?

Наш ответ в том, что если половина этой проблемы — действительно архитектурные вопросы различий между ФС и S3 (о которых мы, кстати, тоже поговорим, например, рассмотрим вопрос «а что, вообще, такое POSIX-совместимость ФС?»), то оставшаяся половина — исключительно вопросы реализации, которые оказалось не так уж сложно решить.

И решены они в GeeseFS https://github.com/yandex-cloud/geesefs. GeeseFS — это ещё одна утилита для монтирования S3 через FUSE в виде локальной ФС, но, в отличие от всех остальных реализаций, достаточно POSIX-совместимая и достаточно быстрая, чтобы её можно было использовать без слёз. 🙂

Понятное дело, все проблемы «S3 как ФС» без расширения протокола на стороне сервера не решишь, так что в наши дальнейшие планы входит именно расширение протокола. Конечная цель — оптимизация использования S3 в сценариях, где традиционно «рулят» ФС.

Что реализовано в части нашей S3-ФС уже сейчас, что запланировано на будущее, а также как другие решают ту же задачу (скрещивания ужа и ежа) — обо всём этом мы и поговорим в докладе.

Виталий Филиппов

Личный проект

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

Личный проект

Личный проект

Видео

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

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