All of lore.kernel.org
 help / color / mirror / Atom feed
* rbd storage pool support for libvirt
@ 2010-11-02  3:52 Sage Weil
  2010-11-02 19:47 ` Wido den Hollander
  2010-11-03 13:59 ` [libvirt] " Daniel P. Berrange
  0 siblings, 2 replies; 14+ messages in thread
From: Sage Weil @ 2010-11-02  3:52 UTC (permalink / raw)
  To: libvir-list; +Cc: ceph-devel

Hi,

We've been working on RBD, a distributed block device backed by the Ceph 
distributed object store.  (Ceph is a highly scalable, fault tolerant 
distributed storage and file system; see http://ceph.newdream.net.)  
Although the Ceph file system client has been in Linux since 2.6.34, the 
RBD block device was just merged for 2.6.37.  We also have patches pending 
for Qemu that use librados to natively talk to the Ceph storage backend, 
avoiding any kernel dependency.

To support disks backed by RBD in libvirt, we originally proposed a 
'virtual' type that simply passed the configuration information through to 
qemu, but that idea was shot down for a variety of reasons:

	http://www.redhat.com/archives/libvir-list/2010-June/thread.html#00257

It sounds like the "right" approach is to create a storage pool type.  
Ceph also has a 'pool' concept that contains some number of RBD images and 
a command line tool to manipulate (create, destroy, resize, rename, 
snapshot, etc.) those images, which seems to map nicely onto the storage 
pool abstraction.  For example,

 $ rbd create foo -s 1000
 rbd image 'foo':
         size 1000 MB in 250 objects
         order 22 (4096 KB objects)
 adding rbd image to directory...
  creating rbd image...
 done.
 $ rbd create bar -s 10000
 [...]
 $ rbd list
 bar
 foo

Something along the lines of

 <pool type="rbd">
   <name>virtimages</name>
   <source mode="kernel">
     <host monitor="ceph-mon1.domain.com:6789"/>
     <host monitor="ceph-mon2.domain.com:6789"/>
     <host monitor="ceph-mon3.domain.com:6789"/>
     <pool name="rbd"/>
   </source>
 </pool>

or whatever (I'm not too familiar with the libvirt schema)?  One 
difference between the existing pool types listed at 
libvirt.org/storage.html is that RBD does not necessarily associate itself 
with a path in the local file system.  If the native qemu driver is used, 
there is no path involved, just a magic string passed to qemu 
(rbd:poolname/imagename).  If the kernel RBD driver is used, it gets 
mapped to a /dev/rbd/$n (or similar, depending on the udev rule), but $n 
is not static across reboots.

In any case, before someone goes off and implements something, does this 
look like the right general approach to adding rbd support to libvirt?

Thanks!
sage


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2010-11-19 12:55 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-02  3:52 rbd storage pool support for libvirt Sage Weil
2010-11-02 19:47 ` Wido den Hollander
2010-11-02 19:50   ` Wido den Hollander
2010-11-03 13:59 ` [libvirt] " Daniel P. Berrange
2010-11-05 23:33   ` Sage Weil
2010-11-08 13:16     ` Daniel P. Berrange
2010-11-18  0:33       ` Josh Durgin
2010-11-18  2:04         ` Josh Durgin
2010-11-18 10:38           ` Daniel P. Berrange
2010-11-18 10:42         ` Daniel P. Berrange
2010-11-18 17:13           ` Sage Weil
2010-11-19  9:27             ` Stefan Hajnoczi
2010-11-19  9:50               ` Daniel P. Berrange
2010-11-19 12:55                 ` Stefan Hajnoczi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.