XS Oracle 2009 Vm Snapshots

737 views

Published on

Patrick Colp: VM Snapshots

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
737
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

XS Oracle 2009 Vm Snapshots

  1. 1. VM Snapshots Patrick Colp Chris Matthews, Bill Aiello, Andrew Warfield Department of Computer Science University of British Columbia Vancouver, BC, Canada (in collaboration with George S. Coker, II) Xen Summit at Oracle Feb 24-25, 2009
  2. 2. Problem Want a fixed image of a VM at a point in time ● e.g. to dynamically inspect a VM from the outside – VMs don't sit still ● memory/state keeps changing – Xen Summit at Oracle Feb 24-25, 2009
  3. 3. Goal Capture a consistent view of a VM ● Without pausing and still allowing the VM to run – Create a lightweight, general purpose mechanism – Snapshot Xen Summit at Oracle Feb 24-25, 2009
  4. 4. Overview Copy-on-Write frames to snapshot images ● Allows VM to keep running – Lightweight as only dirtied frames are copied – General purpose mechanism ● Can use CoW to do other things too! – snapshot = vm_snapshot(domid); Xen Summit at Oracle Feb 24-25, 2009
  5. 5. Degrees of Snapshots 1. Static view of guest memory VM introspection (XenAccess, LKIM) • VM checkpointing (Remus) • 2. Execution rollback VM undo • Speculative execution (SpecHint) • 3. VM fork Quickly spawn template VMs (Potemkin, SnowFlock) • Xen Summit at Oracle Feb 24-25, 2009
  6. 6. Implementation Save initial state ● Registers, shared frames, etc. – Copy-on-Write VM's memory ● Mark memory read-only – Catch write faults (log dirty) – What about disks? ● Easy: use Parallax for disk snapshotting – Alternatively can use VHD/QCoW – Xen Summit at Oracle Feb 24-25, 2009
  7. 7. Architecture Xen Summit at Oracle Feb 24-25, 2009
  8. 8. Architecture Library ● Provide a nice API for snapshotting – Integrate with things like XenAccess and Remus – FUSE driver ● Allocate per snapshot buffer space – Copy buffered frames into backing file – Fetch frames from target VM as requested – Exposes snapshot through read() and mmap() – Xen Summit at Oracle Feb 24-25, 2009
  9. 9. Architecture Kernel driver ● Validate and pin user buffer frames – Populate ring with MFNs and pass to Xen – Xen ● domctl to take snapshots – Copy frames into snapshot buffers on write faults – Xen Summit at Oracle Feb 24-25, 2009
  10. 10. Fault Path Flow Xen Summit at Oracle Feb 24-25, 2009
  11. 11. Accessing CoW Memory Xen Summit at Oracle Feb 24-25, 2009
  12. 12. Trickier Bits Write after read ● Catching all writes ● Running out of buffer space ● Xen Summit at Oracle Feb 24-25, 2009
  13. 13. Write After Read Problem: ● Check snapshot buffer for frame (not found) – Read VM's memory directly – VM writes to frame after buffer was checked but – before it was read Solution: ● After reading from VM's memory directly, re-check – snapshot buffer for frame Xen Summit at Oracle Feb 24-25, 2009
  14. 14. Catching All Writes Problem: ● Normal writes, mark dirty called before writes – Emulated mode/QEMU, mark dirty after writes – Grant tables, mark dirty called on unmap – Solution: ● Normal writes, save frame when mark dirty is called – Emulated mode/QEMU, add new hypercall before – write Grant tables, save frame on map – Xen Summit at Oracle Feb 24-25, 2009
  15. 15. Running Out of Buffer Space Problem: ● Buffer is limited size and filled in fault context – Once faulted, it's too late to flush the buffer – Solution: ● Guarantee enough buffer space before faulting – Threshold with minimum number of frames (~16) – Pause target domain and flush buffer on return from – fault Xen Summit at Oracle Feb 24-25, 2009
  16. 16. Conclusion VM snapshots ● General purpose, lightweight mechanism ● Coming soon to Xen-devel! I'd be happy to talk about OCaml XenStore too Xen Summit at Oracle Feb 24-25, 2009

×