100 likes | 292 Views
Using Virtual Machines To Build Virtual Storage For Virtual Machines (at the block level). Andrew Warfield. VMs as a Building Block for Storage. Device VMs and narrow interfaces let us treat devices as isolated services in a cluster. Externally administered / fate sharing / invisible.
E N D
Using Virtual MachinesTo Build Virtual StorageFor Virtual Machines(at the block level) Andrew Warfield {andrew.warfield}@cl.cam.ac.uk
VMs as a Building Block for Storage • Device VMs and narrow interfaces let us treat devices as isolated services in a cluster. • Externally administered / fate sharing / invisible. • Block interface is narrow • Effectively stateless, OS Agnostic. • Develop in user space. • Faster/safer development. • Easier access to “high-level” primitives. (like “files” and “sockets”).
Three Examples • How to practically manage lots of VM images in an existing cluster? • User-level Block-Back • How to support applications of VM checkpointing (eg fast frequent snapshots)? • Parallax-local • How to scale to support large, saturated VM clusters? • Parallax
User-level Block Backend Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CPxen0 2G 31198 95 56818 8 20967 2 28415 77 59595 4 264.9 0xenU-blkbe2cpuGT 2G 31157 96 54026 10 25585 4 30664 90 64919 7 292.7 0xenU-blktp2cpuGT 2G 32313 97 54217 8 20950 3 28117 87 65924 4 191.8 0 • Problem: Loopback sucks. • Page dirty vs. OOM-killer deathmatch. • Images-as-files is an attractive way to manage VM storage. • Blktap + XenStore make this possible • Status: Returning to this in Oct/Nov.
Local VM-specific Storage • Problem: Want fast, efficient management of images and snapshots for VMs. • Write Sharing Considered Harmful. • Use Radix-trees to virtualize storage addressing. • Tree node is (address, writable, child-CRC). • Snapshot is one-block read and write. • Status: Working.
Block Access in Clusters • Problem(1): Want to use local disks for storage. (or even if you don’t…) • P2: Your storage servers are about to be hosed. • Fate-sharing cache aggregates VM traffic. • Extent-based allocator builds n-way virtual storage chunks from local disks. • Status: Work in progress with James Bulpin. • (target: OSDI 2006)
Conclusion • Devices-as-services is a good approach to managing storage in a VM cluster. • Several (hopefully) useful examples. • Bigger picture (in terms of my thesis) includes other devices (a.k.a network).