Difference between revisions of "VolumeSnapshotBackupAPI"
Line 8: | Line 8: | ||
=== Overview === | === Overview === | ||
− | There has been | + | There has been some discussion of terminology for these facilities [1], so it is probably useful to start by defining the terminology below: |
snapshot - a point-in-time copy of a volume. Often done by techniques such as COW or similar, and may not be durable beyond the original volume (provider defined - *should a driver be able to block the deletion of a volume that has snapshots, or should it be able to delete the snapshots, if the volume is required for the snapshot?* ) | snapshot - a point-in-time copy of a volume. Often done by techniques such as COW or similar, and may not be durable beyond the original volume (provider defined - *should a driver be able to block the deletion of a volume that has snapshots, or should it be able to delete the snapshots, if the volume is required for the snapshot?* ) |
Revision as of 15:38, 26 October 2011
Volume Snapshot/Backup API
It is currently possible to create 'snapshots' using the ec2 API, but the semantics of this are poorly defined, and generally differ from the more usual storage definition of the term 'snapshot'.
There is no corresponding facility in the Nova API.
Overview
There has been some discussion of terminology for these facilities [1], so it is probably useful to start by defining the terminology below:
snapshot - a point-in-time copy of a volume. Often done by techniques such as COW or similar, and may not be durable beyond the original volume (provider defined - *should a driver be able to block the deletion of a volume that has snapshots, or should it be able to delete the snapshots, if the volume is required for the snapshot?* )
backup - a copy of a volume or snapshot to long term storage, such as swift, that can be used to reconstruct a volume at some point in the indefinite future, even if the original volume is long gone.
Design
Snapshots
create_from_volume(volume) returns snap_id
delete(snap_id)
create_volume_from_snap(snap_id) return volume
Backup operations
create_from_volume(volume, "swift://user:pass@swiftserver.example.com") returns backup_id
create_from_snapshot(snapshot_id, "swift://user:pass@wiftserver.example.com") returns backup_id
Note: In both cases above, if no credentials are supplied then keystone credentials will be used
check_progress(backup_id) returns one of ["in-progress", "completed", "error"]
create_volume_from_backup("swift://user:pass@wiftserver.example.com/object") returns volume
Note: Deleting backups is not part of this proposal, since it is already covered by e.g. swift native commands