[sheepdog-users] What is cooking in master # 2013.5.23

Liu Yuan namei.unix at gmail.com
Thu May 23 15:50:58 CEST 2013

Hello list,

   I am setting out to write a series about what we are doing in the
development list to keep you guys update in a more user friendly
language, that in English instead of C. I'll try to keep up every month
or two about this topic in the mailing list.

  Since this is the first series, I'd like to start with what we have
done in the past.

  Sheepdog was initially targeted for distribution storage solution for
QEMU block device. QEMU's Sheepdog block driver was implemented at a
protocol layer, the lowest layer in the QEMU software. This is similar
to QEMU's NBD but end up more powerful. Sitting at the first floor, we
get the benefit that we can store whatever formats we want and many
fancy features like live migration, snapshot, clone is supported
natively by the protocol. This means you can not only store 'raw'(our
default format) image in the sheepdog to enjoy best performance but also
enjoy advanced features like snapshot with 'raw' format.

  To summarize, what we have done for QEMU:

  1 Seamless integration of the QEMU software, users can use QEMU
friends tools like qemu-img, qemu-io to manipulate Sheepdog images.
  2 support live migration, live & offline snapshots
(savevm/loadvm/qemu-img snapshot), clone
  3 Provide thin-provision:
	a Discard/Trim support
   	b Sparse image
 	3 Copy-on-write used heavily for snapshot & clone
  4 Users can specify copies number per volume
  5 Users can store/boot ISO in the Sheepdog cluster as a volume

  What we have done for Sheepdog storage

  1 Provide replicated storage for volumes based on object store with
linear scalability.
  2 Auto data-healing
  3 Intelligent node management
  4 Manage multiple disks on a single node intelligently.
  5 Easy to use, For e.g, one liner to setup, destroy, no configuration file
  6 Dual card support
  7 Object cache and journaling to make best performance and support
hierarchical storage (mixd SSD & SATA & SAS)
  8 Sheepfs to export volume as file-like abstraction to local file
system storage.
  9 Image snapshot chain incremental backup

  What we have done for Openstack project:

  1 Cinder support to use Sheepdog cluster as volume store.

  What we have done  for Libvirt project:

  1 Storage pool support


So what we are cooking right now in the development mailing list are:

  1 Cluster wide snapshot to backup the whole cluster into a central storage

    URL: http://lists.wpkg.org/pipermail/sheepdog/2013-May/009532.html
    status: first draft version is merged.
    features done: incremental backup, auto-deduplication
    features planned: finer units to get better dedup, compression,
support for other storage like S3, Swift, NFS as backend store for the
back-up objects.

  2 Openstack Glance support

    URL: https://review.openstack.org/#/c/29961/
    status: WIP (Work In Progress)
    Nothing interesting, just allow people to store images in Sheepdog
via Openstack

  3 Plans for the next release and form a new organization

    URL: http://lists.wpkg.org/pipermail/sheepdog/2013-May/009568.html
    As usual, we want to hear more options and this topic becomes 'what
we need to do for v1.0 release'

  4 Support for unaligned read/write/create operations on images

    URL: http://lists.wpkg.org/pipermail/sheepdog/2013-May/009615.html
    status: merged.
    This is the first step to support file-like object to user application.

  5 Use hash for vdi check and object recovery

    URL: http://lists.wpkg.org/pipermail/sheepdog/2013-May/009298.html
    Status: merged.
    This improves the vdi check and object recovery performance by
simply compares the hash digest of objects. And check performance
against large images is dramatically improved because of threaded check.


Future Plans:

  1 Looks that QEMU auto-reconnect after sheep restarts is required by
several users, so this will be on our top most list.
  2 Sheepdog is essentially object store, on top of which we support
volumes. So we'll definitely extend it to greater audience, support S3
or Swift API to store user's object with arbitrary length in a RESTful
manner is in the todo list.
  3 Extend Sheepfs to support native POSIX file operation

Have fun with Sheepdog !


More information about the sheepdog-users mailing list