mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 23:25:24 +00:00
74951eadef
This patch adds support for a new storage backend with RBD support. RBD is the RADOS Block Device and is part of the Ceph distributed storage system. It comes in two flavours: Qemu-RBD and Kernel RBD, this storage backend only supports Qemu-RBD, thus limiting the use of this storage driver to Qemu only. To function this backend relies on librbd and librados being present on the local system. The backend also supports Cephx authentication for safe authentication with the Ceph cluster. For storing credentials it uses the built-in secret mechanism of libvirt. Signed-off-by: Wido den Hollander <wido@widodh.nl>
512 lines
11 KiB
XML
512 lines
11 KiB
XML
<?xml version="1.0"?>
|
|
<!-- A Relax NG schema for the libvirt storage pool XML format -->
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<include href='basictypes.rng'/>
|
|
<start>
|
|
<ref name='pool'/>
|
|
</start>
|
|
|
|
|
|
<define name='pool'>
|
|
<element name='pool'>
|
|
<choice>
|
|
<ref name='pooldir'/>
|
|
<ref name='poolfs'/>
|
|
<ref name='poolnetfs'/>
|
|
<ref name='poollogical'/>
|
|
<ref name='pooldisk'/>
|
|
<ref name='pooliscsi'/>
|
|
<ref name='poolscsi'/>
|
|
<ref name='poolmpath'/>
|
|
<ref name='poolrbd'/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='pooldir'>
|
|
<attribute name='type'>
|
|
<value>dir</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcedir'/>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='poolfs'>
|
|
<attribute name='type'>
|
|
<value>fs</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcefs'/>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='poolnetfs'>
|
|
<attribute name='type'>
|
|
<value>netfs</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcenetfs'/>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='poollogical'>
|
|
<attribute name='type'>
|
|
<value>logical</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcelogical'/>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='pooldisk'>
|
|
<attribute name='type'>
|
|
<value>disk</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcedisk'/>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='pooliscsi'>
|
|
<attribute name='type'>
|
|
<value>iscsi</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourceiscsi'/>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='poolscsi'>
|
|
<attribute name='type'>
|
|
<value>scsi</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcescsi'/>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='poolmpath'>
|
|
<attribute name='type'>
|
|
<value>mpath</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<optional>
|
|
<ref name='sourcempath'/>
|
|
</optional>
|
|
<ref name='target'/>
|
|
</define>
|
|
|
|
<define name='poolrbd'>
|
|
<attribute name='type'>
|
|
<value>rbd</value>
|
|
</attribute>
|
|
<ref name='commonmetadata'/>
|
|
<ref name='sizing'/>
|
|
<ref name='sourcerbd'/>
|
|
</define>
|
|
|
|
<define name='sourceinfovendor'>
|
|
<optional>
|
|
<element name='vendor'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='product'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='commonmetadata'>
|
|
<element name='name'>
|
|
<ref name='name'/>
|
|
</element>
|
|
<optional>
|
|
<element name='uuid'>
|
|
<ref name='UUID'/>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='sizing'>
|
|
<optional>
|
|
<element name='capacity'>
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='allocation'>
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='available'>
|
|
<ref name='scaledInteger'/>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='permissions'>
|
|
<optional>
|
|
<element name='permissions'>
|
|
<element name='mode'>
|
|
<ref name='unsignedInt'/>
|
|
</element>
|
|
<element name='owner'>
|
|
<ref name='unsignedInt'/>
|
|
</element>
|
|
<element name='group'>
|
|
<ref name='unsignedInt'/>
|
|
</element>
|
|
<optional>
|
|
<element name='label'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='target'>
|
|
<element name='target'>
|
|
<optional>
|
|
<element name='path'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
</optional>
|
|
<ref name='permissions'/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfohost'>
|
|
<oneOrMore>
|
|
<element name='host'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name='port'>
|
|
<ref name="PortNumber"/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</oneOrMore>
|
|
</define>
|
|
|
|
<define name='sourceinfodev'>
|
|
<element name='device'>
|
|
<attribute name='path'>
|
|
<choice>
|
|
<ref name='absFilePath'/>
|
|
<ref name='name'/>
|
|
</choice>
|
|
</attribute>
|
|
<choice>
|
|
<empty/>
|
|
<ref name='devextents'/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='initiatorinfo'>
|
|
<element name='initiator'>
|
|
<element name='iqn'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='devextents'>
|
|
<oneOrMore>
|
|
<element name='freeExtent'>
|
|
<attribute name='start'>
|
|
<ref name='unsignedLong'/>
|
|
</attribute>
|
|
<attribute name='end'>
|
|
<ref name='unsignedLong'/>
|
|
</attribute>
|
|
</element>
|
|
</oneOrMore>
|
|
</define>
|
|
|
|
<define name='sourceinfodir'>
|
|
<element name='dir'>
|
|
<attribute name='path'>
|
|
<ref name='absFilePath'/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfoadapter'>
|
|
<element name='adapter'>
|
|
<attribute name='name'>
|
|
<text/>
|
|
</attribute>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfoname'>
|
|
<element name='name'>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfoauth'>
|
|
<element name='auth'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>chap</value>
|
|
<value>ceph</value>
|
|
</choice>
|
|
</attribute>
|
|
<choice>
|
|
<attribute name='login'>
|
|
<text/>
|
|
</attribute>
|
|
<attribute name='username'>
|
|
<text/>
|
|
</attribute>
|
|
</choice>
|
|
<optional>
|
|
<attribute name='passwd'>
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<ref name='sourceinfoauthsecret'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceinfoauthsecret'>
|
|
<element name='secret'>
|
|
<choice>
|
|
<attribute name='uuid'>
|
|
<text/>
|
|
</attribute>
|
|
<attribute name='usage'>
|
|
<text/>
|
|
</attribute>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcefmtfs'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>ext2</value>
|
|
<value>ext3</value>
|
|
<value>ext4</value>
|
|
<value>ufs</value>
|
|
<value>iso9660</value>
|
|
<value>udf</value>
|
|
<value>gfs</value>
|
|
<value>gfs2</value>
|
|
<value>vfat</value>
|
|
<value>hfs+</value>
|
|
<value>xfs</value>
|
|
<value>ocfs2</value>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcefmtnetfs'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>nfs</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcefmtdisk'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>none</value>
|
|
<value>dos</value>
|
|
<value>dvh</value>
|
|
<value>gpt</value>
|
|
<value>mac</value>
|
|
<value>bsd</value>
|
|
<value>pc98</value>
|
|
<value>sun</value>
|
|
<value>lvm2</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcefmtlogical'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>auto</value>
|
|
<value>lvm2</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
|
|
<define name='sourcedir'>
|
|
<optional>
|
|
<element name='source'>
|
|
<empty/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='sourcefs'>
|
|
<element name='source'>
|
|
<ref name='sourceinfodev'/>
|
|
<ref name='sourcefmtfs'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcenetfs'>
|
|
<element name='source'>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfodir'/>
|
|
<ref name='sourcefmtnetfs'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcelogical'>
|
|
<element name='source'>
|
|
<oneOrMore>
|
|
<optional>
|
|
<ref name='sourceinfoname'/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='sourceinfodev'/>
|
|
</optional>
|
|
</oneOrMore>
|
|
<ref name='sourcefmtlogical'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcedisk'>
|
|
<element name='source'>
|
|
<ref name='sourceinfodev'/>
|
|
<ref name='sourcefmtdisk'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourceiscsi'>
|
|
<element name='source'>
|
|
<ref name='sourceinfohost'/>
|
|
<ref name='sourceinfodev'/>
|
|
<optional>
|
|
<ref name='initiatorinfo'/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='sourceinfoauth'/>
|
|
</optional>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcescsi'>
|
|
<element name='source'>
|
|
<ref name='sourceinfoadapter'/>
|
|
<optional>
|
|
<ref name='sourceinfovendor'/>
|
|
</optional>
|
|
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcempath'>
|
|
<element name='source'>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcerbd'>
|
|
<element name='source'>
|
|
<ref name='sourceinfoname'/>
|
|
<ref name='sourceinfohost'/>
|
|
<optional>
|
|
<ref name='sourceinfoauth'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='name'>
|
|
<data type='string'>
|
|
<param name="pattern">[a-zA-Z0-9_\+\-]+</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name="PortNumber">
|
|
<data type="short">
|
|
<param name="minInclusive">-1</param>
|
|
</data>
|
|
</define>
|
|
|
|
</grammar>
|