On Mon, Mar 11, 2013 at 03:57:20PM +0100, Helga Velroyen wrote:
> Hi!
> 
> 
> On Mon, Mar 11, 2013 at 3:34 PM, Helga Velroyen <[email protected]> wrote:
> 
> > Hi!
> >
> > On Mon, Mar 11, 2013 at 3:32 PM, Guido Trotter <[email protected]>wrote:
> >
> >> On Mon, Mar 11, 2013 at 7:25 AM, Iustin Pop <[email protected]> wrote:
> >> > On Mon, Mar 11, 2013 at 03:20:36PM +0100, Helga Velroyen wrote:
> >> >> Hi!
> >> >>
> >> >> On Mon, Mar 11, 2013 at 3:18 PM, Iustin Pop <[email protected]> wrote:
> >> >>
> >> >> > On Mon, Mar 11, 2013 at 06:28:26AM -0700, Guido Trotter wrote:
> >> >> > > On Mon, Mar 11, 2013 at 6:17 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 | 118
> >> >> > +++++++++++++++++++++++++++++++-------------
> >> >> > > >  1 file changed, 83 insertions(+), 35 deletions(-)
> >> >> > > >
> >> >> > > > diff --git a/doc/design-storagespace.rst
> >> b/doc/design-storagespace.rst
> >> >> > > > index 919479f..67603e8 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,40 @@ 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                      -
> >> >> > > > +
> >> >> > >
> >> >> > > Could you add a note on how one is supposed to find about the
> >> >> > > "myrados" and "myvg" parts, and perhaps we can also have just
> >> >> > > dtotal/lvm that gives the "first/default" lvm. Also with storage
> >> >> > > pools, won't we go directly dtotal/pool_name without specifying
> >> "lvm"
> >> >> > > or "rados" in between? So perhaps we should "just" as an interim
> >> allow
> >> >> > > two levels, or allow three levels in between but go towards having
> >> >> > > two, in the future.
> >> >> >
> >> >> > Wait a second. I'm thoroughly confused now.
> >> >> >
> >> >> > I thought the discussion was that in the current stage we don't allow
> >> >> > custom names, but only one pool (key=type), and in the future
> >> key=type
> >> >> > migrates to key=name (pointing to the definitions)?!
> >> >> >
> >> >>
> >> >> That would drop the possibility to refer to vg and meta_vg seperately,
> >> at
> >> >> least in this interim state. Do we really want that? It is the only
> >> reason
> >> >> to have this three-part-definition as interim solution before storage
> >> pools
> >> >> are implemented.
> >> >
> >> > `metavg' should not be used for actual storage, so I don't see much gain
> >> > from having it available; htools doesn't take it into consideration, and
> >> > in general Ganeti presumes that the administrator has ensured there's
> >> > enough space (i.e. infinite) for it.
> >> >
> >> > So yes, I don't see a problem there. Handling the metavg correctly will
> >> > be a lot of work in any case…
> >> >
> >>
> >> The other reason is that nowadays you can manually specify a vg,
> >> although then "unsupported things" happen, I guess (from allocation,
> >> etc).
> >>
> >> Since to fully support that we will need storage pools, I agree with
> >> this option, and to drop the three/level in favor of two, as long as
> >> we clearly specify that this "completely" supports only one
> >> vg/directory/etc and "manually specified"ones will need to be
> >> reconciled with pools later.
> >>
> >>
> > Okay, I am fine with the two-level solution as well and will make that
> > clear in the design doc. Will send an interdiff soon.
> >
> > Cheers,
> > Helga
> >
> 
> Here is the interdiff:
> 
> ---
>  doc/design-storagespace.rst | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/doc/design-storagespace.rst b/doc/design-storagespace.rst
> index 67603e8..6c86d6e 100644
> --- a/doc/design-storagespace.rst
> +++ b/doc/design-storagespace.rst
> @@ -75,9 +75,9 @@ These calculations will be implemented in the node
> storage system
>  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. Examples:
> +`gnt-node list`` can be queried for the different storage methods, if they
> +are enabled. By default, it will just report information about the default
> +storage method. Examples:
> 
>  > gnt-node list
>  Node                       DTotal DFree MTotal MNode MFree Pinst Sinst
> @@ -85,18 +85,23 @@ 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
> +> gnt-node list -o dtotal/lvm,dfree/rados
>  Node      DTotal (Lvm, myvg) DFree (Rados, myrados)
>  mynode1                 3.6T                      -
>  mynode2                 3.6T                      -
> 
> -We want to ensure that this design is forward-compatible with respect to
> -the introduction of storage pools. When storage pools are introduced, we
> -will name the default drbd storage pool 'drbd'. It will be possible to
> -rename it. By default, ``gnt-node`` will report on the default storage,
> -but it will be possible to ask about any of them. With the implementation
> -of storage pools, there will be new functionality to ask about what storage
> -pools are available and of what type.
> +Note that for drbd, we only report the space of the vg and only if it was
> not
> +renamed to something different than the default volume group name. With
> this
> +design, there is also no possibility to ask about the meta volume group. We
> +restrict the design here to make the transition to storage pools easier
> (as it
> +is an interim state only). It is the administrator's responsibility to
> ensure
> +that there is enough space for the meta volume group.
> +
> +When storage pools are implemented, we switch from referencing the storage
> +method to referencing the storage pool name. For that, of course, the pool
> +names need to be unique over all storage methods. The default drbd storage
> pool
> +will be called 'drbd' and it will be possible to rename it. There will be
> new
> +functionality to ask about what storage pools are available and of what
> type.

Since there's no actual "drbd" storage, just LVM under drbd, the concept
of "drbd storage pool" doesn't make much sense.

I don't know if this is just an accidental oversight or if it points to
a bigger problem behind the storage pools design (it's not a 1:1 mapping
between storage type and storage pool type).

regards,
iustin

Reply via email to