Menu Chiudi

Proxmox – Convertire da vmware a proxmox-kvm con dischi LVM

Procedura conversione vm windows da vmware a proxmox-kvm con dischi LVM

VM di partenza
 * Macchina windows
 * Due dischi C: (5G) e D: (10G con 4G liberi) separati

VM di arrivo
 * Proxmox pve versione 1.9
 * Macchina windows
 * Un solo disco LVM partizionato per C: e D: (7G + 8G = 15G)
 * VM-ID = 101
 * Lo spazio di lavoro si trova nella cartella /var/lib/vz/images/101

Procedura conversione vm windows da vmware a proxmox-kvm con dischi LVM

VM di partenza
 * Macchina windows
 * Due dischi C: (5G) e D: (10G con 4G liberi) separati

VM di arrivo
 * Proxmox pve versione 1.9
 * Macchina windows
 * Un solo disco LVM partizionato per C: e D: (7G + 8G = 15G)
 * VM-ID = 101
 * Lo spazio di lavoro si trova nella cartella /var/lib/vz/images/101

La procedura, opportunamente modificata è valida pure per dischi di arrivo separati oppure per la trasformazione di macchine linux.

Seguire i passi preliminari come dal sito proxmox!

Procedura

 * Disinstallazione di vmware tools
 * Verifica che in %SystemRoot%\System32\Drivers vi siano i seguenti drivers:
  * Atapi.sys
  * Intelide.sys
  * Pciide.sys
  * Pciidex.sys

   se non presenti si possono trovare in %SystemRoot%\Driver Cache\I386\Driver.cab

 * Lanciare lo script mergide.reg, preventivamente scaricato da qui.

 * Spegnimento vm windows
 * Modifico la configurazione della vm vmware in modo che non parta più in automatico

 * Conversione dei dischi col comando:
   “C:\Program Files\VMware\VMware Server\vmware-vdiskmanager” -r Disk0.vmdk -t 0 vm-101-disk-0.vmdk
   “C:\Program Files\VMware\VMware Server\vmware-vdiskmanager” -r Disk1.vmdk -t 0 vm-101-disk-1.vmdk

 * Creare su proxmox una nuova vm, posso scegliere di fare un unico disco LVM somma dei dischi C: e D: oppure fare vari dischi separati. Io considero il primo caso.
  * Il disco per adesso dovrà avere driver IDE
  * La rete avrà driver virtio
 * Copiare i dischi convertiti con vmware-vdiskmanager dal server vmware al virtualizzatore proxmox nella cartella /var/lib/vz/images/101
 * Convertire il disco C: direttamente in LVM, mentre il disco D: in raw:
    qemu-img convert -f vmdk /var/lib/vz/images/101/vm-101-disk-0.vmdk -O host_device /dev/mapper/Disklvm1-vm–101–disk–1
    qemu-img convert -f vmdk /var/lib/vz/images/101/vm-101-disk-1.vmdk -O raw /var/lib/vz/images/101/vm-101-disk-1.raw
 * Modifico la configurazione della vm per farla partire da cdrom con immagine di gparted:
    ide2: local:iso/gparted-live-0.5.2-9.iso,media=cdrom
    bootdisk=ide2
 * Avvio la vm proxmox
 * Da gparted ridimensiono C: a 7G e formatto il rimanente in NTFS
 * Rimodifico la configurazione della vm per partire dal disco C: ed avere nel cd l’immagine dei drivers virtio:
    ide2: local:iso/virtio-win-1.1.16.iso,media=cdrom
    ide0: Disklvm:vm–101–disk–1
    virtio1: local:101/vm-101-disk-1.vmdk
    bootdisk=ide0

Piccolo inciso

Io voglio copiare solo i dati dal file raw del disco D: nella partizione precedentemente creata con gparted. Visto però che il file /var/lib/vz/images/101/vm-101-disk-1.raw contiene l’immagine di un disco con dentro una partizione contenente il file sistem NTFS, uso kpartx per poterla vedere.

 * Copio i dati nella partizione D:, occhio che la partizione è più piccola:
  * Aggancio il file-disco su di un device:
    losetup /dev/loop0  /var/lib/vz/images/101/vm-101-disk-1.raw
  * Uso kpartx per vedere la partizione contenuta:
    kpartx -av /dev/loop0
  * Ridimensiono la partizione ntfs:
    ntfsresize -s 8G /dev/mapper/loop0p1
  * Mappo la partizione D: del disco LVM tramite kpartx:
    kpartx -av /dev/mapper/Disklvm1-vm–101–disk–1
  * Copio i dati da partizione a partizione, forzando perchè non posso fare un chkdisk dopo la ridimensione:

    ntfsclone -f -O /dev/mapper/Disklvm1-vm–101–disk–1p2 /dev/mapper/loop0p1

 * Riallargo la partizione ntfs di quel che si può:

   ntfsresize -f /dev/mapper/Disklvm1-vm–101–disk–1p2

  * Tolgo le mappature:
    kpartx -dv /dev/loop0
    losetup -d /dev/loop0
    kpartx -dv /dev/mapper/Disklvm1-vm–101–disk–1

 * Avvio la vm nuova, probabilmente ci impiega un po’ di tempo e la rete non funziona
 * Apro la console della vm da interfaccia web di amministrazione di proxmox
  * Primo logon, faccio puilizia di tutti i device fantasma:
   * Apro il prompt comandi e lancio:
     set devmgr_show_nonpresent_devices=1
     cd %SystemRoot%\System32
     start /wait devmgmt.msc
   * Da menù scelgo View e l’opzione Show Hidden Devices
   * Espando ogni ramo, seleziono e cancello ogni device fantasma in grigetto. Se mi viene richiesto il reboot posso ignorarlo
  * Installo tutti i drivers virtio richiesti, sia per la rete che per il controller disco
  * Reimposto la rete con i parametri precedenti, stesso IP, DNS ecc…
  * Spengo la vm

 * Modifico la configurazione della vm per mettere i driver virtio ai dischi e cancello il disco virtio1 di appoggio:
   ide2: local:iso/virtio-win-1.1.16.iso,media=cdrom
   virtio0: Disklvm:vm–101–disk–1
   bootdisk=virtio0
 * Riavvio la vm e sistemo eventuali richieste o reboot
 * Verifico che la nuova vm funzioni correttamente
 * Cancello la vecchia vm vmware

Finito!
Per la verità mi sono accorto che se guardiamo il registro eventi qualcosina di sporco può rimanere.

In primis io trovo all’avvio una segnalazione di due servizi che non partono:

 1. Parallel port

 2. vmware memori controll

Per il primo caso seguire i seguenti passi:

 * Click Start—> scrivi regedit nel box Run e premi invio
 * Localizzare il seguente sottochiave di registro:
   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport
 * Clicca il tasto destro su Start e clicca su modifica.
 * Nel box Value data box, impostati come 4 e clicca su OK

Per il secondo caso invece:

 * Fai un salvataggio preventivo ti tutto il registro con l’opzione EXPORT
 * Posizionati su My Computer
 * Pigia F3 ed inserisci come stringa di ricerca: vmware
 * Dai invio
 * Elimina tutte le chiavi che contengono vmware, vedi di essere sicuro di quello che fai. Di solito vi sono quattro servizi da eliminare in:
   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  * VMMEMCTL
  * vmmouse
  * vmx_svga
  * vmxnet
 * Riavvia la macchina e riverifica nel registro eventi che la ripartenza sia pulita

WordPress Appliance - Powered by TurnKey Linux