Skip to content

Выполнение экспорта диска ВМ или образа диска из облачного каталога в Yandex Object Storage. В результате в Object Storage создается файл с образом диска в формате qcow2.

License

Notifications You must be signed in to change notification settings

yandex-cloud-examples/yc-disk-export-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yandex Cloud Disk Export Tool

Оглавление

Обзор

Инструмент может:

В результате работы инструмента в указанном bucket S3-хранилища будет создан файл с образом диска в формате qcow2.

Описание процесса

Экспорт работает следующим образом:

  1. Создаётся диск для ВМ из снимка диска или из образа диска (в зависимости от выбранного режима работы инструмента).

  2. В каталоге заданном при инициализации создаётся Export Helper ВМ к которой подключается диск, созданный на первом этапе.

  3. В ВМ выполнется чтение данных с дополнительного диска и создание его образа с помощью инструмента qemu-img.

  4. Полученный образ диска загружается в Yandex Object Storage с помощью инструмента Amazon CLI version 2.

  5. После выполнения всех вышеописанных действий ВМ самоликвидируется с помощью API вызова.

По мере выполнения задач в рамках процесса инструмент пишет диагностические сообщения в группу Default сервиса Cloud Logging.

Права доступа и роли

Для развёртывания инструмента и его запуска требуется определенный набор полномочий (ролей) в Yandex Cloud.

При подготовке инструмента к работе, в указанном при инициализации каталоге создаётся Service Account со следуюшим набором ролей:

Далее этот SA привязывается к Export Helper ВМ.

Подготовка инструмента к работе

Для работы инструмента необходимо использовать операционную систему Linux или MacOS.

Работа инструмента в среде Windows Subsystem for Linux (WSL) не гарантируется!

Перед использованием инструмент нужно развернуть и подготовить к работе (выполнить инциализацию). Для этого необходимо:

  1. Убедиться, что все необходимые инструменты установлены и настроены:
  1. Загрузить решение из репозитория на github.com:
git clone https://github.com/yandex-cloud-examples/yc-disk-export-tool.git
  1. Перейти в папку с инструментом
cd yc-disk-export-tool.git
  1. Запустить инициализацию инструмента

Инициализация выполняется только один раз, выполнять его перед каждым запуском инструмента не нужно!

./init.sh <folder-id> <bucket-name> <sa-name> <subnet-name> <config-file>

Для инциализации нужно указать следующие обязательные параметры:

  • folder-id - идентификатор каталога облачных ресурсов в Yandex Cloud где будут развернуты ресурсы, необходимые для работы инструмента. У пользователя, запускающего процесс инициализации, должны быть права администратора в данном каталоге.
  • bucket-name - название bucket (имя папки) в Yandex Object Storage куда будут загружаться резервные копии.
  • sa-name - имя сервисной учетной записи, которая будет привязана к Export Helper ВМ от имени которой будут выполняться операции по работе с S3 bucket.
  • subnet - имя подсети к которой будет подключаться Export Helper ВМ.
  • config-file - имя файла конфигурации (полный путь, если нужно) в формате JSON, в который будут записаны все нужные для работы инструмента параметры. Путь к файлу конфигурации нужно будет указывать при запуске инструмента.

Порядок использования

Перед началом использования, убедитесь, что инструмент подготовлен к работе.

./yc-disk-export.sh <source-type> <folder-id> <source-name> <config-file>

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

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

  • source-type - тип источника данных. Определяет режим работы инструмента. Может принимать значения: disk или image в зависимости от типа ресурса для которого будет выполняться резервное копирование.
  • folder-id - идентификатор каталога облачных ресурсов в Yandex Cloud где находится источник данных.
  • source-name - имя ресурса источника данных в указанном каталоге облачных ресурсов:
    • для источника типа disk - это название ВМ
    • для источника типа image - это название образа
  • config-file - путь к файлу конфигурации, созданный при инициализации инструмента.

Примеры использования

Инициализация

./init.sh b1g22jx2133dpa3yvxc3 my-s3-bucket disk-export-sa subnet-a ./disk-export.cfg

Экспорт диска ВМ

./yc-disk-export.sh disk b1g22jx2133dpa3yvxc3 my-vm ./disk-export.cfg

Экспорт образа диска

./yc-disk-export.sh image b1g22jx2133dpa3yvxc3 win-image ./disk-export.cfg

Проверка созданного образа (необязательно)

При необходимости можно проверить созданный образ на работоспособность, развернув ВМ из этого образа локально.

Ниже представлен пример запуска ВМ из образа на компьютере с ОС MacOS и инструментом qemu:

qemu-system-x86_64 -name my-test-vm \
  -machine accel=hvf,type=q35 -cpu host -m 4G -nographic \
  -device virtio-net-pci,netdev=net0 \
  -netdev user,id=net0,hostfwd=tcp::2222-:22 \
  -drive if=virtio,format=qcow2,file=my-vm.qcow2

После запуска ВМ к ней можно будет подключиться как через консоль, так и по протоколу SSH - ssh -p 2222 admin-user@localhost.

Подключение к Export Helper ВМ по SSH

В случае возникновения нестандартных ситуаций может потребоваться доступ к Export Helper ВМ по протоколу SSH. По умолчанию доступ к ВМ по протоколу SSH отключен.

Для организации доступа к ВМ по протоколу SSH, перед запуском иструмента необходимо:

  1. Раскомментировать часть users: в файле шаблона создания ВМ - vm-init.tpl (строки 7-12).
  2. Задать имя пользователя и SSH-ключ для доступа через переменные окружения, как показано в примере ниже.
# Задать переменные окружения для доступа к Export Helper VM по SSH
export USER_NAME=admin
export USER_SSH_KEY=$(cat ~/.ssh/id_ed25519.pub)

# Запустить инструмент
./yc-disk-export.sh disk b1g22jx2133dpa3yvxc3 my-vm ./disk-export.cfg

# Подключиться к Export Helper VM
ssh admin@<helper-vm-public-ip>

About

Выполнение экспорта диска ВМ или образа диска из облачного каталога в Yandex Object Storage. В результате в Object Storage создается файл с образом диска в формате qcow2.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published