[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Patching error while setting up COLO



On Thu, 2016-02-25 at 16:49 +0800, Changlong Xie wrote:
> Sorry for this. Since we have no privilege to update the Wiki for a long 
> time so most contents of this page are dated : (

Anyone can be granted access, it is only a manual process because of
spammers. Please create an account and then fill in the form at:
http://xenproject.org/component/content/article/100-misc/145-request-to-be-made-a-wiki-editor.html

> 
> Anyway i'll write down detail steps here for colo on XEN.
> 
> [Requirements]
> - Hardware
> There is at least one directly connected nic to forward the network 
> requests from primary to secondary vm. The directly connected nic must 
> not be used by any other purpose. If your guest has more than one nic, 
> you should have directly connected nic for each guest nic. If you don't 
> have enouth directly connected nic, you can use vlan.
> 
> - Dom0
> 1. Kernel with dom0 support
> 2. kernel module
>     nf_conntrack
>     nf_conntrack_ipv4
>     nf_nat
>     libnl-tools >= 3.0.
> *Note*: If your host os has OEM-released xen tools, *MUST* uninstall it 
> first.
> 
> - Guest
> Only HVM guest(without pv extensions) is supported now. If you want to 
> use OEM released guest os, please use SUSE(we use "SUSE Linux 
> Enterprise Server 11" currently). REDHAT and Ubuntu is not supported 
> now because I don't find any way to disable pv extensions. If you want 
> to use REDHAT or Ubuntu, you need to build the newest kernel which has 
> the parameter xen_nopv.
> 
> 
> [SETUP]
> - Network link topology
> ref: http://wiki.xenproject.org/wiki/COLO_-_Coarse_Grain_Lock_Stepping
> 
> -  Test environment prepare
> 
> On both Primary/Secondary hosts:
> 1.
> cd ~
> git clone https://github.com/wencongyang/colo-proxy
> git clone https://github.com/macrosheep/iptables.git
> git clone https://github.com/torvalds/linux
> git clone https://github.com/wencongyang/qemu-colo
> git clone https://github.com/wencongyang/xen
> 
> 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
> 1) cd ~/colo-proxy/; git checkout 405527cbfa9f
> 2) cd ~/linux/; git checkout v4.0; git am 
> ~/colo-proxy/colo-patch-for-kernel.patch
> 3) 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
> 4) make -j8; make modules_install; make install
> 5) reboot
> 
> 3. build colo-proxy
> 1) cd ~/colo-proxy/; git checkout 405527cbfa9f; make; make install
> 
> 4. build iptables
> 1) cd iptables; ./autogen.sh; ./configure --prefix=/usr/ 
> --libdir=/usr/lib64; make; make install
> 
> 5. build qemu-colo
> 1) cd ~/qemu-colo/; git checkout colo-xen-v2
> 2)
> path_to_xen_source=~/xen
> ./configure --enable-xen --target-list=x86_64-softmmu \
>             --extra-cflags="-I$path_to_xen_source/tools/include 
> -I$path_to_xen_source/tools/libxc -I$path_to_xen_source/tools/xenstore" \
>             --extra-ldflags="-L$path_to_xen_source/tools/libxc 
> -L$path_to_xen_source/tools/xenstore"
> make -j4
> 
> 6. build xen
> 1) cd ~/xen/; git checkout colo_v10
> 2)
> ./autogen.sh
> ./configure --enable-debug
> touch tools/libxl/libxlu_disk_l.l
> touch tools/libxl/libxlu_cfg_l.l
> make dist-xen -j8
> make dist-tools -j8
> make install-xen -j8
> make install-tools -j8
> 
> 7. configure /boot/grub/menu.list to support xen, then reboot
> 
> [ Run COLO ]
> 
> 1.
> on 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
> 
> on 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/xie/suse-64hvm.img
> tmp_disk_size=`./qemu-colo/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/xie/xen/tools/qemu-xen-dir/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
> 
> 2. on primary
> xl cr hvm_nopv_colo
> sleep 10
> xl pause hvm_nopv_colo
> xl remus -c -u hvm_nopv_colo 192.168.3.2
> 
> hvm_nopv_colo attached.
> 
> 
> That's all, good luck ; )
> 
> Thanks
>      -Xie
> 
> > Victor
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxx
> > http://lists.xen.org/xen-devel
> > 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.