nav-img
Evolution

Введение

CS/CSD (Chunk Server Daemon) — cервис, ответственный за хранение и доступ к чанкам данных в SDS.

Чанк — линейный участок данных фиксированного размера, на которые разделяются пользовательские тома. По умолчанию размер чанка — 1 Гб.

  • чанк наследует параметры репликации тома;

  • чанк выступает как единица аллокации и распределения данных в кластере; Данные одного чанка хранятся на одном конкретном наборе чанк-сервисов системы, также называемом чанк-группой. Чанк-группы не фиксированы и могут быть разными для каждого чанка. Их размер (количество CS) равен M+N.

  • чанки могут мигрировать между чанк-серверами в рамках восстановления после сбоев или балансировки нагрузки.

При взаимодействии с данными клиентская библиотека libsbd:

  • отправляет запрос в сервис MDS, чтобы узнать к какому chunk_uid относится данный участок тома: {volume_id, offset, size} -> [{chunk_uid, offset, size}, ...]

  • узнает, какие чанк-сервера отвечают за хранение данного chunk_uid: {chunk_uid} -> [cs1, cs2, cs3, ...]

CS предоставляет опции:

  • write — chunk_uid, offset, size, data

  • read — chunk_uid, offset, size

  • discard — chunk_uid, offset, size, например, trim, unmap

С точки зрения платформы, CS — это Linux user-space приложение, работающее поверх файловой системы. Для корректной работы, в частности сбора статистики, сервису необходимо предоставить отдельный раздел.

CS осуществляет хранение данных с заданными параметрами репликации, для этого он взаимодействует с другими CS в системе. Связь проводится по внутренней сети.

CS также запрашивает у MDS сведения об ошибках и параметры чанков:

  • параметры репликации;

  • список peer CS-сервисов для чанка;

  • другие параметры.

Данные в CS защищены от повреждения на диске с помощью CRC.