htools - Cluster allocation and placement tools for Ganeti
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.
Options behave the same in all program modes, but not all program modes support all options. Some common options are:
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:
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. The lines themselves are column-based, with the pipe symbol (|) acting as separator.
The first section contains group data, with the following columns:
The second sections contains node data, with the following columns:
The third section contains instance data, with the fields:
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 |):
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:
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.
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.
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.