COLO - Coarse Grain Lock Stepping

From Xen
Jump to navigationJump to search

COLO or Coarse Grain Lock Stepping is an High Availability solution that builds on top of Remus. It is one of the features that is tracked in the Xen 4.5 Development Update.

Background

COLO FT/HA (COarse-grain LOck-stepping Virtual Machines for Non-stop Service) project is a high availability solution. Both primary VM (PVM) and secondary VM (SVM) run in parallel. They receive the same request from client, and generate response in parallel too. If the response packets from PVM and SVM are identical, they are released immediately. Otherwise, a VM checkpoint (on demand) is conducted. The idea is presented in Xen summit 2012, and 2013, and academia paper in SOCC 2013.

Components

  • COLO Manager:
    • COLO Controller - Modifications of save/restore flow (based on Remus).
    • COLO Disk Manager - When primary VM writes data into image, the colo disk manger captures this data
and send it to secondary VM’s which makes sure the context of secondary VM's image is consentient with
the ontext of primary VM 's image.
  • COLO Agent
We need an agent to compare the packets returned by Primary VM and Secondary VM
and decide whether to start a checkpoint according to some rules. It is a linux kernel module
for host.

Current Status

COLO (based on xm) has already been in development for over three years. A paper has come out at 2013. Since XEN has deprecated xm and turn to xl, we are implementing COLO on xl now. The overall status of COLO:

Requirements

Hardware requriements

There is at least one directly connected nic to forward the nic from client 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 requirements

  • Kernel with dom0 support
  • kernel module
    • sch_ingress
    • cls_basic
    • cls_tcindex
    • cls_u32
    • act_mirred
    • ifb
    • blktap2
  • libnl-tools >= 3.0. This package provides the command nl-qdisc-list, and colo need this command.
  • If your host os has OEM-released xen tools, please uninstall it first.
  • You can load the module which is not provided by OEM.
Note: Only SUSE may provide blktap2 module. If your kernel don't have it, you can build it:
a. Export the symbol zap_page_range() from kernel
b. Get the blktap2 source from [https://github.com/wencongyang/blktap here]

Guest requirements

Only HVM guest(without pv extensions) is supported now. If you want to use OEM released guest os, please use SUSE. 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 COLO environment

TODO

Links

For more information see: