На докладе расскажу о технических сложностях, с которыми мы столкнулись при разработке своего хранилища.
Задачи, которые решали:
* эффективная утилизация больших HDD (меньше iops на терабайт хранилища);
* переезд на более cost-effective серверную платформу (сокращение количества занимаемых юнитов в ДЦ);
* обеспечение SLA 99.999% доступности данных в течение года;
* переживание отключения ДЦ (ряда/стойки/сервера) без ручного вмешательства;
Архитектура потребовала распила письма на несколько составляющих и 2 вида индексов, чтобы хранилище смогло утилизировать диски в 18 ТБ полностью. Индексы не помещаются в память, поэтому применяются разные приемы для ускорения их загрузки в кэш. Для обеспечения более линейной записи группы юзеров объединяются в шарды, внутри которых ведется один xlog на всех. Собственное BLOB-хранилище с кворумной записью.
И другие приемы.