VK Object Storage logo
Помощь
Обновлена 17 июля 2026 г. в 15:35

Миграция корзины

Сервисы Haron и Orpheus используют для каталогов корзины (old, orphan, missed, corrupted, manual) плоскую модель хранения файлов (все файлы в одном каталоге). Для ускорения работы сервисов, унификации модели хранения и снижения нагрузки на файловую систему в дополнение к изменениям в самих сервисах используется утилита storage_recycle_migrator, которая выполняет преобразование каталогов корзины из вида /old/DATETIME_AABBCCDD в вид /old/AA/BB/DATETIME_AABBCCDD.

Параметры запуска storage_recycle_migrator:

  • path — путь к корневому каталогу хранилища, по умолчанию /storage.

  • mode— доступные значения: сheck (по умолчанию) или migrate.

  • delay — значение задержки (например: 1ms, 10µs или 100ns), по умолчанию: 0 (то есть без задержки между двумя последовательными переименованиями файлов).

Порядок миграции:

  1. Перед запуском утилиты проверьте, под каким пользователем или группой созданы подкаталоги в /storage (по умолчанию nobody:nobody).

  2. Установите на файл storage_recycle_migrator нужные права доступа:

    $ ash storage "sudo chown nobody:nobody /usr/bin/storage_recycle_migrator"$ ash storage "sudo chmod +s /usr/bin/storage_recycle_migrator"
  3. Выполните последовательно на каждом Storage-сервере:

    1. Отключите службы проверки целостности и восстановления Orpheus и Haron:

      $ ash storage01 "sudo systemctl stop haron && sudo systemctl stop orpheus"
    2. Запустите проверку каталогов (после завершения проверки отобразятся файлы для миграции):

      $ ash storage01 "/usr/bin/storage_recycle_migrator"
    3. Запустите миграцию:

      $ ash storage01 "/usr/bin/storage_recycle_migrator -mode=migrate"

      В случае значительного уменьшения пропускной способности хранилища можно передать параметр delay (подбирается эмпирическим путем), например:

      $ ash storage01 "/usr/bin/storage_recycle_migrator -mode=migrate -delay=1000ns"
  4. Измените необходимые параметры в конфигурационном файле и перезапустите сервисы:

    $ sed -i "s/storage_daemons_recycle_subfolders: false/storage_daemons_recycle_subfolders: true/" /deploy/installer/group_vars/all/main.yml$ sudo -E ./01_deploy_helper.sh ansible-playbook -i inventory.yml -e @ansible-vault.yml -e @vault-transit -e @vault vk.s3.storage_daemons --tags install_task