VirtualBox Teleporting


In this entry, I will demonstrate how to use the new feature of
VirtualBox version 3.1 Migration (a.k.a teleporting) for moving a
virtual machine over a network from one VirtualBox host to another,
while the virtual machine is running.

Introduction to VirtualBox

is a general-purpose full virtualizer for x86 hardware.
Targeted at server, desktop and embedded use, it is now the only
professional-quality virtualization solution that is also Open Source

Introduction to Teleporting

Teleporting requires that a machine be currently running on one host,
which is then called the "source". The host to which the virtual
machine will be teleported will then be called the "target". The
machine on the target is then configured to wait for the source to
contact the target. The machine's running state will then be
transferred from the source to the target with minimal downtime.

This works regardless of the host operating system that is running on
the hosts: you can teleport virtual machines between Solaris and Mac
hosts, for example.

Architecture layout :

Prerequisites :

1. The target and source machines should both be running VirtualBox version 3.1or later.

2. The target machine must be configured with the same amount of memory
(machine and video memory) and other hardware settings,  as the source
machine. Otherwise teleporting will fail with an error message.

3. The two virtual machines on the source and the target must share the same storage

  they either use the same iSCSI targets or both hosts have access to  the same storage via NFS or SMB/CIFS.

4. The source and target machines cannot have any snapshots.

5. The hosts must have fairly similar CPUs. Teleporting between Intel and AMD CPUs will probably fail with an error message.

Preparing the storage environment

For this example, I will use OpenSolaris x86 as CIFS server in order to
enable shared storage for the source and target machines ,but you can
use any iSCSI NFS or CIFS server for this task.

Install the packages from the repository:

# pfexec pkg install SUNWsmbs SUNWsmbskr

Reboot the system to activate the SMB server in the kernel.

# pfexec reboot

Enable  the CIFS service:

# pfexec svcadm enable –r smb/server

If the following warning is issued, you can ignore it:

svcadm: svc:/milestone/network depends on svc:/network/physical, which has multiple instances

Verified the service

# pfexec svcs smb/server

STATE          STIME    FMRI

online          8:38:22 svc:/network/smb/server:default

The Solaris CIFS SMB service uses WORKGROUP as the default group. If
the workgroup needs to be changed, use the following command to change
the workgroup name:

# pfexec smbadm join –w workgroup-name

Next edit the /etc/pam. conf file to enable encrypted passwords to be used for CIFS.

Add the following line to the end of the file:

other password required pam_smb_passwd. so. 1     nowarn

# pfexec  echo "other password required     nowarn" >> /etc/pam.conf

 Each user currently in the /etc/passwd file needs to re-encrypt to be able to use the CIFS service:
# pfexec passwd user-name

Note -
After the PAM module is installed, the passwd command
automatically generates CIFS-suitable passwords for new users. You must
also run the passwd command to generate CIFS-style passwords for
existing users.

Create mixed-case ZFS file system.

# pfexec zfs create -o casesensitivity=mixed  rpool/vboxstorage

Enable SMB sharing for the ZFS file system.

# pfexec  zfs set sharesmb=on rpool/vboxstorage

Verify how the file system is shared.

# pfexec sharemgr show -vp

Now, you can access the share by connecting to \\\\solaris-hostname\\share-name

Create new Virtual machine, for the virtual hard disk select “Create new hard disk” then select next

Select the next button

For the disk location enter the network drive that you mapped from the previous section then press the next button

Verify the disk settings and then press
the finish button

Continue with the Install process ,after finishing the install process shutdown the Virtual machine in order to avoid any storage locking.

On the target machine :

Map the same network drive

Configure a new virtual machine but
instead of selecting “Create new hard drive” select use “Use existing hard drive”.

In the Virtual Media Manger window
select the Add button,and point to the same location as the
source machine hard drive ( the network drive).

Don't start the Virtual machine yet.

To wait for a teleport request to arrive when it is started,use the following VBoxManage command:

VBoxManage modifyvm <targetvmname> --teleporter on --teleporterport <port>

where <targetvmname> is the name of the virtual machine on the
target in this use case opensolaris  ,and <port> is a TCP/IP
port number to be used on both the source and the target. In this example, I used port 6000.

C:\\Program Files\\Sun\\VirtualBox>VBoxManage modifyvm  opensolaris --teleporter on --teleporterport 6000

Next, start the VM on the target. You will see that instead of actually
running, it will show a progress dialog. indicating that it is waiting
for a teleport request to arrive.

You can see that the machine status changed to Teleporting 

On the source machine: 

Start the Virtual machine

When it is running and you want it to be teleported, issue the following command :
VBoxManage controlvm <sourcevmname> teleport --host <targethost> --port <port>
where <sourcevmname> is the name of the virtual machine on the
source (the machine that is currently running), <targethost> is
the host or IP name of the target that has the machine that is waiting
for the teleport request, and <port> must be the same number as
specified in the command on the target (i.e. for this example: 6000).
C:\\Program Files\\Sun\\VirtualBox>VBoxManage controlvm opensolaris  teleport --host target_machine_ip --port 6000
VirtualBox Command Line Management Interface Version 3.1.0
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.
You can see that the machine status changed to Teleported

The teleporting process took ~5 seconds

For more information about VirtualBox


Thanks,this tool and guide works fine in my server platform.
But I have a question:
I have two sunfire 4170 servers with Vbox 3.2.6, connected to an iscsi SAN.In this server i run two virtual machines with mswindows 2003 server.
The teleporttaion works fine, but when I try to go back, again the status of the virtual machines show "teleporting" again.
Are there a config or method that I can use like a DRP?


Posted by Victor Hugo Morales on November 19, 2010 at 05:56 PM IST #

Post a Comment:
  • HTML Syntax: NOT allowed

This blog covers cloud computing, big data and virtualization technologies


« April 2014