Виртуальные машины · 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_snap3 Восстановление из резервной копии/Клонирование из резервной копии
Восстановление и клонирование по сути одно и то же, поэтому я покажу, как создать клон под названием 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 Ссылки
- VirtualBox: http://www.virtualbox.org/
- phpvirtualbox: http://code.google.com/p/phpvirtualbox/
Get new posts in your inbox
No spam. Unsubscribe anytime.