Виртуальные машины · 3 min read · Jan 05, 2026

VirtualBox: Создание резервных копий и клонов работающих виртуальных машин (без простоя) с помощью снимков LVM

VirtualBox: Создание резервных копий и клонов работающих виртуальных машин (без простоя) с помощью снимков LVM

Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter

Если вы используете LVM-тома для ваших виртуальных машин VirtualBox (как показано в учебнике Использование RAW-устройств в виртуальных машинах VirtualBox), вы можете создать резервные копии и клоны работающей виртуальной машины без ее выключения. Этот учебник показывает именно это: использование снимков LVM для создания резервных копий и клонов работающих виртуальных машин VirtualBox без простоя.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

Поскольку я установил VirtualBox на безголовом сервере, я использую phpvirtualbox в качестве графического интерфейса VirtualBox. Если вы используете оригинальный графический интерфейс VirtualBox, это совершенно нормально.

Моя работающая виртуальная машина (для которой я хочу сделать резервную копию) называется vm10, и она расположена на LVM-томе /dev/vg0/vm10.

Убедитесь, что вы вошли как root (введите

sudo su

чтобы стать root), потому что мы должны выполнять все шаги из этого учебника от имени пользователя root.

2 Создание резервной копии работающей виртуальной машины с помощью снимков LVM

Чтобы создать резервную копию работающей виртуальной машины vm10, я сначала создаю снимок LVM для /dev/vg0/vm10, называемый vm10_snap. Снимки могут быть меньше оригинального тома - 512 МБ, вероятно, будет достаточно, но я использую размер 5 ГБ:

lvcreate -L5G -s -n vm10_snap /dev/vg0/vm10

Затем я использую dd для чтения содержимого из снимка и перенаправляю его в gzip, чтобы создать сжатый резервный образ в директории /backup (вы, конечно, можете использовать любую другую директорию):

dd if=/dev/vg0/vm10_snap bs=64k | gzip -c > /backup/vm10.img.gz

Вот и все - ваша резервная копия vm10 теперь находится в /backup/vm10.img.gz.

Теперь удалите снимок LVM:

lvremove -f /dev/vg0/vm10_snap

3 Восстановление из резервной копии/Клонирование из резервной копии

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

Сначала создайте LVM-том того же размера, что и оригинальный LVM-том (20 ГБ в этом примере):

lvcreate -L20G -n vm11 vg0

Восстановите резервную копию vm10 на новый логический том /dev/vg0/vm11:

gunzip -c /backup/vm10.img.gz | dd of=/dev/vg0/vm11 bs=64k

Затем создайте файл .vmdk для /dev/vg0/vm11 (например, vm11.vmdk), чтобы мы могли использовать его с VirtualBox. Лучше всего создать его в домашней директории пользователя, под которым работает VirtualBox (например, /home/vbox, если вы используете phpvirtualbox) - файл также должен принадлежать этому пользователю:

cd /home/vbox  
 VBoxManage internalcommands createrawvmdk -filename vm11.vmdk -rawdisk /dev/vg0/vm11  
 chown vbox:vbox vm11.vmdk

Затем перейдите в графический интерфейс VirtualBox (оригинальный графический интерфейс VirtulBox или phpvirtualbox) и нажмите на Новый:

Нажмите Далее>> в мастере создания новой виртуальной машины:

Укажите имя новой ВМ и выберите ту же операционную систему и версию, что и у оригинальной ВМ:

Укажите память клона:

На экране виртуального жесткого диска выберите Использовать существующий жесткий диск и нажмите на значок выбора файла виртуального жесткого диска:

Выберите файл vm11.vmdk и нажмите ОК:

Нажмите Далее>>:

Нажмите Создать:

Перед тем как запустить клон, вы можете настроить некоторые параметры, например, если оригинальная ВМ использует мост, вы можете выбрать мост для клона в конфигурации сети:

Теперь нажмите Запустить, чтобы запустить клон:

Во время загрузки вы, вероятно, заметите, что конфигурация сети зависает:

Это происходит потому, что VirtualBox назначил другой MAC-адрес для интерфейса eth0 клона, но файл /etc/udev/rules.d/70-persistent-net.rules клона все еще использует оригинальный MAC-адрес. После завершения загрузки войдите в клон и выполните…

ifconfig

… и вы увидите, что eth0 отсутствует (из-за проблемы с MAC-адресом), что означает, что клон не может использовать сеть:

Чтобы исправить проблему, откройте /etc/udev/rules.d/70-persistent-net.rules в клоне…

vi /etc/udev/rules.d/70-persistent-net.rules

… и закомментируйте строку eth0 (а также строку eth1, которая была добавлена во время загрузки, потому что MAC-адрес eth0 был неправильным). Это гарантирует, что во время следующей загрузки система добавит новую строку eth0 с правильным MAC-адресом.

Теперь перезагрузите клон. После перезагрузки его сеть должна работать, и вы должны увидеть eth0 в выводе

ifconfig

Поздравляю, вы успешно клонировали ВМ без выключения оригинальной ВМ.

4 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.