Image diffs with parents

Registered by Joshua Harlow

Right now snapshots seem to require a full upload of the new image, but in certain cases it would be more useful to only send the COW 'diff' instead of the full snapshot and tell glance what the original 'image' id is. Then when fetching glance would have to send back X 'images' that can be used to reform the full snapshot. This would seem useful (from a storage point of view) and from a sharing point of view. It would seem likely that new api's would be needed as well as new db tables (to track the hierarchy) and to make sure that a parent 'image' can not be deleted if referenced by a child....

Seems useful, thoughts?

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Yahoo Openstackers!
Direction:
Needs approval
Assignee:
None
Definition:
Superseded
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Mark Washenberger

Related branches

Sprints

Whiteboard

Joshua, great idea. You must consider attending this session at Openstack summit if you will be there - http://summit.openstack.org/cfp/details/16

(#nikhil) We have some work in progress right now. If you would like to contribute your thoughts, it would be appreciated. Some initial changes can be found on https://github.com/ameade/glance/tree/parent-child-v1.

I was architect on a project at Dell and we did something similar using an rsync based technology for minimizing storage requirements for images. We were primarily focused on windows and because of the commonality between flavours, we could get away with having root masters and just storing and transferring the deltas so that save on data and bandwidth. XDelta3 is a nice technology but I dont think it's license is compatible.

Thanks: was there with markws @ the summit, lots of good ideas to work on!
  - See: http://etherpad.openstack.org/GrizzlyImageHierarchy

While I still see efficient image boot and snapshots as an incredibly important feature for Openstack to support, the discussion around implementing it through the image service seems to have stalled due the amount of implied duplication and overlapping concerns with the volume service Cinder. I propose we table this feature in glance and see how we can implement it correctly in Nova and Cinder.
-markwash

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.