Monday, September 16, 2013

Quick & Easy migrate VM from Oracle VM 2.x to 3.x

I have come across customers running their Virtual Machines (VM) on Oracle VM 2.x wanting to migrate them to Oracle VM 3.x
Most of the time the engineers think the migration to 3.x is a lot of work. I have seen situations where they installed fresh new VM’s on Oracle VM 3.x  and migrated the applications or they performed full system restores on them. A lot of work …, more than migrating!

The migration of Oracle VM 2.x to 3.x is, simply put, nothing more than importing the VM as a template into Oracle VM 3.x and create a new VM based on this template.

As of Oracle 3.x the only way to import a template, is to upload them using ftp of http(s).
A standard approach is to copy the img and cfg files to local storage on, for example, a ftp- of webserver and from there upload them to Oracle VM 3.x as a template. In al this can be a very time consuming job due to network connectivity. Especially when moving to and from DMZ’s through firewalls.

In this article I wil demonstrate a quick and easy way to migrate a VM from Oracle VM 2.x to 3.x
Without the hassle of first copying them to a local disk storage and the uploading them to Oracle VM 3.x.

Network connectivity, ftp or http(s), between the OVM Server 2.x and the new OVM Server 3.x

Steps to a quick and easy migration

Make the VM files available on the OVM Server 2.2

Shutdown the VM
[root@vm1 ~]# poweroff

Logon to the OVM Server
Check if the VM is really down.
[root@ovmserver1]# xm list
Name                            ID   Mem VCPUs      State   Time(s)
1548_vm1                         8 13312     4     -b---- 544793.2

Stop iptables (if running) for the duration of the migration.
Or create a rule that allows http access to the OVM Server is you prefer.
[root@ovmserver1]# service iptables stop
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]

Change directory to the location of the img and vmcfg files of the VM.
cd /OVS/running_pool/1548_vm1
ls -l
-rw-r--r-- 1 root root          280 Nov 24  2011 README -rw-r--r-- 1 root root  13316728320 Jun 10 17:11 System.img -rw-rw-rw- 1 root root 209715200000 Sep  6 08:04 u01.img -rw-r--r-- 1 root root          569 Sep  6 08:11 vm.cfg

Make a backup of the vm.cfg and remove the mac address and xenbr0 from it.
A new mac address and network will me provided by OVM 3.x later.
cp vm.cfg
vi vm.cfg

vif = ['bridge=xenbr0,mac=00:16:3E:44:0D:7F,type=netfront']

vif = ['type=netfront']

Now to make the file available for direct upload we need a http of ftp server on OVM 2.x
I do not want to install additional software on the OVM Server.
Luckily Oracle (xen) uses a lot of python!!
Python has the SimpleHTTPServer module which provides a simple http Request handler.

Make sure you are in the directory where the img and vm.cfg files are located.

Start a simple Http server
python -m SimpleHTTPServer 80
Serving HTTP on port 80 ...

Leave this session open for the duration of the migration.

Import the 2.x VM as a template in 3.x using OVM Manager

Open the OVM Manager

Navigate to the Repository tab and go to the ‘VM Templates’.

Click on ‘Import VM Template’

Provide the url to the img and vm.cfg files
Put them all together in the the ‘VM Template URL’s’ box of the Import window.


Substitute the ip-adress with the ip-adress of your OVM Server 2.x

The files will now be uploaded (Or downloaded, depending on perspective)

Now we have a template called System.img
You can change this to a more descriptive name.

Now change the template to fit your needs.

Check/change name, netwerk interface, boot order, etc.

Create a new VM based on this template.

After creation has completed, change properties of the new VM as needed.
Note the MAC address(es) of the interface(s).
This might be needed later on during configuration of OS Guest.

Start the VM using Oracle VM Manager.

Open the console and logon as root.

It might be that you don’t see your network interface (eth0), only your Local Loopback address.

Most of the times you will find the old mac addess is still in ifcfg-eth0 (and -eth1,eth…. if used)
Also there may be a reference to it in /etc/udev/rules.d/60-net.rules or /etc/udev/rules.d/70-persistent-net.rules (depending on OS version)

Put the correct mac address in the ifcfg-eth0 files.
vi /etc/sysconfig/networking/devices/ifcfg-eth0

remove the udev file
rm -f /etc/udev/rules.d/60-net.rules
rm -f /etc/udev/rules.d/70-persistent-net.rules


When the VM come back online, you should have the correct network interfaces back.


Check /etc/sysctl.conf for ‘old’ Xen settings.
For example: xen.independent_wallclock
Adjust or remove them as needed.


  • Remove the VM from your old OVM 2.x server.

Or at least remove it from auto-startup.

  • Remove the template from your Storage Repository.

It takes up space and you risk someone re-using the template. This might cause ip conflicts, etc…

Enjoy migrations …