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