Aller au contenu
Conteneurs & Orchestration medium

Importer une VM ou une machine physique avec incus-migrate

6 min de lecture

logo incus

L'outil incus-migrate importe une machine existante (une VM d'un autre hyperviseur, un disque, ou même un serveur physique) dans Incus, sous forme d'instance. Il fonctionne en mode interactif : on lui indique le serveur Incus cible, la source à importer et quelques options, et il fait le reste. Ce guide déroule la procédure, les formats acceptés et le piège UEFI/NVRAM qui empêche souvent la VM importée de démarrer. Pour qui migre depuis VMware, Proxmox ou un serveur physique.

  • Récupérer et lancer incus-migrate.
  • Le déroulé interactif de l'import.
  • Les formats de disque acceptés.
  • Le piège UEFI qui empêche le boot, et son contournement.
  • Un serveur Incus cible dont l'API est exposée sur le réseau (core.https_address).
  • rsync installé sur la machine source.
  • Un token d'accès au serveur Incus (incus config trust add) ou un certificat.

Sur un système installé depuis les dépôts Zabbly, incus-migrate est fourni par le paquet incus-extra (le même qui contient lxd-to-incus) :

Fenêtre de terminal
sudo apt install incus-extra
which incus-migrate # /usr/bin/incus-migrate

À défaut, c'est aussi un binaire autonome publié dans les assets des releases Incus, pratique sur une machine source qui n'a pas le dépôt :

Fenêtre de terminal
wget https://github.com/lxc/incus/releases/download/<version>/bin.linux.incus-migrate.x86_64
chmod u+x bin.linux.incus-migrate.x86_64
sudo ./bin.linux.incus-migrate.x86_64

L'outil pose une série de questions ; il n'y a pas de longue ligne de commande à mémoriser.

  1. Cible locale ou distante : « The local Incus server is the target ». Répondre no pour importer vers un serveur Incus distant, puis fournir son URL et valider l'empreinte du certificat.

  2. Authentification : trois choix, dont le token (généré avec incus config trust add). L'outil affiche ensuite le nom et la version du serveur distant. Le mécanisme du token de confiance est détaillé dans le guide Accès distant et UI.

  3. Type : conteneur, machine virtuelle, VM depuis un .ova, ou volume personnalisé.

  4. Cible dans le cluster : si la cible est un cluster, une question supplémentaire demande s'il faut viser un nœud précis (sinon placement automatique).

  5. Nom et source : le nom de l'instance, puis le chemin du rootfs (conteneur) ou du disque / image bootable (VM), et d'éventuels montages additionnels.

  6. UEFI Secure Boot (VM uniquement) : la question « Does the VM support UEFI Secure Boot? » positionne security.secureboot sur l'instance créée.

  7. Overrides (optionnels) : profils, pool de stockage, taille, réseau, disques, avant de lancer avec « Begin the migration ».

Voici la fin réelle d'un import de conteneur vers un cluster Incus 7.0 (source : le / d'une machine, cible : le cluster) :

Remote server:
Hostname: node1
Version: 7.0.0
Instance to be created:
Name: imported-box
Project: default
Type: container
Source: /
Additional overrides can be applied at this stage:
1) Begin the migration with the above configuration
...
Please pick one of the options above [default=1]:
Transferring instance: imported-box: 1.08GB (35.90MB/s)
Instance imported-box successfully created

Le transfert se fait par rsync (d'où le prérequis). L'instance est ensuite créée, arrêtée, prête à démarrer. Sur un cluster, elle est placée automatiquement (ici sur node3) sauf si vous avez ciblé un nœud :

+--------------+---------+-----------+----------+
| NAME | STATE | TYPE | LOCATION |
+--------------+---------+-----------+----------+
| imported-box | STOPPED | CONTAINER | node3 |
+--------------+---------+-----------+----------+

Pour une VM, incus-migrate consomme directement les formats courants : raw, qcow2 (support direct depuis Incus 6.6), ova et vmdk. Pas de conversion manuelle à prévoir pour ces formats.

Pour une image issue de VMware ou VirtualBox, un pré-traitement avec virt-v2v est souvent nécessaire pour injecter les pilotes virtio (sinon le disque n'est pas détecté au boot) :

Fenêtre de terminal
virt-v2v -i disk source.vmdk -o local -of raw --block-driver virtio-scsi

C'est la galère classique : la VM importée ne démarre pas, écran noir ou shell UEFI.

Autre point de vigilance : sans les pilotes virtio dans l'image (VMware/VirtualBox), le disque n'est pas vu au démarrage, d'où le passage par virt-v2v.

  • incus-migrate importe une VM ou une machine physique dans Incus, en mode interactif ; il vit dans le paquet incus-extra (ou en binaire autonome).
  • Répondre no à « local server is the target » pour viser un serveur distant ; sur un cluster, placement auto sauf nœud ciblé.
  • Prérequis : API exposée (core.https_address), rsync sur la source, un token d'accès (incus config trust add).
  • Formats directs : raw, qcow2, ova, vmdk (qcow2 depuis Incus 6.6).
  • Piège UEFI : la config de boot est dans la NVRAM, pas le disque : préparez un fallback avec grub-install --removable.
  • Images VMware/VirtualBox : injectez les pilotes virtio avec virt-v2v.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn