Jump to: navigation, search

Difference between revisions of "Cinder/GuestAssistedSnapshotting"

(initial spec for blueprint)
 
Line 12: Line 12:
  
 
Creation of Snapshot:
 
Creation of Snapshot:
# User calls cinder snapshot-create vol
+
# User calls new nova API call to executed an assisted snapshot
# Cinder asks Nova to quiesce and pause VM.  Failure to quiesce only = snapshot failure if the user sets an option to ask for this, otherwise fall back to crash-consistent snapshot.
+
# Nova will quiesce guest (use existing pause functionality if guest assisted quiesce is not available)
# Create QCOW2 snapshot of volume on GlusterFS/NFS
+
# Nova will execute snapshot API call in Cinder
# Cinder asks Nova to resume VM
+
# Cinder creates snapshot
 
+
# Nova resumes VM on completion of the snapshot
 +
 
The snapshot can then be managed like any other Cinder snapshot.
 
The snapshot can then be managed like any other Cinder snapshot.
  

Revision as of 19:55, 18 June 2013

QEMU guest-assisted snapshotting

Goals: 1. Add snapshot support for Cinder backing stores which lack internal snapshots (NFS, Gluster, etc.)

Prerequisites:

  • QEMU/libvirt live snapshot support
  • QEMU guest agent installed (for quiescing)


Currently, GlusterFS + Cinder does not support snapshots. Snapshot support can be enabled by storing volume data as QCOW2 files on Cinder volumes rather than as flat raw files (as is done today), and leveraging QCOW2's snapshot functionality.

Creation of Snapshot:

  1. User calls new nova API call to executed an assisted snapshot
  2. Nova will quiesce guest (use existing pause functionality if guest assisted quiesce is not available)
  3. Nova will execute snapshot API call in Cinder
  4. Cinder creates snapshot
  5. Nova resumes VM on completion of the snapshot

The snapshot can then be managed like any other Cinder snapshot.

Changes required for Cinder QCOW2 volumes:

  • Cinder code to create them (per-driver code & options)
  • Cinder code to translate/process them for operations like upload-to-image, backup_create, clone
  • Possibly DB information tracking type (qcow2 or raw) - if needed