Come convertire VHD in VMDK: una guida passo passo
VMware vSphere e Microsoft Hyper-V sono due delle piattaforme di virtualizzazione più diffuse. Ciascuna soluzione utilizza formati di file di disco virtuale diversi per le VM. Ciò significa che è necessario convertire i file di disco virtuale quando si spostano le VM tra VMware vSphere e Microsoft Hyper-V. Ad esempio, potrebbe essere necessario migrare le VM tra diversi hypervisor a scopo di test. In altri casi, potrebbe essere necessario modificare il formato se ne è stato scelto uno errato durante la creazione della VM.
Hyper-V utilizza i formati VHD e VHDX per le VM, mentre VMware utilizza il formato VMDK. Leggi questo articolo per scoprire come migrare le VM da Hyper-V a un ambiente VMware convertendo un file VHD in un file VMDK.
Formati dei dischi virtuali
VHD si riferisce al formato di immagine disco introdotto come formato di disco virtuale per le VM in Connectix Virtual PC. Successivamente, Microsoft ha acquisito Virtual PC e ha continuato a sviluppare questo prodotto di virtualizzazione. In seguito, Microsoft ha presentato Hyper-V come alternativa a Microsoft Virtual PC. Le principali funzioni del formato VHD sono:
- La dimensione massima supportata dei file VHD è di 2 TB (2^32*512 byte), dove 32 bit rappresentano il numero di byte e 512 byte rappresentano la dimensione del settore.
- Anche VirtualBox supporta il formato VHD per i dischi virtuali, che è ancora in uso nel cloud Microsoft Azure.
- Le VM Hyper-V di prima generazione possono utilizzare solo dischi virtuali in formato VHD.
VHDX è la nuova versione del formato di disco virtuale fornito da Microsoft, successore del formato VHD. Il formato VHDX ha un’ampia gamma di applicazioni, tra cui i dischi virtuali per le VM di Hyper-V e i Microsoft Cluster Shared Volumes. VHDX è un formato di file semi-aperto ed è possibile scaricare le specifiche del formato dal sito web di Microsoft per creare applicazioni personalizzate compatibili con i file VHDX. Le principali funzioni di VHDX sono:
- La capacità massima del disco è di 64 TB, rispetto al limite di 2 TB del formato VHD.
- Supporta settori da 4 KB.
- Offre una protezione maggiore contro i guasti causati da interruzioni di corrente rispetto ai dischi VHD.
VM di seconda generazione supporta l’utilizzo sia di dischi virtuali VHDX che VHD. Tuttavia, le VM di Azure possono utilizzare solo dischi virtuali in formato VHD. I dischi virtuali VHDX possono essere creati nella finestra Gestione disco in Windows 10 e Windows Server 2016. Le immagini VHDX possono anche essere montate (collegate) come unità disco e visualizzate in Esplora risorse (Risorse del computer) nelle ultime versioni di Windows, grazie al driver VHDX integrato.
VMDK è un formato aperto di immagini disco virtuali utilizzato dagli hypervisor VMware, VirtualBox, QEMU ecc., e non è supportato da Hyper-V. I file immagine VMDK possono essere considerati come contenitori per l’archiviazione dei dati, simili ai dischi rigidi fisici, e presentano un’elevata compatibilità con diversi software di virtualizzazione. La dimensione massima del disco virtuale VMDK è stata aumentata da 2 TB a 62 TB.
I dischi virtuali VMDK possono essere suddivisi nei seguenti tipi e varianti: monolitici, suddivisi, sparsi, piatti, nonché con provisioning sottile e con provisioning denso. I dischi VMDK delta vengono creati durante l’esecuzione di Snapshot delle VM. I file VMDK possono essere mappati (montati) sul punto di montaggio specificato sulla macchina host se è installato VMware Workstation. Viene garantito un elevato livello di affidabilità. Per i dischi virtuali VMDK sono supportati i settori nativi da 4 KB, utilizzati dalle ultime versioni dei prodotti VMware con VMFS6 (Virtual Machine File System 6).
Controllare il contenuto del VHD prima di convertire un VHD in VMDK
Si tratta di un passaggio facoltativo che consente di verificare lo stato di integrità di un disco virtuale VHD o VHDX di origine e di visualizzare i file in esso contenuti. Questo approccio evita di creare confusione e di perdere tempo convertendo il disco virtuale sbagliato. Se si desidera solo estrarre file da immagini VHD, questa sezione è ciò che fa al caso vostro. I file VHD possono essere montati su una directory in Linux e mappati su una lettera di unità specificata in Windows.
Come aprire un file VHDX in Linux
In Linux, i file VHD e VHDX possono essere montati su una directory specificata (punto di montaggio) dalla console utilizzando gli strumenti libguestfs . In questo modo, è possibile visualizzare il contenuto dei file VHD e VHDX in Linux prima di avviare la conversione da VHD a VMDK. Vediamo come visualizzare il contenuto delle immagini dei dischi virtuali VHD e VHDX in Linux.
Installare il pacchetto necessario:
sudo apt-get install libguestfs-tools
Creare la directory in cui si desidera montare le immagini VHD o VHDX, ad esempio, /mnt/vhd/:
sudo mkdir /mnt/vhd/
Eseguire il comando per montare un’immagine del disco VHD nella directory specificata. Ci troviamo nella directory in cui si trova il file VHD richiesto ed eseguiamo il comando come root:
guestmount --add test-disk.vhd --ro /mnt/vhd/ -m /dev/sda1
Dove:
-add – apre un disco virtuale.
--ro – un disco virtuale viene montato in modalità di sola lettura.
/mnt/vhd/ è il percorso del file VHD che si desidera montare.
-m /dev/sda1/ è il nome della partizione presente sul disco virtuale VHD. Nel disco virtuale VHD utilizzato in questo esempio è presente una partizione NTFS.
È possibile visualizzare tutti i comandi disponibili eseguendo guestmount --help
Nota: Se si esegue il comando in un’altra directory, specificare il percorso completo del file VHD, ad esempio: guestmount --add /media/user1/data/test-disk.vhd --ro /mnt/vhd/ -m /dev/sda1
Verificare il contenuto dell’immagine VHD montata:
ls -al /mnt/vhd/

Per smontare il disco virtuale, utilizzare il comando:
guestunmount /mnt/vhd/
Allo stesso modo, è possibile montare file VHDX nella directory /mnt/vhd/ creata in precedenza e copiare il contenuto dal disco virtuale montato:
guestmount --add /media/user1/data/WinServer2016.vhdx --ro /mnt/vhd -m /dev/sda2
Dove: /dev/sda2 viene utilizzato perché /dev/sda1/ è la partizione di servizio creata per impostazione predefinita dal programma di installazione di Windows.
È possibile visualizzare il contenuto della partizione di sistema di Windows (disco C:) del disco virtuale VHDX nella console di Linux (vedere la schermata qui sotto).

Come aprire un file VHD in Windows
- Aprire la finestra Gestione del computer (fare clic con il tasto destro del mouse su Risorse del computer e selezionare Gestisci dal menu contestuale).

- Nella finestra Gestione del computer , selezionare Gestione disco , quindi fare clic su Azione > Collega VHD .

- Nella finestra a comparsa, specificare il percorso del file VHD o VHDX. Selezionare la casella di controllo Sola lettura se non si desidera scrivere dati sul disco virtuale. Questa opzione protegge inoltre i dati memorizzati sul disco virtuale da eventuali danneggiamenti accidentali.

- Il disco è ora montato e visualizzato nella finestra Gestione disco e in Esplora risorse (in questo caso l’unità X: ).
Nota: Windows è in grado di rilevare solo partizioni con file system supportati: NTFS, FAT32, exFAT e ReFS. Se il disco virtuale contiene partizioni Linux con file system ext3, ext4 e altri, non sarà possibile visualizzare il contenuto dei file VHD o VHDX montati sul sistema Windows senza strumenti di terze parti.
Per smontare un disco virtuale VHD o VHDX dal sistema Windows, aprire Esplora risorse, fare clic con il pulsante destro del mouse sulla lettera dell’unità assegnata al disco virtuale e, nel menu contestuale, selezionare Espelli .

Ora, dopo aver verificato il contenuto del disco virtuale VHD (VHDX) e esserti assicurato che si tratti del disco corretto, puoi procedere con la conversione in VMDK. Esistono due metodi molto convenienti per convertire un VHD in VMDK: utilizzando qemu-img e utilizzando VBoxManage . Entrambe le soluzioni sono gratuite e vengono illustrate di seguito.
Come convertire un file VHD in VMDK con qemu-img
QEMU è una piattaforma open source di emulazione e virtualizzazione. Qemu-img è un’utilità del kit software QEMU che può essere utilizzata per convertire dischi virtuali da un formato all’altro. Qemu-img può essere utilizzato per convertire un file VHD in VMDK, e l’utilizzo di questa utilità è il primo metodo che tratteremo. Qemu-img può essere eseguito sia su sistemi operativi Windows che Linux.
Utilizzo di qemu-img su Linux
In questo esempio viene utilizzato Ubuntu Linux per eseguire qemu-img .
- Per prima cosa, installare qemu-img dai repository software online:
sudo apt-get install qemu-utils - Andare nella directory in cui sono memorizzate le immagini dei dischi virtuali (in questo esempio, i file dei dischi virtuali VHD e VHDX sono memorizzati in /media/user1/data/):
cd /media/user1/data/
Controllare il file VHDX
- Visualizza le informazioni sull’immagine VHD dopo aver eseguito sudo su per ottenere i privilegi di root:
qemu-img info test-disk.vhd

Allo stesso modo, è possibile controllare le informazioni relative al disco virtuale VHDX:
qemu-img info /media/user1/data/WinServer2016.vhdx

Convertire un VHD in VMDK su Linux
- Per convertire un VHD in VMDK con qemu-img su Linux, eseguire il comando come root:
qemu-img convert /media/user1/data/WinServer2016.vhdx -O vmdk /media/user1/data/WinServer2016qemu.vmdk -pDove:
-O– definisce il formato del file di output-p– mostra la barra di avanzamentoAttendere che il processo di conversione termini.
Utilizzo di qemu-img su Windows
- Scarica qemu-img dal sito web ufficiale (sono disponibili per il download i programmi di installazione a 32 bit e a 64 bit). Nell’esempio attuale, qemu-img-win-x64-2_3_0 viene utilizzato.
- Estrai i file dall’archivio scaricato, ad esempio in C:Programsqemu-img .
- Avvia la riga di comando di Windows (CMD) – Premi Windows+R per aprire la finestra “ Esegui ”. Digita “ cmd ” nella finestra e premi Ctrl+Shift+Invio per eseguire il comando come amministratore :
cd C:Programsqemu-imgI comandi di qemu-img in Linux e Windows sono identici.
Converti VHD in VMDK in Windows
Esegui CMD come amministratore e vai alla directory in cui qemu-img è installato.
- Visualizza le informazioni sul disco virtuale:
qemu-img.exe info c:VirtualHyper-Vtest-disk.vhd - Converti l’immagine del disco VHD nel formato VMDK:
qemu-img.exe convert -p c:VirtualHyper-Vtest-disk.vhd -O vmdk c:VirtualHyper-Vtest-disk.vmdkDove:
-p– mostra lo stato di avanzamento-O– il file di outputAttendi fino a quando il processo di conversione termina.

Come convertire un file VHD in VMDK con VBoxManage
VBoxManage è l’interfaccia a riga di comando (CLI) per la gestione dell’hypervisor VirtualBox e delle VM. VBoxManage è uno strumento multipiattaforma che viene installato quando si installa VirtualBox (come ricorderete, VirtualBox è una soluzione di virtualizzazione multipiattaforma). Una delle funzioni più interessanti di VBoxManage è la sua capacità di convertire diversi formati di disco virtuale. È possibile convertire un VHD in VMDK utilizzando VBoxManage .
Se si utilizza Windows come sistema operativo host, eseguire CMD come amministratore e accedere alla directory di installazione di VirtualBox per eseguire VBoxManage . Nell’esempio attuale, VirtualBox è installato nella directory predefinita.
cd C:Program FilesOracleVirtualBox
È possibile aggiungere il percorso di installazione di VirtualBox alla variabile di ambiente Path per evitare di dover navigare manualmente nella directory di installazione di VirtualBox ogni volta che si desidera eseguire VBoxManage .
Eseguire il comando per convertire un VHD di Hyper-V in un VMDK di VMware come segue:
VBoxManage clonehd --format vmdk C:virtualHyper-VWinServer2016.vhdx С:virtualHyper-VWinServer2016vbox.vmdk
La sintassi è semplice: si imposta il formato del disco virtuale di destinazione (VMDK) e si definiscono i nomi dei file di origine VHDX e del file di destinazione VMDK .
Attendere che il processo di conversione termini.

Se si utilizza Linux sul computer su cui è installato VirtualBox, utilizzare gli stessi comandi (tenendo presente la struttura delle partizioni e delle directory di Linux).
Creazione di una VM VMware utilizzando il disco virtuale convertito
La conversione di un file VHD in VMDK consente di trasformare le VM Hyper-V in VM VMware. Per completare il processo, è necessario importare il disco virtuale convertito nelle VM VMware create manualmente. Questo approccio può essere utilizzato per le VM in esecuzione su VMware Workstation e VMware ESXi. I restanti dettagli su come convertire Hyper-V in VMware sono illustrati in questa sezione.
VMware Workstation
Se si desidera creare una VM utilizzando un disco virtuale convertito dal formato VHD (VHDX) al formato VMDK in VMware Workstation, è sufficiente creare una nuova VM (oppure aprire una VM esistente se si desidera aggiungere un disco virtuale convertito come disco virtuale aggiuntivo) e selezionare l’opzione per utilizzare un disco virtuale esistente.
Creiamo una nuova VM in VMware Workstation. Fare clic su File > Nuova VM .
Per una spiegazione dettagliata su come creare una nuova VM VMware Workstation, consultare il post del blog all’indirizzo Laboratorio domestico VMware. In questa sezione del post di oggi, l’attenzione è rivolta ai passaggi necessari per importare un disco virtuale VHD convertito nella VM VMware Workstation. Pertanto, è necessario prestare particolare attenzione ai seguenti passaggi:
- Selezionare “ I will install an operating system later”, e scegliere la versione del sistema operativo guest (OS) che era installata sulla VM di origine di cui è stato convertito il disco virtuale ( Windows Server 2016 in questo caso). Se si utilizza una versione precedente di VMware Workstation, selezionare Windows 10 come versione del sistema operativo ospite.

Il nome della VM è Win2016converted nel nostro esempio. I file della nuova VM sono memorizzati in C:VirtualWin2016converted .
- Selezionare “ Use an existing virtual disk ” nella fase Select a Disk .

- Specificare un percorso per il file VMDK esistente oppure sfoglia il file. In questo caso, il percorso del file VMDK è:
C:VirtualHyper-VWinServer2016qemu2.vmdk

- Se viene visualizzata la finestra di dialogo che suggerisce di convertire un disco virtuale esistente in un formato più recente, la scelta spetta all’utente. È consigliabile convertire un disco virtuale in un formato più recente se non si intende utilizzare tale disco virtuale per VM di versioni precedenti (che dispongono di hardware virtuale meno recente).
- Selezionare BIOS come tipo di firmware nelle opzioni della macchina virtuale, se la macchina virtuale Hyper-V di origine era configurata per utilizzare il BIOS. In caso contrario, la macchina virtuale VMware a cui è stato collegato un disco virtuale convertito dal formato Hyper-V al formato VMware non si avvierà. Dopo aver creato una VM, è possibile verificare questa impostazione andando su VM > Impostazioni , selezionando la scheda Opzioni > Avanzate .

Ora la VM dovrebbe avviarsi correttamente. Dopo l’avvio del sistema operativo guest, installare VMware Tools.

VMware ESXi
È inoltre possibile convertire un file VHD in VMDK e importare il disco virtuale convertito in una macchina virtuale VMware in esecuzione su un Host VMware ESXi. Tuttavia, il formato del disco virtuale VMware utilizzato da VMware Workstation e VMware ESXi è diverso. Un disco virtuale nel formato VMware Workstation presenta un descrittore del disco integrato in un unico file File VMDK. Un disco virtuale in formato ESXi è costituito da due file separati: un file di dati (.vmdk ) e un file descrittore del disco (-flat.vmdk ). Per poter utilizzare un disco virtuale che avete convertito dal formato Hyper-V con qemu-img o VBoxManage su una VM in esecuzione su ESXi, dovete convertire quel disco virtuale dal formato workstation al formato ESXi. In caso contrario, verrà visualizzato il messaggio di errore: “ Tipo di disco 2 non supportato o non valido ”.

Vediamo come utilizzare un disco virtuale convertito dal formato VHD per una VM in esecuzione su ESXi.
Conversione di un file VMDK nel formato ESXi
- Caricare il file VMDK convertito nell’archivio dati collegato a un host ESXi. Utilizzare un client SCP/SFTP, l’interfaccia web di VMware Host Client o VMware vSphere Client per caricare il disco virtuale convertito vmdk nel datastore ESXi.
Nel nostro esempio, il WinServer2016qemu.vmdk viene caricato nel SSD1 datastore, allegato all’host VMware ESXi con l’indirizzo IP 10.10.10.74.

- Assicurarsi che l’accesso SSH sia abilitato sull’host ESXi ( Gestisci > Servizi > TSM-SSH ).

- Connettersi all’host ESXi tramite SSH utilizzando un client SSH (ad esempio, PuTTY).
- Accedere alla directory in cui è archiviato il file del disco virtuale VMDK convertito dal formato VHD di Hyper-V (in questo esempio, il file vmdk è archiviato in /vmfs/volumes/SSD1/converted/):
cd /vmfs/volumes/SSD1/converted/ - Utilizzare vmkfstools per convertire un disco virtuale in formato workstation in un disco virtuale in formato ESXi. Nel nostro esempio, un con allocazione dinamica disco virtuale in formato ESXi rappresenta il tipo di disco virtuale di destinazione. Eseguire i comandi come root.
vmkfstools -i WinServer2016qemu.vmdk WinServer2016thin.vmdk -d thin
Come si può vedere dallo screenshot, la conversione del file VMDK dal formato workstation al formato ESXi tramite vmkfstools si è conclusa con successo e sono stati creati due nuovi file:
WinServer2016thin-flat.vmdk
WinServer2016thin.vmdk

Importazione di un disco VMDK in una macchina virtuale su ESXi
Aprire VMware Host Client (è preferibile utilizzare VMware vSphere Client se è effettuata l’implementazione di vCenter, ma è possibile utilizzare VMware Host Client in quasi tutti i casi, compreso uno scenario con ESXi Edizione gratuita). Lo stesso flusso di lavoro si applica alle versioni da 6.5 a 9.0 di VMware vSphere/ESXi.
Nell’interfaccia web di VMware Host Client, selezionare VM e fare clic su Crea/Registra VM .

Si apre la procedura guidata per la nuova VM.
- Selezionare il tipo di creazione . Fare clic su Crea una nuova VM. Fare clic su Avanti in ogni passaggio per continuare.

- Selezionare un nome e un sistema operativo guest. Selezionare la versione della VM, la famiglia del sistema operativo guest e la versione del sistema operativo guest. In questo esempio, il nome della VM è Win2016converted . La VM è compatibile con ESXi 6.5 o versioni successive. La famiglia del sistema operativo ospite è Windows e la versione del sistema operativo ospite è Microsoft Windows 2016 (64 bit).

- Selezionare lo storage. Selezionare l’archivio dati in cui si desidera archiviare i file della VM. Il nome dell’archivio dati utilizzato in questo esempio è SSD2.

- Personalizzare le impostazioni. Questo passaggio è il più importante nel nostro caso. Eliminare il disco virtuale creato per impostazione predefinita con la nuova VM. Quindi, fare clic su Aggiungi disco rigido > Disco rigido esistente .

Nel browser dell’archivio dati, selezionare il disco virtuale che è stato convertito da VHD a VMDK e, successivamente, dal formato VMware Workstation al formato VMware ESXi (thin-provisioned). Come ricorderete, il disco virtuale convertito è costituito da due file (.vmdk e -flat.vmdk ), ma nel browser dell’archivio dati viene visualizzato un solo file vmdk . Non preoccupatevi: si tratta di una funzione di VMware Host Client. Entrambi i file copiati nell’archivio dati ESXi sono presenti. È possibile verificarli nella console ESXi o collegandosi tramite SSH. Nell’esempio attuale, è possibile notare che la dimensione attuale del disco virtuale è di 9,11 GB, ma la dimensione massima assegnata a questo disco è di 30 GB.

Dopo aver aggiunto il disco virtuale VMDK convertito, è possibile notare il campo “inattivo” in cui viene visualizzata la dimensione di 9 GB (la dimensione attuale) del disco virtuale da 30 GB.

- Pronti per il completamento. In questa fase, è possibile verificare le impostazioni. Se tutto è corretto, fare clic su Fine per creare una nuova macchina virtuale.

Ora è possibile accendere la macchina virtuale (fare clic con il tasto destro del mouse sul nome della VM e, nel menu contestuale, selezionare Alimentazione > Accendi ).

La macchina virtuale con il disco virtuale convertito si è avviata correttamente e la rete funziona correttamente. Ora è possibile installare VMware Tools sul sistema operativo ospite.

Conclusione
Se si desidera convertire VM Hyper-V in VMware, è possibile convertire un VHD in VMDK e quindi collegare il disco virtuale VMDK convertito a una nuova VM VMware. Qemu-img può essere utilizzato come convertitore da VHD a VMDK e VBoxManage può essere utilizzato come alternativa. Entrambe le soluzioni sono gratuite e multipiattaforma, consentendo di convertire un VHD di Hyper-V in un VMDK di VMware su diversi sistemi operativi. Si tenga presente che, se si desidera utilizzare un disco virtuale convertito con qemu-img o VBoxManage per VM ESXi, è necessario convertire il disco virtuale VMDK dal formato workstation al formato ESXi utilizzando vmkfstools nella riga di comando di ESXi.
Se si desidera utilizzare strumenti semi-automatici o completamente automatici per convertire l’intera macchina virtuale Hyper-V in una macchina virtuale VMware, è possibile utilizzare il software gratuito VMware vCenter Converter Standalone. Indipendentemente dall’hypervisor utilizzato, la protezione dei dati è essenziale. NAKIVO Backup & Replication offre la funzione di ripristino multipiattaforma, che consente di convertire i dischi VHD dai backup delle macchine virtuali in dischi VMDK e di ripristinare le macchine virtuali Hyper-V su hypervisor VMware.