[Sheepdog] [libvirt] [PATCH] support sheepdog volumes

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Fri Nov 19 01:42:26 CET 2010


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.

> 
> 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

     <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



More information about the sheepdog mailing list