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

Администрирование мультитиринга

Администрирование мультитиринга включает управление конфигурацией классов хранения через API Hilt, активацию приватных классов хранения для проектов и управление сервисом фоновой миграции между тирами.

В разделе:

Администрирование конфигурации классов хранения

Конфигурацией логических классов и физических тиров (см. Класс хранения (Storage Class)) управляет API Hilt.

Логические классы

Таблица 1 — API управления логическими классами хранения

Метод

Endpoint

Описание

POST

/v1/storage_classes/logical

Создать новый логический класс

GET

/v1/storage_classes/logical

Получить список всех логических классов

GET

/v1/storage_classes/logical/{id}

Получить конфигурацию логического класса

POST

/v1/storage_classes/logical/{id}

Обновить конфигурацию логического класса

DELETE

/v1/storage_classes/logical/{id}

Удалить логический класс

Пример тела запроса на создание логического класса:

{  "id": "ST",  "name": "STANDARD",  "physical_id": "HOT",  "allowed_transitions": ["IA", "GL"],  "feature": {    "compression": "",    "private": false,    "min_storage_days": 0,    "restored": false  }}

Физические тиры

Таблица 2 — API управления физическими тирами

Метод

Endpoint

Описание

POST

/v1/storage_classes/physical

Создать новый физический тир

GET

/v1/storage_classes/physical

Получить список всех физических тиров

GET

/v1/storage_classes/physical/{id}

Получить конфигурацию физического тира

POST

/v1/storage_classes/physical/{id}

Обновить конфигурацию физического тира

DELETE

/v1/storage_classes/physical/{id}

Удалить физический тир

Пример тела запроса на создание физического тира:

{  "id": "HOT",  "name": "Hot storage",  "api_urls": ["http://storage-api-hot:8080"],  "nylon_etcd_prefix": "/nylon/hot",  "auth": {    "type": "none"  }}

Активация приватных классов хранения для проекта

Класс хранения с атрибутом feature.private = true (см. Атрибуты класса хранения) недоступен для использования на проектах по умолчанию: нельзя указать такой класс в PUT/CopyObject, пока администратор не активирует его для конкретного проекта.

Активация и деактивация приватного класса для проекта выполняется через API Hilt:

  • POST /v2/projects/storage_class/activate — активировать приватный класс для проекта;
  • POST /v2/projects/storage_class/deactivate — деактивировать приватный класс для проекта.

Управление сервисом миграции между тирами

Фоновая миграция объектов (см. Фоновая миграция объектов между тирами) выполняется отдельным сервисом, запускаемым администратором по требованию (on demand) с указанием логического класса хранения.

Администрирование выполняется через команды hb storage migrate (алиас mg):

  • create — создание задачи миграции;
  • delete — удаление задачи миграции;
  • info — получение информации о задачах миграции;
  • list — список задач миграции;
  • list-shards — список доступных шардов Matter из Etcd;
  • retry — повтор неудавшейся или остановленной задачи миграции;
  • stop — остановка или приостановка задачи миграции (удержание состояния).

Подробное описание каждой подкоманды см. в Операции со Storage.

Ограничение нагрузки при миграции

Нагрузку от миграции на Matter и Storage ограничивает Pacer — набор лимитеров, настраиваемых через конфигурацию сервиса миграции (sc-migrate-worker) при запуске.

Таблица 3 — Параметры ограничения нагрузки Pacer

Параметр

Описание

pacer.select_rps

Максимальный RPS SELECT-запросов к Matter (чтение с реплики), целое число. Применяется один раз на вызов SelectObjects — то есть один раз на батч объектов, а не на каждый объект, и один раз на ObjectCount при подсчете суммы на первой итерации по шарду. Значение 0 отключает лимит

pacer.update_rps

Максимальный RPS UPDATE-запросов к Matter (запись на мастер), целое число. Применяется один раз на каждый успешно смигрированный объект, в UpdatePclass. Значение 0 отключает лимит. Этот параметр стоит использовать, чтобы защитить мастер Matter от всплеска записи при массовом обновлении pclass

pacer.throughput_limit

Максимальная суммарная скорость передачи данных между тирами через Storage, байт в секунду (не RPS), целое число. Значение 0 или отрицательное отключает лимит. Ожидаемое время работы миграции рассчитывается как суммарный объем данных в байтах, деленный на pacer.throughput_limit

Отдельно от Pacer частоту запросов к Storage при переносе данных объекта между тирами ограничивает параметр migrate.rate_limit (целое число, запросов в секунду). Он работает как токен-бакет с burst=1: первый запрос уходит немедленно, далее — не чаще N запросов в секунду. Значение 0 или отсутствие значения снимает лимит, по умолчанию — 100. Этот параметр стоит настраивать, чтобы защитить Storage-ноды от всплеска PUT/GET-запросов при массовой миграции.

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