140 likes | 298 Views
Open Compute Cloud. OC2 . What is OC2?. An open-source package for providing dynamic virtual machine (VM) creation and management Based on the concept of Amazon's EC2 Elastic, full guest control, flexible, reliable, and secure It should also have some other nice properties:
E N D
What is OC2? • An open-source package for providing dynamic virtual machine (VM) creation and management • Based on the concept of Amazon's EC2 • Elastic, full guest control, flexible, reliable, and secure • It should also have some other nice properties: • Research vehicle, easy deployment, exotic features
Why OC2? • There is significant commercial and research interest in such a system • It has some nice properties – dynamic host creation, resource sharing, potentially reduced maintenance and upkeep costs • An open-source solution can provide access to others as well as the right access points to experiment with different configurations
Targeted Functionality(Kozuch's Kommandments) • Command line & web interface to control VMs • Possibly directly compatable with EC2 utilities & images • Direct access to VMs (root user, IP addr, etc) • Transparent VM migration, checkpointing • Boot images natively (boot-agnostic) • Use distributed store (exclusively for persistent data) • Single-core guests to start with
Virtual Machines • Several projects/mechanisms to consider: • Qemu (software, open) • Xen paravirtualization (guest changes necessary, open) • Xen HVM (VT + Qemu + host kernel changes, open) • VMware (VT and/or software, closed) • KVM (VT + Qemu, open) • Believe KVM has the right set of trade-offs, but staying agnostic is a plus • Using bridging to make them visible directly
Client/Server Software • Currently a set of scripts that use wget, curl, etc. to issue requests to the server • The server currently uses PHP and a database backend for information management • Eventually there could be a layer that simulates the behavior of the EC2 utilities (SOAP) • This is and should be the simplest part of the system
Server/Host Software • Currently a very rudimentary direct connection • Switching to libvirt • libvirt provides an API to manipulate VMs and supports multiple backends (KVM, Qemu, Xen, etc.) • Nice abstraction layer for functionality that also provides security options (SASL and SSL)
Migration • KVM/Qemu already support a form of live migration • Limited to the memory & CPU state • Disk changes must be in a shared R/W file • Adding support to migrate disk changes • libvirt only supports migration for Xen • Adding support to migrate Qemu • Still have switch problem to solve
Checkpointing • KVM/Qemu support checkpointing • Checkpoints are saved to the disk image, however • Disk image likely comes from some distributed store • Migration, if it includes disk state, can be used to perform checkpointing • Allows background checkpointing • Disk vs. memory checkpointing • Still need to support using disk changes from migration file only
Native Boot • Would like to boot a disk image on real hardware for some users • Can be done using a minor addition to a script • Save disk image on local disk of machine • Copy initrd and kernel image out • Modify script in initrd to loopback mount the image • PXE boot new initrd with kernel • Still has intermittent access to distributed store
Distributed Store • Currently using HDFS+FUSE • Modifications necessary because the FUSE code is less than alpha • Works correctly and performance is alright • Still need a better characterization • How this is going to work for application data is also an issue to be explored
Work Done • Qemu changes to support disk migration • libvirt changes to support Qemu migration • Simple command line utilites and database backend • Native image booting process • Distributed store used for images • Started IT rolling on new IP addresses
Work To Do • Replacing server->host communication with libvirt • Distributed store evaluation • Hooks (automatic migration, checkpoint/resume) • Automatic native booting • EC2 SOAP compatability • Code cleanups and submission