[openstack-dev] Island: Local Storage Volume Support for Cinder

Clay Gerrard clay.gerrard at gmail.com
Wed Oct 24 20:22:31 UTC 2012


On Wed, Oct 24, 2012 at 1:17 PM, Rongze Zhu <zrzhit at gmail.com> wrote:
> Hi stackers,
> Island is a plugin for cinder, it will allow to create volume in local
> storage and back up incremental snapshots of your data to Swift for durable
> recovery. Island design idea is local storage + qcow2 image + dependent
> snapshot + swift.
>

So cool!

So I wanted to confirm something I wasn't clear on during the
discussion at the summit regarding the refcount metadata, so nice to
be able to just look at the code :D

In volume.island.snapshot._unlink_snapshot_block you guys use
"get_object_meta" to pull in the "X-refcount" attribute, decrement it,
and then set the new value with "objectpool.set_object_meta"

This probably works fine with the ext IMPL, but when the swift IMPL
gets out there it'll be sorta dangerous.  The object metadata (as with
all objects in swift) is "eventually" consistent - if you update
existing objects subsequent reads can't be guaranteed to have the
latest X-refcount meta (the X-newest header helps, and may even be
good enough short term, but that's really only the newest "available",
in a storage node failure condition you may still be reading old
data).  The story get's a lot simpler if you  can design something
that only PUT's to *create new* objects (say for each snapshot) then
if a GETsucceeds you know you have the "newest" copy cause theirs only
one.

Just something to think about.  I'm definitely going to play around
with this.  Looks like it should work fine on devstack.

This is awesome, great work!

-clayg



More information about the OpenStack-dev mailing list