VK Object Storage logo
Помощь
Обновлена 20 октября 2026 г. в 09:40

Подсистема хранения

Подсистема хранения предназначена для организации физического хранения объектов и метаданных этих объектов.

Подсистема поддерживает 3 варианта работы:

  • стандартная система хранения (Стандартная система хранения) — хранение данных средствами компонентов VK Object Storage без использования Zepto;
  • система хранения Zepto X2 (Система хранения Zepto X2) — хранение данных с помощью Zepto в режиме отказоустойчивости x2 (репликация данных с фактором 2);
  • система хранения Zepto X1.75 и X1.09 (Система хранения Zepto X1.75 и X1.09) — хранение данных с помощью Zepto в режимах отказоустойчивости x1.75 (избыточное кодирование с помощью XOR) и x1.09 (избыточное кодирование кодами Рида-Соломона). Логика работы с субкластерами одинакова для обоих режимов, различается только способ избыточного кодирования.

Подробное описание Zepto, режимов отказоустойчивости и внутренних концепций приведено в разделе Основные особенности.

Стандартная система хранения

Схема компонентов стандартной системы хранения приведена на рисунке 1.

Схема компонентов стандартной системы хранения
Рисунок 1 — Схема компонентов стандартной системы хранения

Компоненты стандартной системы хранения приведены в таблице 1.

Таблица 1 — Компоненты стандартной системы хранения

Компонент

Описание

Storage daemons

Демон (Haron), выполняющий фоновые операции с файлами хранилища: удаление orphan-файлов и устаревших файлов, синхронизацию пар

Gostreamer

Интерфейс для низкоуровневого взаимодействия с физическим хранилищем. Обеспечивает передачу файлов в Nginx и взаимодействует с Nylon

Razmove-worker

Обрабатывает задачи размиграции — переноса данных со сбойной пары на другие доступные локальные пары

Jqueue

Сервис очередей на основе Tarantool (JetQueue), используется компонентом Razmove-worker для постановки и обработки задач

Nylon

Прокси-сервис Tarantool, отвечает за взаимодействие с FileDB и PairDB

PairDB

БД Tarantool, хранит список юнитов файлового хранилища

FileDB

Кластер Tarantool, хранит метаданные файлового хранилища

Storage Nginx

Прокси-сервис, выполняет сохранение и извлечение файлов объектов по протоколу WebDAV. Сохранение файла производится на все парты в юните. Запись файла считается успешной, если успешно записаны все копии файла. Чтение файла производится с одного парта в юните

FS

Файловая система, в которой физически хранятся файлы объектов

Система хранения Zepto X2

Схема компонентов системы хранения Zepto X2 приведена на рисунке 2.

Схема компонентов системы хранения Zepto X2
Рисунок 2 — Схема компонентов системы хранения Zepto X2

Компоненты системы хранения Zepto X2 приведены в таблице 2.

Таблица 2 — Компоненты системы хранения Zepto X2

Компонент

Описание

Zeptoproxy

Фронт-сервис Zepto. Принимает запросы от пользователя и трансформирует их в запросы к другим сервисам

Statusservice

Сервис, содержащий основную бизнес-логику Zepto. Хранит в оперативной памяти информацию о расположении бакетов, определяет, какой Bucketservice отвечает за нужный бакет, и управляет блокировками бакетов на время операций записи

Bucketmaster

Сервис, запускающий и отслеживающий состояние всех сервисов Bucketservice и Bucketcompactor

Bucketcompactor

Сервис, выполняющий компактизацию бакетов — удаление устаревших (del-) записей и уплотнение данных

Bucketservice

Сервис, обрабатывающий запросы на чтение и запись данных для одного конкретного диска

Nylon

Прокси-сервис Tarantool, обеспечивает доступ к базе данных FileDB

FileDB

Кластер БД Tarantool, хранит метаданные файлового хранилища

FS

Файловая система, в которой физически хранятся бакеты

Zepto_data_cleaner

Служебный сервис, выполняющий фоновую очистку устаревших и удаленных данных: находит через Nylon неактуальные записи в FileDB и инициирует их удаление через Zeptoproxy

Система хранения Zepto X1.75 и X1.09

Схема компонентов системы хранения Zepto X1.75 и X1.09 приведена на рисунке 3.

Схема компонентов системы хранения Zepto X1.75 и X1.09
Рисунок 3 — Схема компонентов системы хранения Zepto X1.75 и X1.09

Компоненты системы хранения Zepto X1.75 и X1.09 приведены в таблице 3.

Таблица 3 — Компоненты системы хранения Zepto X1.75 и X1.09

Компонент

Описание

Zeptoproxy

Фронт-сервис Zepto. Принимает запросы от пользователя и трансформирует их в запросы к другим сервисам

Statusservice

Сервис, содержащий основную бизнес-логику Zepto. Хранит в оперативной памяти информацию о расположении бакетов, определяет, какой Bucketservice отвечает за нужный бакет, и управляет блокировками бакетов на время операций записи

Bucketmaster

Сервис, запускающий и отслеживающий состояние всех сервисов Bucketservice и Bucketcompactor

Bucketcompactor

Сервис, выполняющий компактизацию бакетов — удаление устаревших (del-) записей и уплотнение данных

Bucketservice

Сервис, обрабатывающий запросы на чтение и запись данных для одного конкретного диска

XMG

Сервис, осуществляющий миграцию данных из субкластера x3 во второй субкластер (x1.75 или x1.09). Необходим только в инсталляциях, работающих в режиме x1.75 или x1.09

XDB

Сервис, хранящий метаданные, необходимые для работы режимов x1.75 и x1.09: информацию о группах избыточности и миграциях. Необходим только в инсталляциях, работающих в режиме x1.75 или x1.09

Nylon

Прокси-сервис Tarantool, обеспечивает доступ к базе данных FileDB

FileDB

Кластер БД Tarantool, хранит метаданные файлового хранилища

FS

Файловая система, в которой физически хранятся бакеты

TarantoolDB

БД Tarantool, хранит журнал удалений (dellog) — del-записи, которые в режимах x1.75 и x1.09 не записываются в бакеты, а сохраняются отдельно из-за особенностей компактизации данных, разбитых на группы избыточности. Statusservice и XDB записывают в него данные об удалениях, а Zeptoproxy обращается к нему при чтении, чтобы проверить, не удален ли запрашиваемый объект. Также хранит состав и структуру группы избыточности (D-бакетов с данными и P-бакетов с избыточностью)

Zepto_data_cleaner

Служебный сервис, выполняющий фоновую очистку устаревших и удаленных данных: находит через Nylon неактуальные записи в FileDB и инициирует их удаление через Zeptoproxy

Была ли статья полезна?