**hbal**
cluster balancer
+**hcheck**
+ cluster checker
+
**hspace**
cluster capacity computation
**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
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 ``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
+-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),
lNet
the dynamic net load (if the information is available)
--t *datafile*, --text-data=*datafile*
+-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).
+ page **htools**\(1).
The file should contain text data, line-based, with two empty lines
separating sections. The lines themselves are column-based, with the
- node physical cores
- offline field (as ``Y`` or ``N``)
- group UUID
+ - node spindle count
The third section contains instance data, with the fields:
- 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** (7))
+ - 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
- The fourth and last section contains the cluster tags, with one tag
- per line (no columns/no column processing).
+ 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, containing the following values
+ separated by commas:
+ - memory size
+ - cpu count
+ - disk size
+ - disk count
+ - NIC count
+ - disk templates
+ - vcpu ratio
+ - spindle ratio
-m *cluster*
Backend specification: collect data directly from the *cluster* given
on which the master daemon listens; otherwise, the default path used
by Ganeti (configured at build time) is used.
---simulate *description*
+-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 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,B20,100G,16g,4**
- describing a 20-node cluster where each node has 100GB of disk
- space, 16GiB of memory and 4 CPU cores. Note that all nodes must
- have the same specs currently.
+ 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
+-v, \--verbose
Increase the output verbosity. Each usage of this option will
increase the verbosity (currently more than 2 doesn't make sense)
from the default of one.
--q, --quiet
+-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
+-V, \--version
Just show the program version and exit.
UNITS
matter).
More details about the difference between the SI and binary systems can
-be read in the *units(7)* man page.
+be read in the **units**\(7) man page.
ENVIRONMENT
-----------