bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Як правильно клонувати віртуальну машину?

calendar_month October 07, 2025 schedule 9 хв. читання visibility 842 переглядів
person
Valebyte Team
Як правильно клонувати віртуальну машину?
summarize

TL;DR

  • Клонирование через снимки (snapshots) экономит место, записывая только изменения в delta-диски.
  • Метод связанных клонов выполняется быстрее полного копирования, сокращая время развертывания ВМ.
  • Для автоматизации массового клонирования в VMware и Proxmox рекомендуется использовать Terraform.
  • Использование снимков минимизирует нагрузку на дисковую подсистему по сравнению с полным клонированием.

Як клонувати віртуальну машину: детальний посібник зі створення знімків миттєвого стану

Клонування віртуальної машини (ВМ) – це критично важлива операція для тестування, резервного копіювання та швидкого розгортання ідентичних середовищ. Однак повне клонування, особливо великих ВМ, може займати значний час та дисковий простір. У цій статті ми детально розглянемо більш ефективний метод: створення знімків миттєвого стану (snapshots) і клонування на їх основі. Ми розглянемо різні сценарії, інструменти та передові практики для ефективного використання цього методу, забезпечуючи швидке та надійне клонування ваших ВМ.

Зміст:

  1. Переваги клонування на основі знімків миттєвого стану
  2. Створення знімка миттєвого стану у VMware ESXi
  3. Клонування ВМ зі знімка у Proxmox VE
  4. Автоматизація процесу клонування за допомогою Terraform
  5. Управління та зберігання знімків: передові практики

Переваги клонування на основі знімків миттєвого стану

Как клонировать виртуальную машину? - Сравнение полного клонирования и клонирования на основе снимков
Традиційне клонування ВМ передбачає створення повної копії віртуального диска. Це може бути ресурсомістким процесом, особливо для великих ВМ. Знімки миттєвого стану, навпаки, фіксують стан ВМ в певний момент часу. При клонуванні на основі знімка створюється нова ВМ, яка посилається на початковий знімок, а всі зміни записуються в окремий файл (delta disk). Це призводить до наступних переваг:
  • Економія часу: Створення знімка і клонування з нього відбувається значно швидше, ніж повне клонування, особливо для великих ВМ.
  • Економія дискового простору: Клонування на основі знімка займає менше місця, оскільки не потребує повної копії диска. Зміни записуються тільки в delta disk.
  • Швидке відновлення: Можливість швидкого відкату до попереднього стану ВМ, що корисно при тестуванні і розробці.
  • Не впливає на продуктивність основної ВМ: Створення знімка має мінімальний вплив на продуктивність основної ВМ, на відміну від повного клонування. Однак, тривале зберігання і велика кількість знімків можуть впливати на продуктивність.
Приклад 1: Розробка і тестування Припустимо, у вас є Production ВМ з веб-сервером і базою даних. Ви хочете протестувати оновлення програми, не ризикуючи порушити роботу Production. Створіть знімок ВМ, клонуйте її зі знімка, і протестуйте оновлення в клонованому середовищі. Якщо щось піде не так, ви можете просто видалити клоновану ВМ і повернутися до початкового знімка. Приклад 2: Резервне копіювання перед важливими змінами Перед встановленням важливого оновлення операційної системи або програми, створіть знімок ВМ. Якщо оновлення призведе до проблем, ви зможете швидко повернутися до початкового стану, відкотившись до знімка. Приклад 3: Створення декількох ідентичних середовищ Для розгортання масштабованого веб-додатка вам може знадобитися кілька ідентичних ВМ. Створіть одну ВМ, налаштуйте її, створіть знімок, а потім клонуйте її зі знімка потрібну кількість разів. Це набагато швидше, ніж налаштовувати кожну ВМ з нуля.

Створення знімка миттєвого стану у VMware ESXi

Как клонировать виртуальную машину? - Интерфейс VMware vSphere Client для создания снимков
VMware ESXi надає зручний графічний інтерфейс vSphere Client для керування знімками. Крім того, можна використовувати командний рядок (ESXi Shell) або vCLI (VMware Command-Line Interface). Створення знімка через vSphere Client:
  • Увійдіть до vSphere Client і підключіться до ESXi хосту або vCenter Server.
  • Оберіть ВМ, для якої хочете створити знімок.
  • Клікніть правою кнопкою миші на ВМ і виберіть "Snapshots" -> "Take Snapshot...".
  • Введіть ім'я та опис знімка.
  • Оберіть опцію "Memory" (включити пам'ять ВМ у знімок) за необхідності. Включення пам'яті збільшує розмір знімка і час його створення, але дозволяє повернутися до точного стану ВМ, включаючи стан запущених програм.
  • Клікніть "OK".
Створення знімка через командний рядок (ESXi Shell):
vim-cmd vmfs/snapshot/create 

Де - це ID вашої віртуальної машини. Щоб дізнатися ID, можна використовувати команду:

vim-cmd vmsvc/getallvms

Повний приклад:

vim-cmd vmfs/snapshot/create 123 snapshot-name snapshot-description 0 0

У цій команді:

  • 123 - ID віртуальної машини.
  • snapshot-name - Ім'я знімка.
  • snapshot-description - Опис знімка.
  • 0 - Включити пам'ять (0 - ні, 1 - так).
  • 0 - Quiesce (0 - ні, 1 - так). Quiesce намагається призупинити файлову систему гостьової ОС для забезпечення консистентності даних. Потребує встановлених VMware Tools.
Створення знімка через vCLI:
vmware-cmd 

Де - це шлях до конфігураційного файлу ВМ (.vmx). Наприклад:

vmware-cmd /vmfs/volumes/datastore1/MyVM/MyVM.vmx createsnapshot "SnapshotName" "SnapshotDescription" 0 0

Ця команда робить те ж саме, що і приклад з ESXi Shell, але виконується з клієнтської машини, де встановлено vCLI.

Потрібен надійний VPS для ваших клонованих ВМ?

Забезпечте безперебійну роботу ваших віртуальних машин з нашими високопродуктивними VPS-планами. Ідеально для масштабування і тестування. — from €4.49/mo.

Вибрати VPS-план →
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Клонування ВМ зі знімка у Proxmox VE

Proxmox VE також підтримує створення знімків і клонування з них. Процес клонування зі знімка в Proxmox VE трохи відрізняється від VMware, але також відносно простий. Створення знімка в Proxmox VE:
  • Увійдіть у веб-інтерфейс Proxmox VE.
  • Виберіть ВМ, для якої хочете створити знімок.
  • Перейдіть на вкладку "Snapshots".
  • Натисніть кнопку "Take Snapshot".
  • Введіть ім'я знімка та опис (опціонально).
  • Натисніть кнопку "Take Snapshot".
Клонування ВМ зі знімка в Proxmox VE (через веб-інтерфейс):
  • Виберіть ВМ, яку ви хочете клонувати зі знімка.
  • Перейдіть на вкладку "Snapshots".
  • Виберіть знімок, з якого хочете клонувати.
  • Натисніть кнопку "Clone".
  • У вікні, що з'явиться, вкажіть:
    • "Target Storage": виберіть сховище для клонованої ВМ.
    • "VMID": вкажіть новий ID для клонованої ВМ (має бути унікальним).
    • "Name": вкажіть ім'я для клонованої ВМ.
    • "Mode": виберіть "Full Clone" (створить повну копію диска) або "Linked Clone" (створить клон, який посилається на вихідний знімок, займаючи менше місця, але залежний від вихідного знімка). Для клонування зі знімка рекомендовано "Linked Clone".
    • "Target Node": виберіть ноду, на якій буде запущена клонована ВМ.
    • "Start after creation": запустити клоновану ВМ одразу після створення.
  • Натисніть кнопку "Clone".
Клонування ВМ зі знімка в Proxmox VE (через командний рядок):
qm clone  --newid  --name  --storage  --snapshot 

Наприклад:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1

У цій команді:

  • 100 - ID вихідної ВМ.
  • 200 - ID клонованої ВМ.
  • clonevm - Ім'я клонованої ВМ.
  • local-lvm - Ім'я сховища, де буде розміщена клонована ВМ.
  • snap1 - Ім'я знімка, з якого буде клонована ВМ.

Для створення linked clone, додайте опцію --linked 1:

qm clone 100 --newid 200 --name clonevm --storage local-lvm --snapshot snap1 --linked 1
Важливо: При використанні linked clone, видалення вихідного знімка призведе до пошкодження клонованої ВМ.

Автоматизація процесу клонування за допомогою Terraform

Terraform – це потужний інструмент Infrastructure as Code (IaC), який дозволяє автоматизувати створення, зміну та управління інфраструктурою, включаючи віртуальні машини. Використання Terraform для клонування ВМ дозволяє зробити цей процес повторюваним, передбачуваним та автоматизованим. Ми розглянемо приклад автоматизації клонування ВМ у VMware vSphere. Попередні вимоги:
  • Встановлений Terraform.
  • Налаштований провайдер VMware vSphere для Terraform.
  • Акаунт з достатніми правами в vSphere.
Приклад Terraform конфігурації:
resource "vsphere_virtual_machine" "template_vm" {
  name             = "template-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  disk {
    label            = "disk0"
    size             = 20
    eagerly_scrub = false
    thin_provisioned = true
  }
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "cloned-vm"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = vsphere_virtual_machine.template_vm.id

    customize {
      linux_options {
        host_name = "cloned-vm"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.100"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

У цьому прикладі:

  • vsphere_virtual_machine "template_vm" - Визначає вихідну ВМ (шаблон), з якої буде проводитися клонування. В даному прикладі створюється нова ВМ "template-vm". В реальному сценарії можна використовувати існуючу ВМ.
  • vsphere_virtual_machine "cloned_vm" - Визначає клоновану ВМ "cloned-vm".
  • clone { template_uuid = vsphere_virtual_machine.template_vm.id } - Вказує, що ВМ "cloned-vm" має бути клонована з ВМ "template_vm". template_uuid вказує на ID вихідної ВМ.
  • customize - Дозволяє налаштувати параметри клонованої ВМ, такі як ім'я хоста, IP-адреса та шлюз. Це важливо для уникнення конфліктів IP-адрес та імен в мережі.
Автоматизація клонування зі знімка (з використанням snapshot_uuid):
data "vsphere_virtual_machine" "template_vm" {
  name          = "MyTemplateVM"
}

data "vsphere_virtual_machine_snapshot" "latest_snapshot" {
  virtual_machine_uuid = data.vsphere_virtual_machine.template_vm.id
  sort               = "modify_time_descending"
  most_recent        = true
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "ClonedVMFromSnapshot"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = 2
  memory   = 4096

  guest_id = "ubuntu64Guest"

  network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "e1000e"
  }

  clone {
    template_uuid = data.vsphere_virtual_machine.template_vm.id
    snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id

    customize {
      linux_options {
        host_name = "ClonedVMFromSnapshot"
        domain    = "example.com"
      }

      network_interface {
        ipv4_address = "192.168.1.101"
        ipv4_netmask = 24
      }

      ipv4_gateway = "192.168.1.1"
    }
  }
}

У цьому прикладі:

  • data "vsphere_virtual_machine" "template_vm" - Отримує інформацію про існуючу ВМ "MyTemplateVM".
  • data "vsphere_virtual_machine_snapshot" "latest_snapshot" - Отримує інформацію про останній знімок цієї ВМ.
  • clone { snapshot_uuid = data.vsphere_virtual_machine_snapshot.latest_snapshot.id } - Вказує, що клонування має бути виконане з вказаного знімка.
Запуск Terraform:
  • Збережіть конфігурацію в файл, наприклад, main.tf.
  • Виконайте команду terraform init для ініціалізації Terraform.
  • Виконайте команду terraform plan для перегляду змін, які будуть внесені.
  • Виконайте команду terraform apply для застосування конфігурації та створення клонованої ВМ.
Автоматизація за допомогою Terraform значно спрощує процес клонування ВМ, особливо у великих інфраструктурах. Цей підхід дозволяє легко масштабувати та управляти вашими віртуальними машинами.

Управління та зберігання знімків: передові практики

Знімки моментального стану – це потужний інструмент, але неправильне управління ними може призвести до проблем з продуктивністю та нестачі дискового простору. Важливо дотримуватися передових практик для управління та зберігання знімків. Передові практики:
  • Обмежте кількість знімків: Намагайтеся не створювати занадто багато знімків для однієї ВМ. Велика кількість знімків може значно знизити продуктивність ВМ і збільшити час відкоту до знімку. Рекомендується не більше 2-3 знімків на ВМ.
  • Обмежте час зберігання знімків: Знімки не призначені для довгострокового зберігання. Використовуйте їх лише для короткочасних завдань, таких як тестування або резервне копіювання перед важливими змінами. Видаляйте знімки, як тільки вони більше не потрібні. Рекомендується зберігати знімки не більше 72 годин.
  • Моніторинг дискового простору: Регулярно перевіряйте використання дискового простору, особливо на сховищах, де зберігаються знімки. Знімки можуть швидко займати багато місця, що може призвести до проблем з продуктивністю та стабільністю. Використовуйте інструменти моніторингу, які надає ваша платформа віртуалізації, для відстеження використання дискового простору.
  • Плануйте видалення знімків: Розробіть план з видалення старих знімків. Наприклад, можна встановити правило, яке автоматично видаляє знімки старше певного віку.
  • Уникайте знімків на виробничих ВМ: За можливості, уникайте створення знімків на виробничих ВМ, особливо під час пікових навантажень. Створення знімку може призвести до короткочасної зупинки ВМ, що може вплинути на доступність сервісу. Якщо необхідно створити знімок на виробничій ВМ, плануйте це на час мінімального навантаження.
  • Використовуйте повне клонування для довгострокового резервного копіювання: Знімки не є заміною повноцінному резервному копіюванню. Для довгострокового зберігання даних використовуйте повне клонування або інші методи резервного копіювання.
  • Розуміння типів знімків: Знайте різницю між знімками з пам'яттю і без пам'яті. Знімки з пам'яттю корисні для відкоту до точного стану ВМ, включаючи стан запущених програм, але вони займають більше місця і вимагають більше часу на створення.
Приклад: Моніторинг дискового простору в VMware vSphere:
  • Увійдіть до vSphere Client.
  • Виберіть сховище (datastore), яке ви хочете перевірити.
  • Перейдіть на вкладку "Monitor" -> "Performance".
  • Виберіть "Disk" у випадаючому списку "Chart options".
  • Перевірте графіки "Used space" і "Free space".
Приклад: Видалення старих знімків в Proxmox VE (через командний рядок):
qm snapshot-delete   

Де - це ID ВМ і - ім'я знімку, який потрібно видалити. Наприклад:

qm snapshot-delete 100 snap1

Ця команда видалить знімок "snap1" у ВМ з ID 100.

Дотримуючись цих передових практик, ви зможете ефективно керувати знімками моментального стану і уникнути проблем, пов'язаних з їх використанням. Правильне управління знімками допоможе вам підтримувати високу продуктивність і стабільність вашої віртуальної інфраструктури.

Масштабуйте свої проєкти з хмарними інстансами

Перенесіть свої клоновані ВМ у хмару для максимальної гнучкості та масштабованості. Створюйте та керуйте інстансами легко.

Почати з хмари →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.