Resilient Virtual Machine Monitor is a complete fault tolerance solution for type-I hypervisors adopting one of the most popular VMM architectures, we refer as "pVM-based". This project leverages unikernel and fault tolerance designs to have deal with the fault tolerance of the "dom0" in the Xen virtualization system. More details in the paper "♦ Fine-Grained Fault Tolerance For Resilient Virtual Machine Monitors" at DSN'20.
We split the pVM (dom0) in four parts where each part has his dedicated fault tolerance mecanism + a global loop which monitors via heartbeat and trigger recovery mechanisms.
Our Xen hypervisor was compiled on Ubuntu 12.04.5 LTS with Linux kernel 5.0.8 (but can work on recent Ubuntu versions). Our fault tolerance mechanism for the network component is dependent on Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet interface (1Gb/s) with the driver bnx2. Our guest VMs run on Ubuntu 16.04.5 LTS
To deploy our solution, you need to install our linux-res
using the standard commands, then build and launch our xen-res
.
We have our utility script pVM-util-script.sh
to deploy and run test scripts.
First clone our repository in a folder.
`git clone https://github.com/djobiii2078/R-VMM.git`
To build and install Linux, run:
`./pVM-util-script.sh install linux`
This will build our linux Kernel, install and reboot your server. Choose your distribution with the kernel Linux 5.0.8. Next let's run install our Xen-based hypervisor.
Run :
`./pVM-util-script.sh install xen`
It builds Xen and reboot your server. When the grub menu displays, choose the entry with Xen Hypervisor.
To check if everything went right, boot on the corresponding hypervisor (xen-4.10.0-dev) and linux kernel (5.0.8), and run
`/etc/init.d/xencommons start`
It should displays the different parts of architecture (dom0, xenstore, netdom and tooldom) by default
You use our solution exactly as the Xen hypervisor. You can create virtual machines and work with them. Each component is used in a transparent manner. To check out the log messages sent by every component, you can inspect debug messages of xen by :
`xl dmesg | grep [SD]` or `dmesg | grep [SD]` (for linux level log messages)
Try crash testing some of our components and analyse their behaviour.
A suite test in the folder benchmarks is at your disposal. It is composed of the set of modified benchmarks we used to test our solution tailbench suite and apache bench. Please check it out.
We love stars, it is free, just drop one. :)
Feel free to email us at :
mvondodb@univ-grenoble-alpes.fr, alain.tchana@ens-lyon.fr, renaud.lachaize@imag.fr