Een virtuele machine tussen ESXi machines kopiëren met ovftool

 
20 september 2012

De afgelopen periode heb ik mij wat gefrustreerd over het kopiëren van virtuele machines tussen VMWare player en een ESXi server en tussen ESXi servers.
Op zich is het kopiëren van VMWare player naar ESXi geen probleem met VMWare converter. Echter is dit een tijdrovend proces.
Omdat ik dit na verloop van tijd zat werd dacht ik slim te zijn door de VM’s gewoon op de server zelf te maken.
Dit had ik natuurlijk veel eerder moeten doen omdat ik dan tijdens het opzetten gebruik kom maken van de snapshot functionaliteit.

Nu heb ik echter in onze speelomgeving twee ESXi server, vs3 en vs4.
Dit zijn losse bakken met eigen disken (dus niet op een SAN).
De cpu in de machines hebben 4 cores. Om lekker te werken verdeel ik dus de cursisten over de twee machines.
Nu moest ik dus wel die VM’s gemaakt op vs3 op de vs4 zien te krijgen.
Dit deed ik door in de datastore browser in VMWare vSphere de VM in uit de datastore van vs3 te downloaden naar mijn laptop en vervolgens te uploaden naar de vs4.
Deze manier is niet bijster snel en ben zo al snel een ochtend bezig met 1 VM.

Ik dacht dat moet handiger (en sneller) kunnen. Zodoende ben ik allerlei manieren die ik via google vond uit gaan proberen.
Tips die je vaak tegenkomt zijn het gebruik van FASTScp en VMWare converter.
FASTScp zegt 6x sneller te zijn als gewone scp maar het probleem is hier meer de VMWare api die ze gebruiken.
De snelheid van kopiëren bleef tussen de 2 en 3 MB/s hangen. Omdat hij ook nog een gebruik maakt van de flat disk kopiëer je ook nog eens de volledige grootte van de harddisk.
Stel je hebt een virtuele disk van 40GB die je laat groeien en er eigenlijk maar 15GB gebruikt wordt pompt hij toch de 40GB (thick) variant over.
Ook bij de converter leek dit tussen ESXi machine een probleem te zijn en ook daar kwam de snelheid niet boven de 2MB/s uit.

Eerst dacht ik nog dat het netwerk gerelateerd zou zijn maar de machines zaten in dezelfde 1Gb switch.
Nadat ik op google veel andere opmerking vond over de snelheid problemen gooide ik het weer even over een ander boeg en kwam ik op de volgende blog uit: how-to-copy-vms-directly-between-esxi
Hierbij wordt gebruik gemaakt van de ovftool (registratie is verplicht) van VMWare. Deze gebruikte ik ook al om mijn VM’s op te slaan als backup.
Je blijkt hiermee ook goed VM’s over te kunnen zetten.

In het kort (Uitgebreide versie kun je op de genoemde URL vinden):

De signature van het command is
ovftool.exe <source locator> <target locator>

De <source locator> kan een vSphere locator zijn, die verwijst naar een VM, in de vorm van vi://username@server/vm_naam
De <target locator> kan een vSphere locator zijn naar een vSphere locatie in de vorm van vi://username@server/

Zonder enige andere argumenten zal de vm van de eerste server naar de andere worden gekopiëerd en aan de inventory van server 2 gezet.
In de vSphere client zie je ook dat er een ‘Export OVF template’ task is op server 1 en een ‘Deploy OVF template’ task op server 2 staat.
Het grote voordeel hier is dat de datastrrom tussen de twee servers loopt en niet via een derde systeem.

Nog wel een paar kleine puntjes:

  • Als je VM in een resourcepool staat dien je deze ook op te nemen in je locator.
    vi://username@server/resourcepool_naam/vm_naam voor de source locator en
    vi://username@server/resourcepool_naam/ voor de target locator.
  • Standaard zal deze tool ook de volle disk kopiëren dit kun je aanpassen door
    -dm=thin mee te geven.
  • De naam van de VM zal hetzelfde zijn op de verschillende servers. Als je dit niet wil dien je de -n optie mee te geven.
  • In mijn geval had ik 2 datastores. De 1e zat redelijk vol dus wilde de VM kopiëren naar een specifieke datastore. Dit kan met de -ds optie.

Uiteindelijk zag mijn command en resultaat er zo uit:

ovftool.exe -ds=datastore2 -dm=thin -n=WebserviceCase_03 ^
More? vi://user@vs3/resourcepool2/WebserviceCase_02 ^
More? vi://user@vs4/resourcepool2
Please enter login information for source vi://vs3/
Username: user
Password: *************
Opening VI source: vi://user@vs3:443/resourcepool2/WebserviceCase_02
Please enter login information for target vi://vs4/
Username: user
Password: *************
Opening VI target: vi://user@vs4:443/resourcepool2
Deploying to VI: vi://user@vs4:443/resourcepool2
Disk Transfer Completed

Completed successfully


Werken met ?
Kijk dan bij onze mogelijkheden voor starters en/of ervaren IT'ers.


Categorieën: Development

Tags: , ,