Назад | Перейти на главную страницу

QEMU / KVM Не могу загрузить мою виртуальную машину после сохранения / восстановления

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

virsh save VM чтобы сохранить состояние vm и восстановить его позже: virsh restore VM. Все работало нормально, поэтому я снова мог получить доступ к своей виртуальной машине. Тем временем я стер файл, созданный при запуске virsh save поскольку я думал (и все еще думаю), что после восстановления виртуальная машина больше не нужна.

Через час моя виртуальная машина зависла, и мне не удалось ее снова загрузить. Как правильно сохранять и восстанавливать работающие виртуальные машины?

Итак, с вашим вопросом, «Как правильно сохранять и восстанавливать работающие виртуальные машины?» вы в значительной степени прибили это по голове. Экономия с virsh save VM и восстановление с virsh restore VM будет делать то, что вы хотели, - это сохранять память на диск, а затем останавливать виртуальную машину (см. первый раздел эта ссылка).

Когда ваша виртуальная машина зависла, я считаю, что вы могли бы восстановить, если бы не удалили файл состояния (в первую очередь, в зависимости от основной причины сбоя виртуальной машины).

Обычно я не сохраняю память для файлов состояния, потому что в моем варианте использования выполняются постоянные службы без отслеживания состояния, которые не зависят от памяти. Если мне нужно выключиться, я обычно просто бегу virsh destroy VM а затем запустите его по мере необходимости. Но все это зависит от вашего собственного варианта использования.

Вы также можете изучить возможность резервного копирования виртуальной машины с помощью снимков, если вы опасаетесь снова потерять свою машину. Что-то вроде:

virsh snapshot-create-as --domain {VM-NAME} --name "{SNAPSHOT-NAME}"

Смотрите NixCraft Больше подробностей.


В любом случае, чтобы ваша виртуальная машина работала после ее зависания, вы могли бы просто отменить определение сломанной виртуальной машины и повторно прикрепить изначально существующий образ с нее к новой виртуальной машине, обновив XML-документ конфигурации вновь созданной виртуальной машины. Сначала удалите исходную виртуальную машину:

:~$ virsh destroy OriginalVM
:~$ virsh undefine OriginalVM

После этого создайте новую виртуальную машину, остановите ее и войдите в конфигурацию:

:~$ virt-install --virt-type kvm --name NewVM --memory 4096 --disk size=1 --vcpus 4 --location /yadda/yadda.iso --network bridge=br0 --os-type=linux --so-on-and-so-forth
:~$ virsh destroy NewVM
:~$ virsh edit NewVM

Затем при редактировании XML-файла найдите «диск», набрав /disk и обновите путь к исходному файлу:

 <disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/update_to/path_of/OriginalVM.img'/>

После сохранения и выхода (:w, :q или просто :x) вы сможете выполнить virsh start NewVM а затем получите доступ к новой виртуальной машине, на которой запущен ваш образ, через VNC, консоль или ssh.

Вы также можете попробовать клонировать вашу виртуальную машину, хотя сам не пробовал:

virt-clone --connect=qemu:///system -o srchost -n newhost -f /path/to/newhost.qcow2