Кэширование пользовательских данных в СХД: реализация протокола синхронизации кэшей в Active-Active-кластере

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

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

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

Разработчики систем хранения, разработчики и архитекторы систем высокой доступности и распределенных систем; специалисты по тестированию СХД, performance-инженеры; специалисты в области работы с базами данных и гипервизорами.

Тезисы

Одной из ключевых характеристик системы хранения данных является величина задержек при работе с данными, так как эти задержки могут напрямую влиять на производительность клиентских приложений: гипервизоров, файловых хранилищ, бизнес-приложений. Для сокращения задержек СХД оснащаются большими объемами DRAM-памяти, отведенной под кэш пользовательских данных.

Для обеспечения отказоустойчивости СХД представляет собой Active-Active-кластер из двух независимых контроллеров хранения. Поэтому одной из ключевых задач при реализации уровня кэширования данных является обеспечение когерентности кэшей на этих контроллерах — это позволяет внешним приложениям прозрачно работать с двумя отдельными кэшами, как с одним единым кэшом. Обеспечение когерентности потребовало от нас разработать специальный протокол синхронизации кэшей пользовательских данных.

В рамках этого доклада мы поговорим:
* как работает СХД и где она используется;
* коротко опишем путь, который проходят данные от приложения на клиентском сервере до дисков в дисковой полке и наоборот;
* о том, как мы можем писать в кэш одного контроллера, но читать из другого, и почему при внезапном отказе одного из контроллеров данные не теряются и не повреждаются;
* как нам в этом помогает протокол синхронизации кэшей;
* о том, как развивался данный протокол в нашей системе;
* как выполняется тестирование кэша данных в СХД: как выявить проблемы с когерентностью кэшей и какие инструменты для этого используются;
* об отладке уровня кэширования: как мы нашли редко воспроизводимый баг и какие изменения мы внесли в протокол;
* и как выглядит уровень кэширования сейчас.

Старший инженер по разработке ПО.
В компании YADRO более 3 лет занимается уровнем кэширования пользовательских данных в СХД семейства Tatlin. Разрабатывает основные сервисы обработки данных, протоколы коммуникации внутри отказоустойчивого кластера, алгоритмы управления кэшами.

YADRO

YADRO — группа российских технологических компаний, объединяющая направления разработки и производства вычислительных платформ, систем обработки и хранения данных, телекоммуникационного и сетевого оборудования, персональных и «умных» устройств, микропроцессорных ядер и fabless-производство микропроцессоров.

Видео