Бесшовная миграция с внешнего S3

Назначение

Бесшовная миграция позволяет перевести клиентов с действующего S3-хранилища (например, MinIO) на ЗАКРОМА.Хранение с минимальным простоем — не более 15–30 минут на всю операцию переключения.

Клиентские приложения продолжают работу без остановки: пока перенос данных не запущен, все запросы прозрачно проксируются на хранилище-источник; после запуска переноса уже перенесённые файлы читаются из Закрома, а файлы, которые ещё не перенесены, остаются доступны для чтения через прокси.

Два вида миграции

Данная статья описывает перенос данных с внешнего S3-хранилища в Закрома. Если вам нужно перенести данные между группами хранения внутри Закрома — используйте Миграцию данных.

Сценарий 1: Переключение клиента, работающего с бакетом

Требования

  • Хранилище-источник (тип S3) должно быть заранее подключено в разделе «Хранилища».
  • Bucket с данными должен быть заранее создан на хранилище-источнике — Закрома не создаёт его автоматически.
  • В бакете Закрома не должно быть вольюмов «Только для чтения» (проверяется при запуске переноса данных).
  • На одном бакете может существовать только один прокси.

Шаги

1. Создайте новый бакет с подключением к хранилищу-источнику

Перейдите в нужную рабочую область → вкладку «Buckets» → нажмите кнопку создания нового бакета. В открывшейся форме «Создание bucket»:

  1. Наименование — укажите уникальное имя нового бакета в Закрома (только строчные латинские буквы, цифры и дефисы).
  2. Активируйте чекбокс «Подключить хранилище-источник для миграции».
  3. Хранилище-источник — выберите ранее подключённое S3-хранилище (например, ваш MinIO).
  4. Bucket — укажите имя bucket’а на хранилище-источнике.
  5. Путь в bucket (опционально) — укажите префикс пути к данным внутри указанного bucket’а на хранилище-источнике.
  6. Версия структуры данных — выберите версию (v1 или v2, по умолчанию v1).
  7. Нажмите Сохранить.

image

Bucket на источнике должен существовать заранее

Bucket, указанный в поле «Bucket», должен быть заранее создан на хранилище-источнике — Закрома не создаёт его автоматически.

После сохранения система создаёт новый бакет и переводит его в режим проксирования: данные физически остаются на хранилище-источнике, а Закрома прозрачно перенаправляет туда все запросы к бакету, выступая управляющим слоем.

Консистентность данных

Пока бакет работает в режиме проксирования, все запросы к соответствующему bucket’у (или префиксу) на хранилище-источнике должны выполняться через S3 API Закрома. Прямые обращения к хранилищу-источнику в обход Закрома могут привести к потере консистентности данных при последующем переносе.

2. Добавьте целевую группу хранения

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

3. Создайте пользователя и настройте права доступа

Создайте пользователя и права доступа для работы с новым бакетом.

4. Переключите клиентские приложения

В клиентском S3-приложении укажите новые параметры подключения:

  • Endpoint — адрес Закрома Gateway
  • Access key / Secret key — ключи доступа в Закрома
  • Bucket — имя бакета, созданного на шаге 1

5. Запустите перенос данных

Когда будете готовы физически перенести данные с хранилища-источника в Закрома:

  1. Откройте бакет → вкладку «Настройка хранения».
  2. В блоке «Хранилище-источник» нажмите на иконку контекстного меню в строке с параметрами подключения.
  3. Выберите «Мигрировать данные».
  4. Система откроет диалог «Миграция данных» с вопросом «Вы уверены, что хотите начать миграцию данных?» и предупреждением: «После запуска миграцию невозможно прервать. Редактирование параметров подключения будет недоступно.»
  5. При необходимости включите чекбокс «Пропускать ошибки скачивания с прокси» (по умолчанию выключен) и нажмите Мигрировать.
  6. Система блокирует редактирование параметров подключения (контекстное меню скрывается) и запускает фоновый процесс переноса данных с хранилища-источника в целевое хранилище.

image

Пропускать ошибки скачивания с прокси

Чекбокс «Пропускать ошибки скачивания с прокси» (по умолчанию выключен) позволяет не прерывать перенос данных из-за ошибок скачивания объектов с хранилища-источника. Ошибки игнорируются только на последнем повторе попытки скачивания — ошибки установления соединения с хранилищем не игнорируются, пропускаются только ошибки, которые вернул сервер хранилища. Файлы, которые не удалось скачать из-за ошибки, будут потеряны.

Когда перенос запустить нельзя

Система заблокирует запуск и покажет уведомление, если в бакете нет ни одной группы хранения или если в бакете есть вольюмы «Только для чтения».

Поведение бакета в режиме проксирования (до запуска переноса)

Пока перенос данных не запущен, все запросы к бакету — чтение, запись, листинг — прозрачно перенаправляются на хранилище-источник: Закрома выступает управляющим слоем, физически данные остаются на источнике.

Поведение во время переноса данных

Перенос выполняется порциями в фоновом режиме. Уже перенесённые файлы читаются из целевого хранилища Закрома. Файлы, которые ещё не перенесены, остаются доступны для чтения благодаря сохраняющейся на этом этапе части функциональности проксирования — запрос прозрачно уходит на хранилище-источник. Клиент не замечает переключения.

Редактирование параметров подключения

Пока перенос данных не запущен, параметры подключения к хранилищу-источнику можно изменить:

  1. Откройте бакет → вкладку «Настройка хранения».
  2. В блоке «Хранилище-источник» нажмите на иконку контекстного меню в строке с параметрами подключения.
  3. Выберите «Редактировать».
  4. Обновите доступные для редактирования параметры и нажмите Сохранить.

Все новые запросы к бакету будут направляться в соответствии с обновлёнными параметрами подключения. Файлы, загруженные до изменения настроек, становятся недоступны.

Завершение переноса

По завершении переноса данных система автоматически:

  • удаляет прокси (соединение с хранилищем-источником);
  • скрывает блок «Хранилище-источник»;
  • скрывает заголовок «Настройки хранения» — группы хранения остаются в общем списке бакета уже без отдельного заголовка, как в обычном бакете.

Бакет продолжает работу как обычный бакет Закрома. Данные на хранилище-источнике не удаляются автоматически — при необходимости удалите их вручную.


Ограничения

  • На одном бакете — только один прокси.
  • Во время переноса данных нельзя изменять конфигурацию бакета (группы хранения, политики), включая параметры подключения к хранилищу-источнику — контекстное меню редактирования скрывается до завершения переноса.
  • Запущенный перенос данных нельзя прервать и нельзя вернуться на предыдущий этап (проксирование). Процесс продолжается до успешного завершения, после чего прокси удаляется автоматически.
Версии объектов

Если версионирование включено, версии объектов при миграции переносятся.