[libvirt] [PATCH] support sheepdog volumes

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Sun Nov 21 17:34:17 UTC 2010


At Fri, 19 Nov 2010 14:56:35 -0800,
Josh Durgin wrote:
> 
> On 11/18/2010 04:42 PM, MORITA Kazutaka wrote:
> > On 2010/11/18 19:46, Daniel P. Berrange wrote:
> >> On Wed, Nov 17, 2010 at 06:19:58PM +0900, MORITA Kazutaka wrote:
> >>> Sheepdog is a distributed storage system for QEMU. It provides highly
> >>> available block level storage volumes to VMs like Amazon EBS.  This
> >>> patch adds support for Sheepdog; we can create VMs with sheepdog
> >>> volumes, and attach sheepdog volumes to running machines via the
> >>> attach-device command.
> >>>
> >>> Sheepdog volumes can be declared like this:
> >>>
> >>>      <disk type='sheepdog' device='disk'>
> >>>        <driver name='qemu' type='raw' />
> >>>        <source vdi='volume_name' host='hostname' port='7000'/>
> >>>        <target dev='vda' bus='virtio' />
> >>>      </disk>
> >>>
> >>> 'host' and 'port' in the source element are optional.  If they are not
> >>> specified, sheepdog clients use the default value (localhost:7000).
> >>
> >> I'm not too familiar with sheepdog implementation, but I understand
> >> that each block device is stored across multiple hosts, but you're
> >> only listing one hostname here.  In the proposal for supporting RBD/
> >> CEPH in libvirt/QEMU, there's tan option to give multiple hostnames.
> >> Is the need to give multiple hostnames going to be something that
> >> is also relevant for Sheepdog, or does it cope with this in an
> >> entirely different way ?
> >
> > We use the hostname as like a gateway to access sheepdog volumes.
> > Though we could extend it to multiple hostnames to achieve high
> > availability, how to use these parameters as qemu arguments needs to
> > be discussed.
> 
> For RBD, the monitor hostnames can be set through the environment. It
> looks like this is easy to add to the libvirt QEMU driver. Would
> environment variables work for sheepdog as well?

No, but it looks much better to use environment variables for
extending a sheepdog gateway to multiple servers.

> 
> >>
> >> As mentioned in the RBD thread[1], I'm wondering whether we should aim
> >> for separate 'types' for each network block device or try to merge
> >> them into one common syntax like
> >>
> >>       <disk type="network" device="disk">
> >>         <driver name="qemu" type="raw" />
> >>         <source protocol='rbd|sheepdog|nbd' name="...some image identifier...">
> >>           <host name="mon1.example.org" port="6000">
> >>           <host name="mon2.example.org" port="6000">
> >>           <host name="mon3.example.org" port="6000">
> >>         </source>
> >>         <target dev="vda" bus="virtio" />
> >>       </disk>
> >
> > Are monitor addresses necessary in the above syntax for RBD?  I guess
> > the monitor addresses are parameters to create a rbd image, but not
> > ones to use a rbd image.  If so, we can make the syntax a bit simpler like
> 
> The monitors serve as gateways for RBD. All need to be specified
> so that RBD can still access the cluster if some monitors go down.

Sorry for confusion.  If so, the first syntax Daniel suggested looks
good for our storage volumes.


Thanks,

Kazutaka


> 
> >       <disk type="network" device="disk">
> >         <driver name="qemu" type="raw" />
> >         <source protocol='rbd|sheepdog|nbd' name="..." host="hostname" port="6000" />
> >         <target dev="vda" bus="virtio" />
> >       </disk>
> >
> >
> > Thannks,
> >
> > Kazutaka
> 
> Thanks,
> Josh
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html




More information about the libvir-list mailing list