|
|
c401cc |
From ab0ed8b667a8af400965bcc046b3d583831eaed5 Mon Sep 17 00:00:00 2001
|
|
|
c401cc |
Message-Id: <ab0ed8b667a8af400965bcc046b3d583831eaed5@dist-git>
|
|
|
c401cc |
From: Eric Blake <eblake@redhat.com>
|
|
|
c401cc |
Date: Wed, 26 Feb 2014 14:54:22 +0100
|
|
|
c401cc |
Subject: [PATCH] storage: document gluster pool
|
|
|
c401cc |
|
|
|
c401cc |
https://bugzilla.redhat.com/show_bug.cgi?id=1032370
|
|
|
c401cc |
|
|
|
c401cc |
Add support for a new <pool type='gluster'>, similar to
|
|
|
c401cc |
RBD and Sheepdog. Terminology wise, a gluster volume
|
|
|
c401cc |
forms a libvirt storage pool, within the gluster volume,
|
|
|
c401cc |
individual files are treated as libvirt storage volumes.
|
|
|
c401cc |
|
|
|
c401cc |
* docs/schemas/storagepool.rng (poolgluster): New pool type.
|
|
|
c401cc |
* docs/formatstorage.html.in: Document gluster.
|
|
|
c401cc |
* docs/storage.html.in: Likewise, and contrast it with netfs.
|
|
|
c401cc |
* tests/storagepoolxml2xmlin/pool-gluster.xml: New test.
|
|
|
c401cc |
* tests/storagepoolxml2xmlout/pool-gluster.xml: Likewise.
|
|
|
c401cc |
* tests/storagepoolxml2xmltest.c (mymain): Likewise.
|
|
|
c401cc |
|
|
|
c401cc |
Signed-off-by: Eric Blake <eblake@redhat.com>
|
|
|
c401cc |
(cherry picked from commit ed5fa7f39399080b0aeb5a657fc71b75019edbe9)
|
|
|
c401cc |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
c401cc |
---
|
|
|
c401cc |
docs/formatstorage.html.in | 15 ++--
|
|
|
c401cc |
docs/schemas/storagepool.rng | 26 ++++++-
|
|
|
c401cc |
docs/storage.html.in | 91 +++++++++++++++++++++++-
|
|
|
c401cc |
tests/storagepoolxml2xmlin/pool-gluster-sub.xml | 9 +++
|
|
|
c401cc |
tests/storagepoolxml2xmlin/pool-gluster.xml | 8 +++
|
|
|
c401cc |
tests/storagepoolxml2xmlout/pool-gluster-sub.xml | 12 ++++
|
|
|
c401cc |
tests/storagepoolxml2xmlout/pool-gluster.xml | 12 ++++
|
|
|
c401cc |
tests/storagepoolxml2xmltest.c | 2 +
|
|
|
c401cc |
8 files changed, 168 insertions(+), 7 deletions(-)
|
|
|
c401cc |
create mode 100644 tests/storagepoolxml2xmlin/pool-gluster-sub.xml
|
|
|
c401cc |
create mode 100644 tests/storagepoolxml2xmlin/pool-gluster.xml
|
|
|
c401cc |
create mode 100644 tests/storagepoolxml2xmlout/pool-gluster-sub.xml
|
|
|
c401cc |
create mode 100644 tests/storagepoolxml2xmlout/pool-gluster.xml
|
|
|
c401cc |
|
|
|
c401cc |
diff --git a/docs/formatstorage.html.in b/docs/formatstorage.html.in
|
|
|
c401cc |
index 2bb29b1..015de1e 100644
|
|
|
c401cc |
--- a/docs/formatstorage.html.in
|
|
|
c401cc |
+++ b/docs/formatstorage.html.in
|
|
|
c401cc |
@@ -21,8 +21,10 @@
|
|
|
c401cc |
iscsi , logical , scsi
|
|
|
c401cc |
(all since 0.4.1), mpath
|
|
|
c401cc |
(since 0.7.1), rbd
|
|
|
c401cc |
- (since 0.9.13), or sheepdog
|
|
|
c401cc |
- (since 0.10.0). This corresponds to the
|
|
|
c401cc |
+ (since 0.9.13), sheepdog
|
|
|
c401cc |
+ (since 0.10.0),
|
|
|
c401cc |
+ or gluster (since
|
|
|
c401cc |
+ 1.2.0). This corresponds to the
|
|
|
c401cc |
storage backend drivers listed further along in this document.
|
|
|
c401cc |
|
|
|
c401cc |
|
|
|
c401cc |
@@ -101,7 +103,9 @@
|
|
|
c401cc |
path to the block device node. Since 0.4.1
|
|
|
c401cc |
dir
|
|
|
c401cc |
Provides the source for pools backed by directories (pool
|
|
|
c401cc |
- type dir ). May
|
|
|
c401cc |
+ type dir ), or optionally to select a subdirectory
|
|
|
c401cc |
+ within a pool that resembles a filesystem (pool
|
|
|
c401cc |
+ type gluster ). May
|
|
|
c401cc |
only occur once. Contains a single attribute path
|
|
|
c401cc |
which is the fully qualified path to the backing directory.
|
|
|
c401cc |
Since 0.4.1
|
|
|
c401cc |
@@ -129,7 +133,7 @@
|
|
|
c401cc |
host
|
|
|
c401cc |
Provides the source for pools backed by storage from a
|
|
|
c401cc |
remote server (pool types netfs , iscsi ,
|
|
|
c401cc |
- rbd , sheepdog ). Will be
|
|
|
c401cc |
+ rbd , sheepdog , gluster ). Will be
|
|
|
c401cc |
used in combination with a directory
|
|
|
c401cc |
or device element. Contains an attribute name
|
|
|
c401cc |
which is the hostname or IP address of the server. May optionally
|
|
|
c401cc |
@@ -160,7 +164,8 @@
|
|
|
c401cc |
name
|
|
|
c401cc |
Provides the source for pools backed by storage from a
|
|
|
c401cc |
named element (pool types logical , rbd ,
|
|
|
c401cc |
- sheepdog ). Contains a string identifier.
|
|
|
c401cc |
+ sheepdog , gluster ). Contains a
|
|
|
c401cc |
+ string identifier.
|
|
|
c401cc |
Since 0.4.5
|
|
|
c401cc |
format
|
|
|
c401cc |
Provides information about the format of the pool (pool
|
|
|
c401cc |
diff --git a/docs/schemas/storagepool.rng b/docs/schemas/storagepool.rng
|
|
|
c401cc |
index 72c4fd6..d1e8f36 100644
|
|
|
c401cc |
--- a/docs/schemas/storagepool.rng
|
|
|
c401cc |
+++ b/docs/schemas/storagepool.rng
|
|
|
c401cc |
@@ -21,6 +21,7 @@
|
|
|
c401cc |
<ref name='poolmpath'/>
|
|
|
c401cc |
<ref name='poolrbd'/>
|
|
|
c401cc |
<ref name='poolsheepdog'/>
|
|
|
c401cc |
+ <ref name='poolgluster'/>
|
|
|
c401cc |
</choice>
|
|
|
c401cc |
</element>
|
|
|
c401cc |
</define>
|
|
|
c401cc |
@@ -125,6 +126,17 @@
|
|
|
c401cc |
<ref name='sourcesheepdog'/>
|
|
|
c401cc |
</define>
|
|
|
c401cc |
|
|
|
c401cc |
+ <define name='poolgluster'>
|
|
|
c401cc |
+ <attribute name='type'>
|
|
|
c401cc |
+ <value>gluster</value>
|
|
|
c401cc |
+ </attribute>
|
|
|
c401cc |
+ <interleave>
|
|
|
c401cc |
+ <ref name='commonmetadata'/>
|
|
|
c401cc |
+ <ref name='sizing'/>
|
|
|
c401cc |
+ <ref name='sourcegluster'/>
|
|
|
c401cc |
+ </interleave>
|
|
|
c401cc |
+ </define>
|
|
|
c401cc |
+
|
|
|
c401cc |
<define name='sourceinfovendor'>
|
|
|
c401cc |
<optional>
|
|
|
c401cc |
<element name='vendor'>
|
|
|
c401cc |
@@ -277,7 +289,7 @@
|
|
|
c401cc |
<define name='sourceinfodir'>
|
|
|
c401cc |
<element name='dir'>
|
|
|
c401cc |
<attribute name='path'>
|
|
|
c401cc |
- <ref name='absFilePath'/>
|
|
|
c401cc |
+ <ref name='absDirPath'/>
|
|
|
c401cc |
</attribute>
|
|
|
c401cc |
<empty/>
|
|
|
c401cc |
</element>
|
|
|
c401cc |
@@ -506,6 +518,18 @@
|
|
|
c401cc |
</element>
|
|
|
c401cc |
</define>
|
|
|
c401cc |
|
|
|
c401cc |
+ <define name='sourcegluster'>
|
|
|
c401cc |
+ <element name='source'>
|
|
|
c401cc |
+ <interleave>
|
|
|
c401cc |
+ <ref name='sourceinfohost'/>
|
|
|
c401cc |
+ <ref name='sourceinfoname'/>
|
|
|
c401cc |
+ <optional>
|
|
|
c401cc |
+ <ref name='sourceinfodir'/>
|
|
|
c401cc |
+ </optional>
|
|
|
c401cc |
+ </interleave>
|
|
|
c401cc |
+ </element>
|
|
|
c401cc |
+ </define>
|
|
|
c401cc |
+
|
|
|
c401cc |
<define name='IscsiQualifiedName'>
|
|
|
c401cc |
<data type='string'>
|
|
|
c401cc |
<param name="pattern">iqn\.[0-9]{4}-(0[1-9]|1[0-2])\.[a-zA-Z0-9\.\-]+(:.+)?</param>
|
|
|
c401cc |
diff --git a/docs/storage.html.in b/docs/storage.html.in
|
|
|
c401cc |
index 0464565..6a32c95 100644
|
|
|
c401cc |
--- a/docs/storage.html.in
|
|
|
c401cc |
+++ b/docs/storage.html.in
|
|
|
c401cc |
@@ -114,6 +114,9 @@
|
|
|
c401cc |
|
|
|
c401cc |
Sheepdog backend
|
|
|
c401cc |
|
|
|
c401cc |
+
|
|
|
c401cc |
+ Gluster backend
|
|
|
c401cc |
+
|
|
|
c401cc |
|
|
|
c401cc |
|
|
|
c401cc |
|
|
|
c401cc |
@@ -280,7 +283,9 @@
|
|
|
c401cc |
glusterfs - use the glusterfs FUSE file system.
|
|
|
c401cc |
For now, the dir specified as the source can only
|
|
|
c401cc |
be a gluster volume name, as gluster does not provide a way to
|
|
|
c401cc |
- directly mount subdirectories within a volume.
|
|
|
c401cc |
+ directly mount subdirectories within a volume. (To bypass the
|
|
|
c401cc |
+ file system completely, see
|
|
|
c401cc |
+ the gluster pool.)
|
|
|
c401cc |
|
|
|
c401cc |
|
|
|
c401cc |
cifs - use the SMB (samba) or CIFS file system
|
|
|
c401cc |
@@ -652,5 +657,89 @@
|
|
|
c401cc |
The Sheepdog pool does not use the volume format type element.
|
|
|
c401cc |
|
|
|
c401cc |
|
|
|
c401cc |
+
|
|
|
c401cc |
+
|
|
|
c401cc |
+ This provides a pool based on native Gluster access. Gluster is
|
|
|
c401cc |
+ a distributed file system that can be exposed to the user via
|
|
|
c401cc |
+ FUSE, NFS or SMB (see the netfs
|
|
|
c401cc |
+ pool for that usage); but for minimal overhead, the ideal access
|
|
|
c401cc |
+ is via native access (only possible for QEMU/KVM compiled with
|
|
|
c401cc |
+ libgfapi support).
|
|
|
c401cc |
+
|
|
|
c401cc |
+ The cluster and storage volume must already be running, and it
|
|
|
c401cc |
+ is recommended that the volume be configured with gluster
|
|
|
c401cc |
+ volume set $volname storage.owner-uid=$uid
|
|
|
c401cc |
+ and gluster volume set $volname
|
|
|
c401cc |
+ storage.owner-gid=$gid for the uid and gid that qemu will
|
|
|
c401cc |
+ be run as. It may also be necessary to
|
|
|
c401cc |
+ set rpc-auth-allow-insecure on for the glusterd
|
|
|
c401cc |
+ service, as well as gluster set $volname
|
|
|
c401cc |
+ server.allow-insecure on, to allow access to the gluster
|
|
|
c401cc |
+ volume.
|
|
|
c401cc |
+
|
|
|
c401cc |
+ Since 1.2.0
|
|
|
c401cc |
+
|
|
|
c401cc |
+
|
|
|
c401cc |
+ Example pool input
|
|
|
c401cc |
+ A gluster volume corresponds to a libvirt storage pool. If a
|
|
|
c401cc |
+ gluster volume could be mounted as mount -t glusterfs
|
|
|
c401cc |
+ localhost:/volname /some/path, then the following example
|
|
|
c401cc |
+ will describe the same pool without having to create a local
|
|
|
c401cc |
+ mount point. Remember that with gluster, the mount point can be
|
|
|
c401cc |
+ through any machine in the cluster, and gluster will
|
|
|
c401cc |
+ automatically pick the ideal transport to the actual bricks
|
|
|
c401cc |
+ backing the gluster volume, even if on a different host than the
|
|
|
c401cc |
+ one named in the host designation.
|
|
|
c401cc |
+ The <name> element is always the volume name
|
|
|
c401cc |
+ (no slash). The pool source also supports an
|
|
|
c401cc |
+ optional <dir> element with
|
|
|
c401cc |
+ a path attribute that lists the absolute name of a
|
|
|
c401cc |
+ subdirectory relative to the gluster volume to use instead of
|
|
|
c401cc |
+ the top-level directory of the volume.
|
|
|
c401cc |
+
|
|
|
c401cc |
+ <pool type="gluster">
|
|
|
c401cc |
+ <name>myglusterpool</name>
|
|
|
c401cc |
+ <source>
|
|
|
c401cc |
+ <name>volname</name>
|
|
|
c401cc |
+ <host name='localhost'/>
|
|
|
c401cc |
+ <dir path='/'/>
|
|
|
c401cc |
+ </source>
|
|
|
c401cc |
+ </pool>
|
|
|
c401cc |
+
|
|
|
c401cc |
+ Example volume output
|
|
|
c401cc |
+ Libvirt storage volumes associated with a gluster pool
|
|
|
c401cc |
+ correspond to the files that can be found when mounting the
|
|
|
c401cc |
+ gluster volume. The name is the path relative to
|
|
|
c401cc |
+ the effective mount specified for the pool; and
|
|
|
c401cc |
+ the key is a path including the gluster volume
|
|
|
c401cc |
+ name and any subdirectory specified by the pool.
|
|
|
c401cc |
+
|
|
|
c401cc |
+ <volume>
|
|
|
c401cc |
+ <name>myfile</name>
|
|
|
c401cc |
+ <key>volname/myfile</key>
|
|
|
c401cc |
+ <source>
|
|
|
c401cc |
+ </source>
|
|
|
c401cc |
+ <capacity unit='bytes'>53687091200</capacity>
|
|
|
c401cc |
+ <allocation unit='bytes'>53687091200</allocation>
|
|
|
c401cc |
+ </volume>
|
|
|
c401cc |
+
|
|
|
c401cc |
+ Example disk attachment
|
|
|
c401cc |
+ Files within a gluster volume can be attached to Qemu guests.
|
|
|
c401cc |
+ Information about attaching a Gluster image to a
|
|
|
c401cc |
+ guest can be found
|
|
|
c401cc |
+ at the format domain
|
|
|
c401cc |
+ page.
|
|
|
c401cc |
+
|
|
|
c401cc |
+ Valid pool format types
|
|
|
c401cc |
+
|
|
|
c401cc |
+ The Gluster pool does not use the pool format type element.
|
|
|
c401cc |
+
|
|
|
c401cc |
+
|
|
|
c401cc |
+ Valid volume format types
|
|
|
c401cc |
+
|
|
|
c401cc |
+ The valid volume types are the same as for the directory
|
|
|
c401cc |
+ pool type.
|
|
|
c401cc |
+
|
|
|
c401cc |
+
|
|
|
c401cc |
</body>
|
|
|
c401cc |
</html>
|
|
|
c401cc |
diff --git a/tests/storagepoolxml2xmlin/pool-gluster-sub.xml b/tests/storagepoolxml2xmlin/pool-gluster-sub.xml
|
|
|
c401cc |
new file mode 100644
|
|
|
c401cc |
index 0000000..ba4458f
|
|
|
c401cc |
--- /dev/null
|
|
|
c401cc |
+++ b/tests/storagepoolxml2xmlin/pool-gluster-sub.xml
|
|
|
c401cc |
@@ -0,0 +1,9 @@
|
|
|
c401cc |
+<pool type='gluster'>
|
|
|
c401cc |
+ <source>
|
|
|
c401cc |
+ <name>volume</name>
|
|
|
c401cc |
+ <dir path='/sub'/>
|
|
|
c401cc |
+ <host name='localhost'/>
|
|
|
c401cc |
+ </source>
|
|
|
c401cc |
+ <name>mygluster</name>
|
|
|
c401cc |
+ <uuid>65fcba04-5b13-bd93-cff3-52ce48e11ad8</uuid>
|
|
|
c401cc |
+</pool>
|
|
|
c401cc |
diff --git a/tests/storagepoolxml2xmlin/pool-gluster.xml b/tests/storagepoolxml2xmlin/pool-gluster.xml
|
|
|
c401cc |
new file mode 100644
|
|
|
c401cc |
index 0000000..ae9401f
|
|
|
c401cc |
--- /dev/null
|
|
|
c401cc |
+++ b/tests/storagepoolxml2xmlin/pool-gluster.xml
|
|
|
c401cc |
@@ -0,0 +1,8 @@
|
|
|
c401cc |
+<pool type='gluster'>
|
|
|
c401cc |
+ <source>
|
|
|
c401cc |
+ <name>volume</name>
|
|
|
c401cc |
+ <host name='localhost'/>
|
|
|
c401cc |
+ </source>
|
|
|
c401cc |
+ <name>mygluster</name>
|
|
|
c401cc |
+ <uuid>65fcba04-5b13-bd93-cff3-52ce48e11ad8</uuid>
|
|
|
c401cc |
+</pool>
|
|
|
c401cc |
diff --git a/tests/storagepoolxml2xmlout/pool-gluster-sub.xml b/tests/storagepoolxml2xmlout/pool-gluster-sub.xml
|
|
|
c401cc |
new file mode 100644
|
|
|
c401cc |
index 0000000..df7d719
|
|
|
c401cc |
--- /dev/null
|
|
|
c401cc |
+++ b/tests/storagepoolxml2xmlout/pool-gluster-sub.xml
|
|
|
c401cc |
@@ -0,0 +1,12 @@
|
|
|
c401cc |
+<pool type='gluster'>
|
|
|
c401cc |
+ <name>mygluster</name>
|
|
|
c401cc |
+ <uuid>65fcba04-5b13-bd93-cff3-52ce48e11ad8</uuid>
|
|
|
c401cc |
+ <capacity unit='bytes'>0</capacity>
|
|
|
c401cc |
+ <allocation unit='bytes'>0</allocation>
|
|
|
c401cc |
+ <available unit='bytes'>0</available>
|
|
|
c401cc |
+ <source>
|
|
|
c401cc |
+ <host name='localhost'/>
|
|
|
c401cc |
+ <dir path='/sub'/>
|
|
|
c401cc |
+ <name>volume</name>
|
|
|
c401cc |
+ </source>
|
|
|
c401cc |
+</pool>
|
|
|
c401cc |
diff --git a/tests/storagepoolxml2xmlout/pool-gluster.xml b/tests/storagepoolxml2xmlout/pool-gluster.xml
|
|
|
c401cc |
new file mode 100644
|
|
|
c401cc |
index 0000000..a7fa506
|
|
|
c401cc |
--- /dev/null
|
|
|
c401cc |
+++ b/tests/storagepoolxml2xmlout/pool-gluster.xml
|
|
|
c401cc |
@@ -0,0 +1,12 @@
|
|
|
c401cc |
+<pool type='gluster'>
|
|
|
c401cc |
+ <name>mygluster</name>
|
|
|
c401cc |
+ <uuid>65fcba04-5b13-bd93-cff3-52ce48e11ad8</uuid>
|
|
|
c401cc |
+ <capacity unit='bytes'>0</capacity>
|
|
|
c401cc |
+ <allocation unit='bytes'>0</allocation>
|
|
|
c401cc |
+ <available unit='bytes'>0</available>
|
|
|
c401cc |
+ <source>
|
|
|
c401cc |
+ <host name='localhost'/>
|
|
|
c401cc |
+ <dir path='/'/>
|
|
|
c401cc |
+ <name>volume</name>
|
|
|
c401cc |
+ </source>
|
|
|
c401cc |
+</pool>
|
|
|
c401cc |
diff --git a/tests/storagepoolxml2xmltest.c b/tests/storagepoolxml2xmltest.c
|
|
|
c401cc |
index c75480b..9c25f2f 100644
|
|
|
c401cc |
--- a/tests/storagepoolxml2xmltest.c
|
|
|
c401cc |
+++ b/tests/storagepoolxml2xmltest.c
|
|
|
c401cc |
@@ -102,6 +102,8 @@ mymain(void)
|
|
|
c401cc |
DO_TEST("pool-iscsi-multiiqn");
|
|
|
c401cc |
DO_TEST("pool-iscsi-vendor-product");
|
|
|
c401cc |
DO_TEST("pool-sheepdog");
|
|
|
c401cc |
+ DO_TEST("pool-gluster");
|
|
|
c401cc |
+ DO_TEST("pool-gluster-sub");
|
|
|
c401cc |
|
|
|
c401cc |
return ret==0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
|
|
c401cc |
}
|
|
|
c401cc |
--
|
|
|
c401cc |
1.9.0
|
|
|
c401cc |
|