Aller au contenu

VirtualBox : snapshots, clones et sauvegarde

Un snapshot fige l’état d’une machine (disque, et mémoire si elle tourne) pour y revenir.

Fenêtre de terminal
VBoxManage snapshot srv1 take avant-maj --description "avant la mise à jour du système"
VBoxManage snapshot srv1 take avant-maj --live # machine en cours d'exécution, sans l'arrêter
VBoxManage snapshot srv1 list
VBoxManage snapshot srv1 list --machinereadable
VBoxManage snapshot srv1 showvminfo avant-maj

Revenir en arrière (la machine doit être arrêtée) :

Fenêtre de terminal
VBoxManage controlvm srv1 poweroff
VBoxManage snapshot srv1 restore avant-maj
VBoxManage snapshot srv1 restorecurrent # revient au dernier snapshot
VBoxManage startvm srv1 --type headless

Supprimer :

Fenêtre de terminal
VBoxManage snapshot srv1 delete avant-maj
Fenêtre de terminal
VBoxManage clonevm srv1 --name srv2 --register --basefolder /srv/vms
VBoxManage clonevm srv1 --name srv2 --register --mode all # avec les snapshots
VBoxManage clonevm srv1 --name srv2 --snapshot avant-maj --options link --register
Option Effet
--mode machine (défaut) État actuel seulement
--mode all Tous les snapshots
--options link Clone « lié » : partage le disque d’un snapshot, économise de l’espace
--options keepallmacs Conserve les adresses MAC (éviter, risque de doublon)

Par défaut, clonevm génère de nouvelles adresses MAC. Après un clonage, modifier dans l’invité le nom d’hôte et l’identifiant de machine (/etc/machine-id) pour éviter les conflits (même adresse DHCP, même identité) :

Fenêtre de terminal
sudo hostnamectl set-hostname srv2
sudo rm /etc/machine-id && sudo systemd-machine-id-setup

L’export crée un fichier unique, portable entre hôtes et versions de VirtualBox :

Fenêtre de terminal
VBoxManage controlvm srv1 acpipowerbutton
VBoxManage export srv1 -o /srv/sauvegardes/srv1.ova --ovf20
sha256sum /srv/sauvegardes/srv1.ova > /srv/sauvegardes/srv1.ova.sha256

Importer :

Fenêtre de terminal
VBoxManage import /srv/sauvegardes/srv1.ova --vsys 0 --vmname srv1-restaure --basedir /srv/vms

--vsys 0 désigne la première machine du fichier ; VBoxManage import fichier.ova --dry-run affiche le contenu sans importer.

Machine arrêtée, copier le dossier de la machine :

Fenêtre de terminal
VBoxManage controlvm srv1 acpipowerbutton
# attendre l'arrêt (voir « Exécution headless »)
rsync -a --delete /srv/vms/srv1/ /srv/sauvegardes/srv1/
VBoxManage startvm srv1 --type headless

Machine en cours d’exécution : prendre un snapshot, copier le disque de base, puis supprimer le snapshot :

Fenêtre de terminal
VBoxManage snapshot srv1 take sauvegarde --live
VBoxManage showvminfo srv1 --machinereadable | grep -E '^"SATA-0-0"='
cp --sparse=always /srv/vms/srv1/srv1.vdi /srv/sauvegardes/srv1.vdi
VBoxManage snapshot srv1 delete sauvegarde
Fenêtre de terminal
VBoxManage clonemedium disk srv1.vdi srv1.vmdk --format VMDK
VBoxManage modifymedium disk srv1.vdi --compact

--compact réduit un disque dynamique après avoir rempli de zéros l’espace libre de l’invité (par exemple sudo dd if=/dev/zero of=/zero bs=1M; sudo rm /zero, ou sudo fstrim -av avec un disque configuré pour TRIM).

  • Un snapshot avant chaque changement risqué, supprimé ensuite.
  • Appliquer la règle 3-2-1 : plusieurs copies, plusieurs supports, une copie hors de l’hôte.
  • Tester la restauration d’une sauvegarde sur une machine de test.
  • Garder les sauvegardes sur un autre disque que celui des machines.
Symptôme Piste
Cannot delete snapshot … while the machine is running Certaines suppressions demandent une machine arrêtée
La suppression d’un snapshot est très longue Fusion de disques différentiels : attendre, ne pas interrompre
VERR_ALREADY_EXISTS à l’import ou au clonage Dossier ou nom existant : changer --vmname ou --basefolder
Les clones obtiennent la même adresse IP /etc/machine-id et nom d’hôte identiques : les régénérer
Espace disque saturé Snapshots/ volumineux : supprimer des snapshots, --compact

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Les commandes sont identiques. Un fichier OVA exporté depuis VirtualBox 6.x s’importe dans 7.x ; l’inverse n’est pas garanti.