[libvirt] Quorum block driver libvirt support proposal

Benoît Canet benoit.canet at irqsave.net
Fri May 16 14:05:43 UTC 2014


The Friday 16 May 2014 à 09:54:43 (-0400), Daniel P. Berrange wrote :
> On Fri, May 16, 2014 at 12:33:04PM +0200, Benoît Canet wrote:
> > 
> > Hello list,                                                                     
> >                                                                                 
> > I want to implement libvirt Quorum support.                                     
> > (https://github.com/qemu/qemu/commit/c88a1de51ab2f26a9a37ffc317249736de8c015c)  
> > Quorum is a QEMU RAID like block storage driver.                                
> > Data are written on n replicas and when a read is done a comparison between the 
> > replica read is done. If more than threshold reads are identical the read succeed
> > else it's and error.
> > 
> > For example a Quorum with n = 3 and threshold = 2 would be made of three QCOW2
> > backing chains used as identicals replicas. threshold = 2 means that at least
> > 2 replica must be identical when doing a read.                                                            
> >                                                                                 
> > I want to make use of the new backingStore xml element to implement quorum.     
> >                                                                                 
> > Proposed Quorum libvirt format:                                                 
> > -------------------------------                                                 
> >                                                                                 
> > <disk type='quorum' device='disk'>                                              
> >   <driver name='qemu' type='quorum'/>                                           
> >   <threshold value=2/>                                                          
> >   <backingStore type='file'>                                                    
> >     <format type='qcow2'/>                                                      
> >     <source file='/var/lib/libvirt/images/file1.qcow2'/>                        
> >   </backingStore>                                                               
> >   <backingStore type='file'>                                                    
> >     <format type='qcow2'/>                                                      
> >     <source file='/var/lib/libvirt/images/file2.qcow2'/>                        
> >   </backingStore>                                                               
> >   <backingStore type='file'>                                                    
> >     <format type='qcow2'/>                                                      
> >     <source file='/var/lib/libvirt/images/file3.qcow2'/>                        
> >   </backingStore>                                                               
> >   <target dev='vda' bus='virtio'/>                                              
> > </disk>
> 
> It feels rather odd to have <backingStore> elements but no top level
> disk images. Really these are all top level images

It reflect the ways QEMU does it. A single BlockDriverState holding n
quorum BlockDriverState children. There is a 1-1 mapping.

How would you see it ?

Best regards

Benoît


> 
> 
> Regards,
> Daniel
> -- 
> |: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org              -o-             http://virt-manager.org :|
> |: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list