bionic (1) htools.1.gz

Provided by: ganeti-htools-2.16_2.16.0~rc2-1build1_amd64 bug

NAME

       htools - Cluster allocation and placement tools for Ganeti

SYNOPSIS

       hbal   cluster balancer

       hcheck cluster checker

       hspace cluster capacity computation

       hail   IAllocator plugin

       hscan  saves cluster state for later reuse

       hinfo  cluster information printer

       hroller
              cluster rolling maintenance scheduler

DESCRIPTION

       htools is a suite of tools designed to help with allocation/movement of instances and balancing of Ganeti
       clusters.  htools is also the generic binary that must be symlinked or hardlinked under each tool's  name
       in  order to perform the different functions.  Alternatively, the environment variable HTOOLS can be used
       to set the desired role.

       Installed as hbal, it computes and optionally executes a suite of instance moves in order to balance  the
       cluster.

       Installed  as  hcheck,  it preforms cluster checks and optionally simulates rebalancing with all the hbal
       options available.

       Installed as hspace, it computes how many additional instances can be fit on a cluster, while maintaining
       N+1 status.  It can run on models of existing clusters or of simulated clusters.

       Installed  as  hail,  it acts as an IAllocator plugin, i.e.  it is used by Ganeti to compute new instance
       allocations and instance moves.

       Installed as hscan, it scans the local or remote cluster state and saves it to files which can  later  be
       reused by the other roles.

       Installed as hinfo, it prints information about the current cluster state.

       Installed as hroller, it helps scheduling maintenances that require node reboots on a cluster.

COMMON OPTIONS

       Options behave the same in all program modes, but not all program modes support all options.  Some common
       options are:

       -p, --print-nodes
              Prints the node status, in a format designed to allow the  user  to  understand  the  node's  most
              important  parameters.   If the command in question makes a cluster transition (e.g.  balancing or
              allocation), then usually both the initial and final node status is printed.

              It is possible to customise the listed information by passing  a  comma-separated  list  of  field
              names  to  this  option (the field list is currently undocumented), or to extend the default field
              list by prefixing the additional field list with a plus sign.  By  default,  the  node  list  will
              contain the following information:

              F      a  character denoting the status of the node, with '-' meaning an offline node, '*' meaning
                     N+1 failure and blank meaning a good node

              Name   the node name

              t_mem  the total node memory

              n_mem  the memory used by the node itself

              i_mem  the memory used by instances

              x_mem  amount memory which seems to be in use but cannot be determined why or by  which  instance;
                     usually  this means that the hypervisor has some overhead or that there are other reporting
                     errors

              f_mem  the free node memory

              r_mem  the reserved node memory, which is the amount of free memory needed for N+1 compliance

              t_dsk  total disk

              f_dsk  free disk

              pcpu   the number of physical cpus on the node

              vcpu   the number of virtual cpus allocated to primary instances

              pcnt   number of primary instances

              scnt   number of secondary instances

              p_fmem percent of free memory

              p_fdsk percent of free disk

              r_cpu  ratio of virtual to physical cpus

              lCpu   the dynamic CPU load (if the information is available)

              lMem   the dynamic memory load (if the information is available)

              lDsk   the dynamic disk load (if the information is available)

              lNet   the dynamic net load (if the information is available)

       -t datafile, --text-data=*datafile*
              Backend specification: the name of  the  file  holding  node  and  instance  information  (if  not
              collecting  via RAPI or LUXI).  This or one of the other backends must be selected.  The option is
              described in the man page htools(1).

              The file should contain text data, line-based, with single empty lines  separating  sections.   In
              particular,  an  empty  section  is described by the empty string followed by the separating empty
              line, thus yielding two consecutive empty lines.  So the number of empty  lines  does  matter  and
              cannot  be  changed  arbitrarily.  The lines themselves are column-based, with the pipe symbol (|)
              acting as separator.

              The first section contains group data, with the following columns:

              • group name

              • group uuid

              • allocation policy

              • tags (separated by comma)

              • networks (UUID's, separated by comma)

              The second sections contains node data, with the following columns:

              • node name

              • node total memory

              • memory used by the node

              • node free memory

              • node total disk

              • node free disk

              • node physical cores

              • offline/role field (Y for offline nodes, N for online non-master nodes, and  M  for  the  master
                node which is always online)

              • group UUID

              • node spindle count

              • node tags

              • exclusive storage value (Y if active, N otherwise)

              • node free spindles

              • virtual CPUs used by the node OS

              • CPU speed relative to that of a standard node in the node group the node belongs to

              The third section contains instance data, with the fields:

              • instance name

              • instance memory

              • instance disk size

              • instance vcpus

              • instance status (in Ganeti's format, e.g.  running or ERROR_down)

              • instance auto_balance flag (see man page gnt-instance(8))

              • instance primary node

              • instance secondary node(s), if any

              • instance disk type (e.g.  plain or drbd)

              • instance tags

              • spindle use back-end parameter

              • actual disk spindles used by the instance (it can be - when exclusive storage is not active)

              The  fourth  section  contains  the  cluster  tags,  with  one  tag per line (no columns/no column
              processing).

              The fifth section contains the ipolicies of the cluster and the  node  groups,  in  the  following
              format (separated by |):

              • owner (empty if cluster, group name otherwise)

              • standard,  min,  max  instance specs; min and max instance specs are separated between them by a
                semicolon, and can be specified multiple times (min;max;min;max...); each of the specs  contains
                the following values separated by commas:

                • memory size

                • cpu count

                • disk size

                • disk count - NIC count

              • disk templates

              • vcpu ratio

              • spindle ratio

       --mond=*yes|no*
              If  given  the  program will query all MonDs to fetch data from the supported data collectors over
              the network.

       --mond-data datafile
              The name of the file holding the data provided  by  MonD,  to  override  quering  MonDs  over  the
              network.  This is mostly used for debugging.  The file must be in JSON format and present an array
              of JSON objects , one for every node, with two members.  The first member named node is  the  name
              of the node and the second member named reports is an array of report objects.  The report objects
              must be in the same format as produced by the monitoring agent.

       --ignore-dynu
              If given, all dynamic utilisation information will be ignored by assuming it to be 0.  This option
              will  take  precedence over any data passed by the -U option (available with hbal) or by the MonDs
              with the --mond and the --mond-data option.

       -m cluster
              Backend specification: collect data directly from the cluster given as an argument via  RAPI.   If
              the  argument  doesn't  contain  a  colon  (:),  then  it  is converted into a fully-built URL via
              prepending  https://  and  appending  the  default  RAPI  port,  otherwise  it  is  considered   a
              fully-specified URL and used as-is.

       -L [path]
              Backend  specification: collect data directly from the master daemon, which is to be contacted via
              LUXI (an internal Ganeti protocol).  An optional path argument is interpreted as the path  to  the
              unix  socket  on  which  the  master  daemon  listens;  otherwise, the default path used by Ganeti
              (configured at build time) is used.

       -I|--ialloc-src path
              Backend specification: load data directly from an iallocator request (as produced by  Ganeti  when
              doing an iallocator call).  The iallocator request is read from specified path.

       --simulate description
              Backend  specification:  instead  of  using  actual  data,  build  an  empty  cluster given a node
              description.  The  description  parameter  must  be  a  comma-separated  list  of  five  elements,
              describing in order:

              • the allocation policy for this node group (preferred, allocable or unallocable, or alternatively
                the short forms p, a or u)

              • the number of nodes in the cluster

              • the disk size of the nodes (default in mebibytes, units can be used)

              • the memory size of the nodes (default in mebibytes, units can be used)

              • the cpu core count for the nodes

              • the spindle count for the nodes

              An example description would be preferred,20,100G,16g,4,2 describing a 20-node cluster where  each
              node  has  100GB  of  disk space, 16GiB of memory, 4 CPU cores and 2 disk spindles.  Note that all
              nodes must have the same specs currently.

              This option can be given multiple times, and each  new  use  defines  a  new  node  group.   Hence
              different node groups can have different allocation policies and node count/specifications.

       -v, --verbose
              Increase  the  output verbosity.  Each usage of this option will increase the verbosity (currently
              more than 5 doesn't make sense) from the default of one.

       -q, --quiet
              Decrease the output verbosity.  Each usage of this option will decrease the verbosity  (less  than
              zero doesn't make sense) from the default of one.

       -V, --version
              Just show the program version and exit.

   UNITS
       Some  options accept not simply numerical values, but numerical values together with a unit.  By default,
       such unit-accepting options use mebibytes.  Using the lower-case letters of m, g and t (or  their  longer
       equivalents  of  mib,  gib,  tib,  for  which case doesn't matter) explicit binary units can be selected.
       Units in the SI system can be selected using the upper-case letters of  M,  G  and  T  (or  their  longer
       equivalents of MB, GB, TB, for which case doesn't matter).

       More details about the difference between the SI and binary systems can be read in the units(7) man page.

ENVIRONMENT

       The environment variable HTOOLS can be used instead of renaming/symlinking the programs; simply set it to
       the desired role and then the name of the program is no longer used.

REPORTING BUGS

       Report bugs to project website (http://code.google.com/p/ganeti/) or contact  the  developers  using  the
       Ganeti mailing list (ganeti@googlegroups.com).

SEE ALSO

       Ganeti  overview  and  specifications:  ganeti(7)  (general  overview),  ganeti-os-interface(7) (guest OS
       definitions), ganeti-extstorage-interface(7) (external storage providers).

       Ganeti commands: gnt-cluster(8) (cluster-wide commands), gnt-job(8) (job-related  commands),  gnt-node(8)
       (node-related   commands),   gnt-instance(8)   (instance   commands),   gnt-os(8)  (guest  OS  commands),
       gnt-storage(8)  (storage  commands),  gnt-group(8)  (node  group   commands),   gnt-backup(8)   (instance
       import/export commands), gnt-debug(8) (debug commands).

       Ganeti  daemons: ganeti-watcher(8) (automatic instance restarter), ganeti-cleaner(8) (job queue cleaner),
       ganeti-noded(8) (node daemon), ganeti-rapi(8) (remote API daemon).

       Ganeti htools: htools(1) (generic binary), hbal(1) (cluster balancer), hspace(1) (capacity  calculation),
       hail(1) (IAllocator plugin), hscan(1) (data gatherer from remote clusters), hinfo(1) (cluster information
       printer), mon-collector(7) (data collectors interface).

       Copyright (C) 2006-2015 Google Inc.  All rights reserved.

       Redistribution and use in source and binary forms, with or without modification, are  permitted  provided
       that the following conditions are met:

       1.   Redistributions  of  source code must retain the above copyright notice, this list of conditions and
       the following disclaimer.

       2.  Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
       the following disclaimer in the documentation and/or other materials provided with the distribution.

       THIS  SOFTWARE  IS  PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
       WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS  FOR  A
       PARTICULAR  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
       ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL  DAMAGES  (INCLUDING,  BUT  NOT
       LIMITED  TO,  PROCUREMENT  OF  SUBSTITUTE  GOODS  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
       INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,  STRICT  LIABILITY,  OR
       TORT  (INCLUDING  NEGLIGENCE  OR  OTHERWISE)  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
       ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.