Hello,

I've been trying to set COLO replication to work but i'm stuck on a problem
when migrating de primary VM to secondary host.

I have been following the instructions from this wiki

- http://wiki.xenproject.org/wiki/COLO_-_Coarse_Grain_Lock_Stepping

and this mail thread

 -
http://xen.markmail.org/search/?q=COLO#query:COLO+page:1+mid:fb7wrn62vbks4unn+state:results

I'm anexing the steps i took setting the environment before facing this
problem when executing 'xl remus' command:

>migration target: Ready to receive domain.
>Saving to migration stream new xl format (info 0x3/0x0/2840)
>Loading new save file <incoming migration stream> (new xl fmt info
0x3/0x0/2840)
>Savefile contains xl domain config in JSON format
>Parsing config from <saved>
>xc: info: Saving domain 2, type x86 HVM
>xc: info: Found x86 HVM domain from Xen 4.7
>xc: info: Restoring domain
>xc: Frames iteration 0 of 5: 1045504/1045504  100%
>xc: Domain now suspended: 0/0    0%
>libxl: error: libxl_qmp.c:702:libxl__qmp_initialize: Connection error: No
such file or directory
>libxl: error: libxl_colo_restore.c:817:colo_restore_setup_cds_done: COLO:
failed to setup device >for guest with domid 1
>xc: error: Restore failed (38 = Function not implemented): Internal error
>libxl: info: libxl_colo_restore.c:320:libxl__colo_restore_teardown: colo
fails
>libxl: error: libxl_stream_read.c:852:libxl__xc_domain_restore_done:
restoring domain: Function >not implemented
>libxl: info: libxl_colo_restore.c:320:libxl__colo_restore_teardown: colo
fails

I'm hoping that someone could provide with directions.

Thanks for your time and sory for bad english (not native language).


Sadi.
Network

master:
br0 : 10.20.107.30 binded with eth0
eth1: 192.168.1.30
eth2: 192.168.2.30

slave:
br0 eth0: 10.20.107.33 binded with eth0
br1: no ip address binded with eth1
eth1: 192.168.1.33
eth2: 192.168.2.33

Eth1 both sides directly connected by cable
Eth2 both sides directly connected by cable

Repositories used:

https://github.com/Pating/colo-proxy/tree/changlox
https://github.com/macrosheep/iptables.git 
https://github.com/torvalds/linux 

https://github.com/wencongyang/xen 

Kernel build instructions followed:

2. Prepare host kernel for Dom0
colo-proxy kernel module need cooperate with linux kernel. You should patch 
kernel with ~/colo-proxy/colo-patch-for-kernel.patch 
-cd ~/colo-proxy/; git checkout 405527cbfa9f
-cd ~/linux/; git checkout v4.0; git am 
~/colo-proxy/colo-patch-for-kernel.patch 
-cp /boot/config-3.0.76-0.11-xen .config; make menuconfig to config your kernel 
support Dom0. Ref: 
http://wiki.xenproject.org/wiki/Mainline_Linux_Kernel_Configs 
-make -j8; make modules_install; make install 
-reboot


COLO-Proxy:

-cd ~/colo-proxy/; git checkout 405527cbfa9f; make; make install

IPTables:

-cd iptables; ./autogen.sh; ./configure --prefix=/usr/ --libdir=/usr/lib64; 
make; make install

XEN:

-./autogen.sh
-./configure --enable-debug 
-touch tools/libxl/libxlu_disk_l.l 
-touch tools/libxl/libxlu_cfg_l.l 
-make dist-xen 
-make dist-tools 
-make install-xen 
-make install-tools 

*i've tried with https://github.com/wencongyang/qemu-xen but got an error with 
qemu when xl creating the VM as follows:

>libxl: error: libxl_qmp.c:287:qmp_handle_error_response: received an error 
>message from QMP server: Could not set password

Qemu

-cd ~/qemu-xen/; git checkout colo-xen-v2

Configured QEMU with script provided at:
http://xen.markmail.org/message/y4jcdqxw2s2labdo?q=COLO#query:COLO+page:1+mid:3lzcuzeokqsqpu4i+state:results

*path_to_xen_source updated according my directory tree.
then..

-make
-make install

Running COLO

*HVM SUSE 64bits

primary:
rm -f /var/log/xen/* 
rm -f /var/lib/xen/userdata-d.* 
service xencommons start 
modprobe nf_conntrack_ipv4 
modprobe xt_PMYCOLO sec_dev=eth1

secondary:
rm -f /var/log/xen/*
rm -f /var/lib/xen/userdata-d.*
service xencommons start
modprobe xt_SECCOLO
active_disk=/mnt/ramfs/active_disk.img
hidden_disk=/mnt/ramfs/hidden_disk.img
local_img=/root/new/SUSE/xenguest.img
tmp_disk_size=`/root/new/pating/qemu-xen/qemu-img info $local_img |grep 
'virtual size' |awk  '{print $3}'`
rm -rf /mnt/ramfs/*
umount /mnt/ramfs/
rm -rf /mnt/ramfs/
mkdir /mnt/ramfs

function create_image()
{
     /root/new/pating/qemu-xen/qemu-img create -f qcow2 $1 $tmp_disk_size
}
function prepare_temp_images()
{
     grep -q "^none /mnt/ramfs ramfs" /proc/mounts
     if [[ $? -ne 0 ]]; then
         mount -t ramfs none /mnt/ramfs/ -o size=2G
     fi

     if [[ ! -e $active_disk ]]; then
         create_image $active_disk
     fi

     if [[ ! -e $hidden_disk ]]; then
         create_image $hidden_disk
     fi
}
prepare_temp_images

primary:

xl create new/SUSE/vm-suse.cfg
xl pause vm-suse
xl remus -c -u vm-suse 192.168.2.33


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to