Portanto, com sua pergunta, "Qual é a maneira correta de salvar e restaurar as VMs em execução?" você praticamente acertou na cabeça. Salvar com virsh save VM
e restaurar com virsh restore VM
fará o que você queria - salvar a memória no disco e interromper a VM (veja a primeira seção de este link ).
Quando sua VM congelou, acredito que você poderia restaurar se não tivesse excluído o arquivo de estado (dependendo da causa raiz da falha da VM, em primeiro lugar).
Eu geralmente não salvo memória para arquivos de estado porque meu caso de uso executa serviços persistentes e sem estado que não dependem da memória. Se eu precisar desligar, normalmente corro virsh destroy VM
e depois inicio conforme necessário. Mas tudo depende do seu próprio caso de uso.
Você também pode querer fazer o backup de sua VM com instantâneos, se estiver desconfiado de perder sua máquina novamente. Algo como:
virsh snapshot-create-as --domain {VM-NAME} --name "{SNAPSHOT-NAME}"
Veja o NixCraft para mais detalhes.
Em qualquer caso, para que sua VM funcionasse depois que ela se congelasse, você poderia simplesmente ter indefinido a VM quebrada e anexado novamente a imagem original existente a uma nova VM, atualizando o documento de configuração XML da VM recém-criada. Primeiro, derrube a VM original:
:~$ virsh destroy OriginalVM
:~$ virsh undefine OriginalVM
Depois disso, construa a nova VM, pare e acesse a configuração:
:~$ 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
Em seguida, ao editar o arquivo XML, pesquise por "disco" digitando /disk
e atualize o caminho para o arquivo de origem:
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/update_to/path_of/OriginalVM.img'/>
Depois de salvar e sair ( :w
, :q
ou simplesmente :x
) você deve ser capaz de executar virsh start NewVM
e acessar a nova VM executando sua imagem via VNC, console ou ssh.
Você também pode tentar clonar sua VM , embora eu não tenha tentado isso:
virt-clone --connect=qemu:///system -o srchost -n newhost -f /path/to/newhost.qcow2