(Sorry for the delay on this, I was sick last week and could not finish it
before.)


On Tue, Mar 5, 2013 at 10:25 AM, Helga Velroyen <[email protected]> wrote:

> 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 | 95
> ++++++++++++++++++++++++++-------------------
>  1 file changed, 56 insertions(+), 39 deletions(-)
>
> diff --git a/doc/design-storagespace.rst b/doc/design-storagespace.rst
> index 919479f..39290eb 100644
> --- a/doc/design-storagespace.rst
> +++ b/doc/design-storagespace.rst
> @@ -20,21 +20,23 @@ 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 now, there is no plan for an additional key to distinguish on
> cluster-level
> +between different entities of the same type of storage. For lvm and drbd,
> we
> +continue to report the free storage of the lvm vg.
> +
> +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,22 +49,18 @@ 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> string tuples. For the methods ``plain``,
> ``drbd``,
> +and ``file``, it will report the free amount of space. For shared storage
> +methods like ``rados`` and ``ext`` we will not report anything for now.
>
>  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
> -reasons. The actual path still needs to be passed to distinguish the
> -two, as the method will be the same for both.
> +Note that we will not implement a free space calculation for any shared
> +storage method, because it does not make sense to query each node for
> +the free space of a commonly used storage.
>
>  These calculations will be implemented in the node storage system
>  (currently lib/storage.py) but querying will still happen through the
> @@ -73,18 +71,37 @@ 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
> +mynode4                      3.6T  3.6T  64.0G 1023M 62.3G     0     0
> +mynode5                      3.6T  3.6T  64.0G 1023M 62.3G     0     0
> +
> +> gnt-node list -o dtotal_plain,dfree_plain,dtotal_rados,dfree_rados
> +Node      DTotal (plain) DFree (plain) DTotal (Rados) DFree (Rados)
> +mynode1             3.6T          3.6T              -             -
> +mynode2             3.6T          3.6T              -             -
> +mynode3             3.6T          3.6T              -             -
> +mynode4             3.6T          3.6T              -             -
> +mynode5             3.6T          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