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
