Cours Ubuntu 26.04 / Restaurer un snapshot et préparer un clone de VM

Un snapshot permet de revenir à un état enregistré d’une VM ; il ne remplace pas une sauvegarde indépendante du stockage de cette VM. Un clone est une autre VM, mais son système invité peut conserver les comptes, clés SSH, identifiants et adresses de l’original. Préservez les travaux récents avant une restauration et démarrez un clone isolé avant de le traiter comme un serveur distinct.

Identifier ce qui sera restauré et ce qui doit être conservé

Revenir à un snapshot peut faire disparaître les fichiers et réglages créés après ce point sur les disques concernés. Copiez hors de la VM les documents, configurations et journaux à garder, puis ouvrez les copies. Un snapshot supplémentaire conserve un autre état dans la même infrastructure ; il ne remplace pas cette copie indépendante.

Les dossiers partagés de l’hôte, bases de données externes et stockages réseau suivent leur propre cycle de vie. Ne supposez pas qu’ils seront remis à l’état du snapshot de l’invité. Les modes spéciaux de disque peuvent aussi modifier la portée d’une restauration : contrôlez les paramètres de stockage de la VM.

Pour ce premier exercice, utilisez une VM de laboratoire que vous savez arrêter et ouvrir en console. Partez d’une installation vérifiée et mise à jour, comme dans le cours de contrôle après les premières mises à jour. Une base saine avec un nom explicite facilite l’interprétation du test.

Créer un point de référence avec la VM arrêtée

  1. Enregistrez vos travaux, terminez les opérations en cours et arrêtez normalement Ubuntu. Dans VirtualBox Manager, confirmez que la VM est arrêtée.
  2. Sélectionnez cette VM puis la vue Snapshots. Choisissez Take, ou l’action de création de snapshot de votre interface.
  3. Donnez un nom comme clean-install et une description : date, version Ubuntu, connexion console et services vérifiés, raison du point de référence.
  4. Vérifiez que le snapshot apparaît et que Current State représente l’état courant qui en dérive. Démarrez ensuite la VM pour l’exercice de fichier.

Un snapshot pris en fonctionnement peut également enregistrer la mémoire et reprendre au même point d’exécution. Il diffère du point de départ arrêté utilisé ici. La documentation officielle VirtualBox sur snapshots, clones et exports explique ces états et les disques différentiels qui les relient.

Tester le retour avec un fichier jetable

Après avoir créé le snapshot, connectez-vous à Ubuntu avec Bash. Le bloc suivant crée un nouveau dossier au nom aléatoire dans votre répertoire personnel, puis un fichier marker.txt dans ce dossier. Il évite de réutiliser et d’écraser un ancien fichier d’exercice :

lab_dir=$(mktemp -d "$HOME/snapshot-lab.XXXXXX") &&
printf 'after-snapshot\n' > "$lab_dir/marker.txt" &&
cat "$lab_dir/marker.txt" &&
printf 'Dossier a noter hors de la VM : %s\n' "$lab_dir"

Vous devez voir after-snapshot puis le chemin exact du nouveau dossier. Notez ce chemin hors de la VM : la variable du terminal ne sera pas conservée après retour au point arrêté. Le dossier doit être sur un disque virtuel ordinaire inclus dans le snapshot, pas sur un dossier partagé de l’hôte.

  1. Arrêtez de nouveau Ubuntu normalement. Dans la vue Snapshots de la bonne VM, sélectionnez le point créé avant le fichier et choisissez Restore.
  2. Lisez la proposition de conservation de l’état courant. Conservez cet état si vous en avez besoin, mais gardez aussi la copie indépendante des travaux importants. La restauration remplace l’état courant par celui du point choisi.
  3. Démarrez la VM restaurée et ouvrez une session console. Saisissez le chemin exact noté à l’invite du bloc suivant.
read -r -p 'Chemin absolu du dossier note : ' lab_dir
if test -n "$lab_dir" && test ! -e "$lab_dir/marker.txt"; then
    printf 'Marqueur absent : resultat attendu pour ce point de reference.\n'
else
    printf 'Resultat a examiner : chemin vide ou marqueur encore present.\n'
fi

L’absence du marqueur est attendue parce qu’il n’existait pas au point de référence. Elle n’est interprétable que si le chemin saisi est exact : une faute de frappe peut aussi viser un fichier absent. Si le marqueur reste présent, vérifiez le snapshot sélectionné, sa date et la portée du disque ou du partage utilisé.

Vérifiez aussi connexion console, heure, adresses, montages et services nécessaires. Un seul fichier disparu démontre ce petit retour d’état ; il ne démontre pas la restauration cohérente d’une base de données ni la disponibilité d’une application. Aucune commande de suppression du fichier n’est nécessaire pour prouver le résultat : c’est la restauration qui doit expliquer son absence.

Créer un clone et l’isoler avant le premier démarrage

Un clone complet copie les disques nécessaires et peut fonctionner sans la VM source. Un clone lié utilise des disques différentiels dépendant de la source ; il ne constitue donc pas une copie indépendante à déplacer seule. Choisissez selon l’objectif et l’espace disponible.

  1. Arrêtez la VM source et identifiez-la dans VirtualBox Manager. Dans la liste Machines, utilisez Clone ; si nécessaire, passez au niveau Expert pour retrouver le parcours décrit par le guide 7.2.
  2. Choisissez un nom et un chemin distincts pour le clone. Contrôlez la politique MAC : Generate New MAC Addresses For All Network Adapters crée de nouvelles adresses pour les cartes virtuelles.
  3. Choisissez Full Clone ou Linked Clone en comprenant leur dépendance. Pour un clone complet d’une source avec snapshots, vérifiez si vous copiez seulement Current Machine State ou l’arbre demandé.
  4. Avant le premier démarrage du clone, ouvrez ses Paramètres → Réseau. Déconnectez ses cartes ou placez-les dans un réseau d’essai isolé qui ne joint ni l’original ni des services réels.
  5. Démarrez le clone par sa console, confirmez que vous êtes dans la bonne VM et comparez ses identités et réglages avant toute connexion commune.

Un réseau host-only qui contient déjà l’original n’isole pas les deux machines l’une de l’autre. Un clone peut reprendre une adresse fixe, un nom d’hôte, un identifiant DHCP ou une destination de sauvegarde et provoquer des conflits. La génération de nouvelles MAC aide au niveau réseau, mais ne réinitialise pas automatiquement l’identité interne d’Ubuntu.

Comparer l’identité de l’invité et les accès conservés

Sur la source puis sur le clone isolé, relevez localement les informations utiles sans les publier :

hostnamectl
ip -br address
cat /etc/machine-id

Si OpenSSH Server est installé et que sa clé publique Ed25519 existe, lisez son empreinte :

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Cette commande affiche l’empreinte d’une clé publique ; elle ne génère ni ne remplace les clés. Un fichier absent doit être rapproché de l’installation réelle d’OpenSSH et des types de clés présents, pas corrigé en supprimant les clés de l’original.

Élément Pourquoi le distinguer
Nom de VM et nom d’hôte Changer le nom dans VirtualBox ne change pas nécessairement celui du système Ubuntu.
MAC, adresse et DHCP Des MAC distinctes ne garantissent pas des adresses fixes ou identifiants DHCP distincts.
machine-id Identité persistante du système, que les services peuvent utiliser pour reconnaître la machine.
Clés hôte SSH Identité du serveur présentée aux clients ; deux serveurs indépendants ne doivent pas partager cette identité par accident.
Comptes, clés autorisées et secrets Copier les disques copie aussi les accès et informations qui y sont stockés.

Un machine-id ou une clé hôte dupliquée peut laisser les deux systèmes démarrer tout en les rendant difficiles à distinguer correctement. La documentation systemd sur machine-id décrit son caractère persistant et sa confidentialité. Conservez la comparaison dans un emplacement privé, avec les adresses internes et les autres identifiants.

Distinguer un essai ponctuel et un modèle de déploiement

Une comparaison ponctuelle peut employer un clone isolé, sans le présenter comme un nouveau serveur de confiance. Pour déployer des serveurs indépendants, préparez un processus d’initialisation adapté : nouvelles identités machine, clés hôte SSH, adresses et noms uniques, état cloud-init, comptes et secrets appropriés.

cloud-init, lorsqu’il est utilisé, gère une partie de l’initialisation à partir des données d’instance. Sa référence officielle des commandes précise que le nettoyage de son état peut relancer les étapes au prochain démarrage. Ce nettoyage n’est pas une commande universelle de clonage : son résultat dépend des métadonnées, de la configuration et des modules exécutés.

Ne supprimez pas automatiquement machine-id ou les clés SSH d’une machine en cours d’utilisation pour suivre une recette générique. Préparez et vérifiez une procédure pour le modèle concerné, puis appliquez l’initialisation uniquement au clone ou à l’image désignée. Une nouvelle installation séparée reste une option simple pour le deuxième client du laboratoire.

Enfin, une sauvegarde de VM exige son propre essai d’importation et de démarrage depuis la copie conservée ailleurs. Un export OVF/OVA de l’état courant n’emporte pas nécessairement l’historique des snapshots. N’essayez pas de déplacer ou supprimer à la main quelques fichiers d’une chaîne de disques différentiels : utilisez les fonctions de gestion prévues et préservez la copie fonctionnelle.