This patch updates the design doc "Design correct reporting of storage
free space". The modifications were chosen to not conflict with any
future changes of Ganeti regarding storage pools.

Signed-off-by: Helga Velroyen <[email protected]>
---
 doc/design-storagespace.rst | 88 +++++++++++++++++++++++++++------------------
 1 file changed, 53 insertions(+), 35 deletions(-)

diff --git a/doc/design-storagespace.rst b/doc/design-storagespace.rst
index 919479f..4733400 100644
--- a/doc/design-storagespace.rst
+++ b/doc/design-storagespace.rst
@@ -20,21 +20,19 @@ interaction with different storage types.
 Configuration changes
 ---------------------
 
-Each storage type will have a new "pools" parameter added (type list of
-strings). This will be list of vgs for plain and drbd (note that we make
-no distinction at this level between allowed vgs and metavgs), the list
-of rados pools for rados, or the storage directory for file and
-sharedfile. The parameters already present in the cluster config object
-will be moved to the storage parameters.
-
-Since currently file and sharedfile only support a single directory this
-list will be limited to one. In the future if we'll have support for
-more directories, or for per-nodegroup directories this can be changed.
-
-Note that these are just "mechanisms" parameters that define which
-storage pools the cluster can use. Further filtering about what's
-allowed can go in the ipolicy, but these changes are not covered in this
-design doc.
+Add a new attribute "enabled_storage_methods" (type list of strings) to the
+cluster config which holds the types of storages, for example, "plain", "drbd",
+or "ext". We consider the first one of the list as the default method.
+
+For file storage, we'll report the storage space on the file storage dir,
+which is currently limited to one directory. In the future, if we'll have
+support for more directories, or for per-nodegroup directories this can be
+changed.
+
+Note that the abovementioned enabled_storage_methods are just "mechanisms"
+parameters that define which storage methods the cluster can use. Further
+filtering about what's allowed can go in the ipolicy, but these changes are
+not covered in this design doc.
 
 Since the ipolicy currently has a list of enabled storage types, we'll
 use that to decide which storage type is the default, and to self-select
@@ -47,17 +45,23 @@ RPC changes
 -----------
 
 The noded RPC call that reports node storage space will be changed to
-accept a list of <method>,<key> string tuples. For each of them it will
-report the free amount of space found on storage <key> as known by the
-requested method. Methods are for example ``lvm``, ``filesystem``,
-``rados``, and the key would be a volume group name in the case of lvm,
-a directory name for the filesystem and a rados pool name, for
-rados_pool.
+accept a list of <method>,<key> string tuples. For each of them, it will
+report the free amount of storage space found on storage <key> as known
+by the requested storage type method. For example methods are ``lvm``,
+``filesystem``, or ``rados``, and the key would be a volume group name, in
+the case of lvm, a directory name for the filesystem and a rados pool name
+for rados storage.
+
+For now, we will implement only the storage reporting for non-shared storage,
+that is ``filesystem`` and ``lvm``. For shared storage methods like ``rados``
+and ``ext`` we will not implement a free space calculation, because it does
+not make sense to query each node for the free space of a commonly used
+storage.
 
 Masterd will know (through a constant map) which storage type uses which
 method for storage calculation (i.e. ``plain`` and ``drbd`` use ``lvm``,
-``file`` and ``sharedfile`` use ``filesystem``, etc) and query the one
-needed (or all of the needed ones).
+``file`` uses ``filesystem``, etc) and query the one needed (or all of the
+needed ones).
 
 Note that for file and sharedfile the node knows which directories are
 allowed and won't allow any other directory to be queried for security
@@ -73,18 +77,32 @@ Ganeti reporting
 
 ``gnt-node list`` will by default report information just about the
 default storage type. It will be possible to add fields to ask about
-other ones, if they're enabled.
-
-``gnt-node info`` will report information about all enabled storage
-types, without querying them (just say which ones are supported
-according to the cluster configuration).
-
-``gnt-node list-storage`` will change to report information about all
-available storage pools in each storage type. An extra flag will be
-added to filter by storage pool name (alternatively we can implement
-this by allowing to query by a list of ``type:pool`` string tuples to
-have a more comprehensive filter).
-
+other ones, if they're enabled. Examples:
+
+> gnt-node list
+Node                       DTotal DFree MTotal MNode MFree Pinst Sinst
+mynode1                      3.6T  3.6T  64.0G 1023M 62.2G     1     0
+mynode2                      3.6T  3.6T  64.0G 1023M 62.0G     2     1
+mynode3                      3.6T  3.6T  64.0G 1023M 62.3G     0     2
+
+> gnt-node list -o dtotal/lvm/myvg,dfree/rados/myrados
+Node      DTotal (Lvm, myvg) DFree (Rados, myrados)
+mynode1                 3.6T                      -
+mynode2                 3.6T                      -
+
+``gnt-cluster info`` will report information which storage methods are
+enabled, thus just say which ones are supported according to the cluster
+configuration). Example output:
+
+> gnt-cluster info
+[...]
+Cluster parameters:
+  - ...
+  - enabled storage methods: plain (default), drbd, lvm, rados
+  - ...
+
+``gnt-node list-storage`` will not be affected by any changes, since this 
design
+describes only free storage reporting for non-shared storage methods.
 
 Allocator changes
 -----------------
-- 
1.8.1.3

Reply via email to