Перемещаем десятки петабайт данных между частями собственного S3-хранилища, а никто и не подозревает. Привет, это Никита Иващенко, старший разработчик команды Storage. У нас есть собственное объектное хранилище S3. Сейчас в нём находится примерно 130 петабайт данных. Чтобы их качественно и быстро хранить и обрабатывать, хранилище разделено на несколько десятков независимых кластеров. ❓Проблема: данные распределяются между кластерами неравномерно. А чем больше объектов хранится в кластере, тем выше нагрузка на сервисы, которые взаимодействуют с этими объектами. ❗️Идея: научиться перемещать данные из перегруженных кластеров в более свободные без остановки хранилища. ⚙️ Решение: live-миграция через сервис s3-migrator. Он составляет список всех объектов в бакете и сохраняет его в PostgreSQL (это важно на случай остановки миграции). Объекты из списка последовательно перемещаются в новый кластер. Система проверяет, что всё перенесено корректно. В случае ошибки проблемные объекты переносятся повторно. Дополнительно проверяются файлы, загруженные по частям. ❓❓Новая проблема: когда появились бакеты с сотнями миллионов объектов, скорость миграции заметно снизилась, а БД требовала много ресурсов. И мы всё переделали. Все подробности и архитектуру решения найдёте ➡️ в моей хабрастатье. Полезного чтения! #ozontech_habr #storage