{ "meta": { "title": "Importare una VM da OVA / OVF | Documentazione ProxMenux", "description": "Importa una VM VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux in Proxmox VE. Estrae automaticamente OVA, analizza i metadati OVF, crea la VM e importa ogni disco nel formato nativo dello storage (qcow2 / raw).", "ogTitle": "Importare una VM da OVA / OVF | Documentazione ProxMenux", "ogDescription": "Importa in Proxmox le VM esportate da VMware, VirtualBox o ProxMenux. I dischi vengono convertiti automaticamente nel formato nativo dello storage." }, "header": { "title": "Importa VM da OVA / OVF", "description": "Importa un pacchetto OVA / OVF in Proxmox VE: estrae gli archivi OVA, legge dal descrittore OVF vCPU, memoria, numero di schede di rete e riferimenti ai dischi, poi crea la VM e importa ogni disco con qm importdisk nello storage scelto. Compatibile con le esportazioni VMware (ESXi / Workstation / Fusion), VirtualBox e ProxMenux.", "section": "Utilità" }, "intro": { "title": "Cosa fa", "body": "Crea una VM completa in Proxmox da un pacchetto portabile. Dopo l’importazione è pronta per l’avvio; si consigliano alcuni controlli e regolazioni di modello della scheda di rete, firmware e tipo di sistema operativo per prestazioni e compatibilità." }, "picker": { "heading": "Selettore di file", "intro": "Al lancio, lo script offre due directory preimpostate o un percorso manuale:", "items": [ "/var/lib/vz/dump — la directory di backup Proxmox vzdump predefinita.", "/var/lib/vz/template/iso — utile se vi hai trasferito il file OVA tramite sftp.", "Percorso manuale — per i file OVA / OVF altrove sull'host." ], "outro": "Quindi elenca ogni file .ova e .ovf nella directory selezionata.", "imageAlt": "Finestra di selezione del file della VM da importare" }, "flow": { "heading": "Come funziona l'importazione", "nodes": [ { "label": "Ingresso OVA / OVF", "detail": ".ova → tar xf in\n /tmp/.proxmenux-import-*\n.ovf → usa il file sul posto", "variant": "source" }, { "label": "Analisi e finestre di dialogo", "detail": "AWK legge OVF\n(nome, vCPU, RAM, NIC,\ndischi). Scelta di\nVMID / storage / bridge", "variant": "bridge" }, { "label": "qm create + importdisk", "detail": "qm create $VMID\nqm importdisk\n(VMDK → formato dello storage)\nqm set --scsiN", "variant": "target" } ] }, "ovf": { "heading": "Analisi OVF", "intro": "Un parser gawk legge il descrittore OVF ed estrae i metadati della VM. Usa match() con tre argomenti, una funzione specifica di gawk non supportata da mawk, il awk predefinito in Debian / Proxmox. Se manca, alla prima importazione gawk viene installato con ensure_repositories + install_single_package; le importazioni successive non richiedono questo passaggio. Campi estratti:", "headerField": "Campo", "headerSource": "Fonte in OVF", "headerDefault": "Predefinito se manca", "rows": [ { "field": "Nome VM", "source": " (prima corrispondenza)", "default": "imported-vm" }, { "field": "Conteggio vCPU", "source": "RASD ResourceType 3 → VirtualQuantity", "default": "1" }, { "field": "Memoria (MiB)", "source": "RASD ResourceType 4 → VirtualQuantity", "default": "1024" }, { "field": "Numero di schede di rete", "source": "conteggio di ResourceType 10", "default": "1" }, { "field": "Tipo di sistema operativo", "source": "/Linux/ o /Windows/ nella descrizione", "default": "other" }, { "field": "Riferimenti del disco", "source": "attributi href che terminano in .vmdk / .qcow2 / .img / .raw", "default": "Nessuno (importazione annullata)" } ] }, "memWarn": { "title": "Ambiguità delle unità di memoria", "body": "Il parser converte le unità di memoria riconosciute in MiB, inclusi byte, KiB, MiB, GiB e le etichette testuali supportate. Le unità mancanti o sconosciute sono trattate come MiB. Dopo l’importazione, confronta qm config $VMID | grep memory con la RAM documentata della VM di origine e, se serve, correggila con qm set $VMID --memory <MiB>." }, "dialog": { "heading": "Sequenza delle finestre di importazione", "items": [ "VMID — propone il prossimo identificativo disponibile (pvesh get /cluster/nextid).", "Nome della VM — usa il nome letto nell’OVF; puoi modificarlo.", "Storage di destinazione — elenco degli storage con contenuto images, ottenuto da pvesm status -content images.", "Bridge di rete — elenco dei bridge da ip link show type bridge. Se ne esiste uno solo, viene scelto automaticamente; il valore predefinito è vmbr0.", "Conferma — riepilogo con VMID, nome, vCPU, memoria, schede di rete, storage, bridge e dischi da importare. Annullando qui non viene modificato nulla." ] }, "create": { "heading": "Creazione VM", "intro": "Dopo la conferma, lo script viene eseguito:", "code": "qm create $VMID \\\n --name \"$NAME\" \\\n --memory $MEMORY \\\n --cores $VCPU \\\n --ostype $OSTYPE \\\n --scsihw lsi \\\n --net0 e1000,bridge=$BRIDGE\n\n# For each additional NIC:\nqm set $VMID --netN e1000,bridge=$BRIDGE", "outro": "Il controller SCSI predefinisce lsi (LSI Logic) per la compatibilità VMDK. NIC di default a e1000 (compatibilità universale) sul ponte scelto." }, "diskLoop": { "heading": "loop di importazione del disco", "intro": "Per ogni riferimento del disco nell'OVF:", "items": [ "qm importdisk $VMID $disk_path $STORAGE — importa il disco in un formato supportato dallo storage di destinazione e crea una voce unusedN: nella configurazione della VM.", "Lo script cerca con grep nella configurazione il riferimento unusedN appena creato.", "qm set $VMID --scsiN $unused_disk — collega il disco come scsi0, scsi1, ...", "qm set $VMID --delete unusedN — elimina il marcatore inutilizzato ormai ridondante." ], "outro": "Boot è impostato sul primo disco SCSI: qm set $VMID --boot c --bootdisk scsi0." }, "postImport": { "heading": "Regolazioni consigliate dopo l’importazione", "intro": "L’importazione usa impostazioni ampiamente compatibili per favorire l’avvio al primo tentativo. Dopo aver verificato l’avvio, puoi scegliere impostazioni più efficienti dall’interfaccia Proxmox o dalla CLI:", "headerSetting": "Impostazione", "headerDefault": "Predefinito dopo l'importazione", "headerRecommended": "Consigliato se supportato dal sistema guest", "rows": [ { "setting": "Modello NIC", "default": "e1000", "recommended": "VirtIO (molto più veloce, richiede un driver nel sistema guest)" }, { "setting": "Controller SCSI", "default": "LSI", "recommended": "VirtIO SCSI single (Linux recente o Windows con driver VirtIO)" }, { "setting": "Firmware (BIOS / UEFI)", "default": "Predefinizione Proxmox (BIOS)", "recommended": "Usa il firmware della VM di origine; una scelta errata impedisce l’avvio" }, { "setting": "QEMU agente ospite", "default": "Disattivato", "recommendedRich": "Attiva e installa qemu-guest-agent nel sistema guest (backup migliori e rilevamento degli IP)" }, { "setting": "Tipo di sistema operativo", "default": "l26 / win10 / other (euristica)", "recommended": "Verificare contro il sistema operativo ospite effettivo" }, { "setting": "Schermo", "default": "Predefinito", "recommended": "VirtIO-GPU o SPICE (migliori prestazioni della console)" } ] }, "fwWarn": { "title": "Firmware mismatch = nessun boot", "body": "Se la VM di origine usava UEFI ma Proxmox la crea con BIOS, o viceversa, il sistema guest non trova un disco avviabile. Controlla FirmwareType / firmware nell’OVF o nella VM originale e usa la stessa scelta in Proxmox: qm set $VMID --bios ovmf per UEFI; il valore predefinito per BIOS è seabios." }, "notImported": { "heading": "Cosa NON viene importato", "items": [ "Bridge di rete specifici — viene conservato solo il numero di schede. Tutte usano il bridge scelto durante l’importazione.", "Modello della scheda di rete — usa e1000 come valore predefinito.", "Tipo di firmware BIOS / UEFI — usa il valore predefinito Proxmox, BIOS.", "Configurazione del passthrough PCI.", "TPM (vTPM).", "Unità cloud-init.", "Snapshots — solo lo stato attuale.", "USB / dispositivi seriali / paralleli dichiarati nell'OVF.", "VM tag / note / start-on-boot opzioni." ] }, "troubleshoot": { "heading": "Risoluzione dei problemi", "orphanTitle": "La VM è stata creata ma l’importazione dei dischi è fallita: rimane una VM parziale", "orphanIntro": "Se l’importazione fallisce, lo script propone di eliminare la VM parziale e i dischi importati. Se hai rifiutato o l’eliminazione automatica è fallita, esamina la VM ed eliminala manualmente con:", "orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1", "orphanOutro": "Correggi poi la causa, probabilmente lo spazio nello storage di destinazione, e ripeti l’importazione.", "memTitle": "La VM importata ha 8 MB di RAM, oppure 8 TB", "memIntro": "Il parser converte le AllocationUnits riconosciute in MiB. Le unità mancanti o sconosciute sono trattate come MiB. Esamina l’OVF e confronta la memoria importata con quella della VM di origine. Correggila se necessario:", "memCode": "qm set $VMID --memory 8192 # 8 GiB", "bootTitle": "La VM importata non si avvia: \"No bootable device\"", "bootIntro": "Una causa frequente è la mancata corrispondenza BIOS / UEFI. La VM usava UEFI, ma Proxmox l’ha creata con BIOS. Imposta il firmware corrispondente:", "bootCode": "qm set $VMID --bios ovmf # UEFI\n# also add an EFI disk for the EFI vars:\nqm set $VMID --efidisk0 $STORAGE:1,format=qcow2,efitype=4m,pre-enrolled-keys=1", "bootOutro": "Un’altra causa frequente: l’ordine di avvio indica scsi0, ma il disco del sistema operativo è scsi1. Modifica l’ordine nella scheda Opzioni della VM.", "bsodTitle": "Una VM Windows esportata da VMware mostra una schermata blu al primo avvio", "bsodBody": "Windows è sensibile ai cambiamenti del controller disco. Installa i driver VirtIO prima dell’esportazione da VMware oppure mantieni il controller lsi predefinito. Passa a VirtIO SCSI solo dopo aver avviato il sistema guest e installato i driver VirtIO in Windows.", "zeroTitle": "Il parser OVF rileva 0 dischi", "zeroBody": "L’OVF potrebbe usare riferimenti ai dischi non riconosciuti dal parser. Aprilo e cerca per ogni disco una voce <File ovf:href=\"...vmdk\" ...>. Se il disco è davvero VMDK, ma ha un’estensione insolita come .dat, rinominalo in .vmdk e aggiorna il riferimento OVF. Rinominare non converte il formato.", "awkTitle": "awk: errore sintassi a o vicino , — parser fallisce su ogni OVA / OVF", "awkIntro": "Il parser OVF usa la sintassi gawk di match() con tre argomenti, non supportata da mawk, il awk predefinito di Debian / Proxmox. Le versioni recenti installano gawk al primo utilizzo tramite ensure_repositories + install_single_package. Se usi una copia precedente, installalo manualmente:", "awkCode": "apt-get install -y gawk", "awkOutro": "Poi ripeti l’importazione.", "netTitle": "Rete che non funziona dopo il primo avvio", "netBody": "Il sistema guest potrebbe non avere i driver per il modello e1000, oppure il bridge scelto potrebbe essere errato. Nella scheda Hardware della VM, cambia Network Device → Model. Controlla anche ip a nel sistema guest: l’interfaccia potrebbe chiamarsi ens18 anziché eth0, mentre la configurazione di rete usa ancora il vecchio nome." }, "files": { "heading": "File coinvolti", "code": "scripts/utilities/import_vm_ova_ovf.sh # this script\n/tmp/.proxmenux-import-*/ # temp extraction dir for OVA\n/etc/pve/nodes//qemu-server/.conf # created by qm create\n//-disk-. # disk images, format depends on storage" }, "related": { "heading": "Correlati", "items": [ { "href": "/docs/utils/export-vm", "label": "Esportazione VM a OVA / OVF", "tail": " — lo strumento complementare per esportare la VM." }, { "href": "/docs/utils", "label": "Panoramica delle utilità", "tail": " — torna alla panoramica della sezione." } ] } }