O caminho no Ubuntu seria usar o libvirt em cima do KVM / QEMU / VirtualBox. Citando o Arch Wiki :
Libvirt é uma coleção de software que fornece uma maneira conveniente de gerenciar máquinas virtuais e outras funcionalidades de virtualização, como como armazenamento e gerenciamento de interface de rede. Essas peças de software incluir uma API C estável de longo prazo, um daemon (libvirtd) e um comando utilitário de linha (virsh). Um objetivo primário da libvirt é fornecer um único maneira de gerenciar vários provedores / hipervisores de virtualização, como os hipervisores KVM / QEMU, Xen, LXC, OpenVZ ou VirtualBox (entre outros). Alguns dos principais recursos do libvirt são:
- Gerenciamento de VMs : várias operações de ciclo de vida do domínio, como iniciar, parar, pausar, salvar, restaurar e migrar. Operações de hotplug para muitos tipos de dispositivos, incluindo interfaces de disco e de rede, memória e cpus.
- Suporte remoto à máquina : Toda a funcionalidade libvirt é acessível em qualquer máquina que execute o daemon libvirt, incluindo máquinas remotas. Uma variedade de transportes de rede é suportada para conexão remota, sendo o mais simples o SSH, que não requer explícito extra configuração.
- Gerenciamento de armazenamento : Qualquer host que esteja executando o daemon libvirt pode ser usado para gerenciar vários tipos de armazenamento: criar imagens de arquivos de vários formatos (qcow2, vmdk, raw, ...), montar compartilhamentos NFS, enumerar Grupos de volumes LVM, criar novos grupos de volumes LVM e volumes lógicos, particionar dispositivos de disco bruto, montar compartilhamentos iSCSI e muito mais.
- Gerenciamento da interface de rede : qualquer host que esteja executando o daemon libvirt pode ser usado para gerenciar interfaces de rede físicas e lógicas. Enumerar as interfaces existentes, bem como configurar (e criar) interfaces, pontes, vlans e dispositivos bond.
- NAT virtual e rede baseada em rotas : Qualquer host que execute o daemon libvirt pode gerenciar e criar redes virtuais. Libvirt virtual as redes usam regras de firewall para atuar como um roteador, fornecendo VMs acesso transparente à rede de máquinas host.
O gerenciamento de CLI é feito principalmente usando o comando virsh
. Há um front-end de GUI associado, chamado virt-manager
.
Quanto a iniciar VMs automaticamente, supondo que você tenha uma VM chamada foo, para marcá-la para iniciar na inicialização:
virsh autostart foo
E para desmarcá-lo:
virsh autostart --disable foo
O Guia do Servidor LTS do Ubuntu tem um capítulo sobre libvirt .