Aller au contenu

Import OVF/OVA, VMDK, qm importdisk

Day 1 · DéployerNiveau 2 · OpérerProcédureRédigé · à valider en lab

Objectif. Créer une VM Proxmox (VMID 101) à partir d'un export OVF/OVA ou d'un simple fichier disque VMDK, quand l'assistant d'import ESXi n'est pas utilisable : appliance d'éditeur, export reçu d'un tiers, hôte ESXi injoignable, disque isolé.

Quelle méthode pour quel fichier ?

Vous avez… Méthode Commande
Un fichier .ova Assistant d'import sur un stockage avec contenu Import GUI
Un .ovf + ses disques .vmdk qm importovf (crée la VM) qm importovf 101 srv.ovf ceph-vm
Un ou plusieurs .vmdk, .qcow2, .raw, .vhdx VM vide + qm disk import qm disk import 101 srv.vmdk ceph-vm
Un disque à joindre à la création Paramètre import-from qm set 101 --scsi0 ceph-vm:0,import-from=/chemin/srv.vmdk

qm importdisk est l'ancien nom de qm disk import : c'est un alias, les deux fonctionnent. Le fichier source doit être dans un format lu par qemu-img.

Avant de toucher la prod

  • Espace disponible pour le fichier source (zone de transit) et pour le disque importé : df -h /var/lib/vz, pvesm status.
  • Export réalisé VM source éteinte, sans snapshot.
  • Windows : pilotes VirtIO installés dans la source, ou prévoir un premier démarrage en SATA.
  • VMID libre : qm status 101 doit répondre que la VM n'existe pas.
  • Copie des fichiers vers le nœud planifiée hors des heures de pointe (le transfert sature le lien).

Étapes

1. Déposer les fichiers

  1. Datacenter → Storage → sélectionner un stockage fichier (par exemple local) → Edit → Content : ajouter Import.
  2. Sous le nœud, cliquer sur ce stockage → onglet Import → Upload (fichier .ova local) ou Download from URL.
mkdir -p /var/lib/vz/import
scp srv.ova root@pve01:/var/lib/vz/import/
# OVA = archive tar : extraction pour qm importovf
cd /var/lib/vz/import && tar -xvf srv.ova
ls -lh /var/lib/vz/import     # srv.ovf, srv-disk1.vmdk, srv.mf

2a. Importer un OVA/OVF

  1. Stockage local → onglet Import → sélectionner srv.ova → Import.
  2. Onglet General : VMID 101, stockage cible ceph-vm, bridge vmbr0.
  3. Onglet Advanced : choisir un contrôleur SCSI (VirtIO SCSI single, ou VMware PVSCSI si l'invité n'a pas les pilotes VirtIO). Les OVF le définissent rarement, et le contrôleur par défaut ne démarre pas en UEFI.
  4. Resulting Config : relire, puis Import.
qm importovf 101 /var/lib/vz/import/srv.ovf ceph-vm --dryrun   # affiche ce qui serait créé
qm importovf 101 /var/lib/vz/import/srv.ovf ceph-vm
# l'OVF ne fournit pas le réseau : à ajouter
qm set 101 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single
qm set 101 --ostype l26 --agent enabled=1      # win11, win2k22… pour Windows

qm importovf reprend le nom, les cœurs, la mémoire et les disques du manifeste. Sur un stockage fichier, --format qcow2 choisit le format cible.

2b. Importer un disque VMDK isolé

# 1. VM vide (adapter bios/machine à la source : ovmf + efidisk si EFI)
qm create 101 --name srv-app01 --memory 8192 --cores 4 --cpu x86-64-v2-AES \
  --scsihw virtio-scsi-single --net0 virtio,bridge=vmbr0 --ostype l26

# 2. Import : pointer le descripteur .vmdk (qui référence le -flat.vmdk)
qm disk import 101 /var/lib/vz/import/srv.vmdk ceph-vm
#   -> le disque apparaît en unused0 (ceph-vm:vm-101-disk-0)

# 3. Attacher et rendre amorçable
qm set 101 --scsi0 ceph-vm:vm-101-disk-0,discard=on,iothread=1 --boot order=scsi0

Variante en une commande : qm disk import 101 srv.vmdk ceph-vm --target-disk scsi0.

Le paramètre --format (raw, qcow2, vmdk) ne s'applique qu'aux stockages fichier (répertoire, NFS). Sur Ceph RBD, ZFS ou LVM, le disque est toujours en raw.

Vérifications

qemu-img info /var/lib/vz/import/srv.vmdk    # format détecté et taille virtuelle
qm config 101 | grep -E 'scsi0|boot|net0|bios'
pvesm list ceph-vm --vmid 101
Sortie attendue : scsi0 pointe sur ceph-vm:vm-101-disk-0, boot: order=scsi0, aucun unusedN oublié, taille du volume égale à la taille virtuelle donnée par qemu-img info. La VM démarre et l'agent répond (qm guest cmd 101 ping).

Rollback

Rien n'est modifié côté source. Supprimer la VM et ses disques : qm destroy 101 --purge. Puis libérer la zone de transit : rm /var/lib/vz/import/srv*.

Pièges vus en support

  • Copier seulement le descripteur .vmdk (quelques Ko) sans le fichier -flat.vmdk qu'il référence : l'import échoue. Copiez les deux et pointez le descripteur.
  • Fichier source mal identifié (VMDK compressé, extension trompeuse) : contrôlez toujours qemu-img info avant d'importer.
  • Disque importé resté en unused0 : la VM démarre sur « No bootable device ».
  • VM EFI créée en SeaBIOS : pas de démarrage. Ajoutez --bios ovmf --efidisk0 ceph-vm:1,efitype=4m et une machine q35.
  • Zone de transit /var/lib/vz sur le disque système : un gros OVA remplit / et bloque le nœud. Utilisez un stockage dédié.

Quand ouvrir un ticket iTop

qemu-img ne reconnaît pas le format, import interrompu sans message clair, appliance d'éditeur qui ne démarre pas : P3. Joignez qemu-img info du fichier source, qm config 101 et le journal de la tâche.

Ouvrir un ticket iTop

Pour aller plus loin : Migrer depuis Hyper-V · qm(1) · Migrate to Proxmox VE