In Ganeti 2.0, the architecture of the cluster is a little more
complicated than in 1.2. The cluster is coordinated by a master daemon
-(**ganeti-masterd**(8)), running on the master node. Each node runs
+(**ganeti-masterd**\(8)), running on the master node. Each node runs
(as before) a node daemon, and the master has the RAPI daemon running
too.
Node Parameters
~~~~~~~~~~~~~~~
-These parameters are node specific and can be preseeded on node-group
-and cluster level.
+The ``ndparams`` refer to node parameters. These can be set as defaults
+on cluster and node group levels, but they take effect for nodes only.
Currently we support the following node parameters:
the `Ganeti Node OOB Management Framework <design-oob.rst>`_ design
document.
+spindle_count
+ This should reflect the I/O performance of local attached storage
+ (e.g. for "file", "plain" and "drbd" disk templates). It doesn't
+ have to match the actual spindle count of (any eventual) mechanical
+ hard-drives, its meaning is site-local and just the relative values
+ matter.
+
+exclusive_storage
+ When this Boolean flag is enabled, physical disks on the node are
+ assigned to instance disks in an exclusive manner, so as to lower I/O
+ interference between instances. See the `Partitioned Ganeti
+ <design-partitioned.rst>`_ design document for more details. This
+ parameter cannot be set on individual nodes, as its value must be
+ the same within each node group.
+
+
+Hypervisor State Parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Using ``--hypervisor-state`` you can set hypervisor specific states as
+pointed out in ``Ganeti Resource Model <design-resource-model.rst>``.
+
+The format is: ``hypervisor:option=value``.
+
+Currently we support the following hypervisor state values:
+
+mem_total
+ Total node memory, as discovered by this hypervisor
+mem_node
+ Memory used by, or reserved for, the node itself; note that some
+ hypervisors can report this in an authoritative way, other not
+mem_hv
+ Memory used either by the hypervisor itself or lost due to instance
+ allocation rounding; usually this cannot be precisely computed, but
+ only roughly estimated
+cpu_total
+ Total node cpu (core) count; usually this can be discovered
+ automatically
+cpu_node
+ Number of cores reserved for the node itself; this can either be
+ discovered or set manually. Only used for estimating how many VCPUs
+ are left for instances
+
+Note that currently this option is unused by Ganeti; values will be
+recorded but will not influence the Ganeti operation.
+
+
+Disk State Parameters
+~~~~~~~~~~~~~~~~~~~~~
+
+Using ``--disk-state`` you can set disk specific states as pointed out
+in ``Ganeti Resource Model <design-resource-model.rst>``.
+
+The format is: ``storage_type/identifier:option=value``. Where we
+currently just support ``lvm`` as storage type. The identifier in this
+case is the LVM volume group. By default this is ``xenvg``.
+
+Currently we support the following hypervisor state values:
+
+disk_total
+ Total disk size (usually discovered automatically)
+disk_reserved
+ Reserved disk size; this is a lower limit on the free space, if such a
+ limit is desired
+disk_overhead
+ Disk that is expected to be used by other volumes (set via
+ ``reserved_lvs``); usually should be zero
+
+Note that currently this option is unused by Ganeti; values will be
+recorded but will not influence the Ganeti operation.
+
Cluster configuration
~~~~~~~~~~~~~~~~~~~~~
availability for a certain command can be checked by calling the
command using the ``--help`` option.
-**gnt-...** *command* [--dry-run] [--priority {low | normal | high}]
+| **gnt-...** *command* [\--dry-run] [\--priority {low | normal | high}]
+| [\--submit]
The ``--dry-run`` option can be used to check whether an operation
would succeed.
The option ``--priority`` sets the priority for opcodes submitted
by the command.
+The ``--submit`` option is used to send the job to the master daemon but
+not wait for its completion. The job ID will be shown so that it can be
+examined using **gnt-job info**.
+
+Defaults
+~~~~~~~~
+
+For certain commands you can use environment variables to provide
+default command line arguments. Just assign the arguments as a string to
+the corresponding environment variable. The format of that variable
+name is **binary**_*command*. **binary** is the name of the ``gnt-*``
+script all upper case and dashes replaced by underscores, and *command*
+is the command invoked on that script.
+
+Currently supported commands are ``gnt-node list``, ``gnt-group list``
+and ``gnt-instance list``. So you can configure default command line
+flags by setting ``GNT_NODE_LIST``, ``GNT_GROUP_LIST`` and
+``GNT_INSTANCE_LIST``.
+
+Debug options
+~~~~~~~~~~~~~
+
+If the variable ``FORCE_LUXI_SOCKET`` is set, it will override the
+socket used for LUXI connections by command-line tools
+(``gnt-*``). This is useful mostly for debugging, and some operations
+won't work at all if, for example, you point this variable to the
+confd-supplied query socket and try to submit a job.
+
+If the variable is set to the value ``master``, it will connect to the
+correct path for the master daemon (even if, for example, split
+queries are enabled and this is a query operation). If set to
+``query``, it will always (try to) connect to the query socket, even
+if split queries are disabled. Otherwise, the value is taken to
+represent a filesystem path to the socket to use.
+
Field formatting
----------------
are denoted via a special symbol (in terse mode) or a string (in
verbose mode):
-*, (offline)
+\*, (offline)
The node in question is marked offline, and thus it cannot be
queried for data. This result is persistent until the node is
de-offlined.
# gnt-instance modify -H kernel_path=an\\,example instance1
# gnt-instance modify -H kernel_path='an\,example' instance1
+Query filters
+~~~~~~~~~~~~~
+
+Most commands listing resources (e.g. instances or nodes) support filtering.
+The filter language is similar to Python expressions with some elements from
+Perl. The language is not generic. Each condition must consist of a field name
+and a value (except for boolean checks), a field can not be compared to another
+field. Keywords are case-sensitive.
+
+Examples (see below for syntax details):
+
+- List webservers::
+
+ gnt-instance list --filter 'name =* "web*.example.com"'
+
+- List instances with three or six virtual CPUs and whose primary
+ nodes reside in groups starting with the string "rack"::
+
+ gnt-instance list --filter
+ '(be/vcpus == 3 or be/vcpus == 6) and pnode.group =~ m/^rack/'
+
+- Nodes hosting primary instances::
+
+ gnt-node list --filter 'pinst_cnt != 0'
+
+- Nodes which aren't master candidates::
+
+ gnt-node list --filter 'not master_candidate'
+
+- Short version for globbing patterns::
+
+ gnt-instance list '*.site1' '*.site2'
+
+Syntax in pseudo-BNF::
+
+ <quoted-string> ::= /* String quoted with single or double quotes,
+ backslash for escaping */
+
+ <integer> ::= /* Number in base-10 positional notation */
+
+ <re> ::= /* Regular expression */
+
+ /*
+ Modifier "i": Case-insensitive matching, see
+ http://docs.python.org/library/re#re.IGNORECASE
+
+ Modifier "s": Make the "." special character match any character,
+ including newline, see http://docs.python.org/library/re#re.DOTALL
+ */
+ <re-modifiers> ::= /* empty */ | i | s
+
+ <value> ::= <quoted-string> | <integer>
+
+ <condition> ::=
+ { /* Value comparison */
+ <field> { == | != | < | <= | >= | > } <value>
+
+ /* Collection membership */
+ | <value> [ not ] in <field>
+
+ /* Regular expressions (recognized delimiters
+ are "/", "#", "^", and "|"; backslash for escaping)
+ */
+ | <field> { =~ | !~ } m/<re>/<re-modifiers>
+
+ /* Globbing */
+ | <field> { =* | !* } <quoted-string>
+
+ /* Boolean */
+ | <field>
+ }
+
+ <filter> ::=
+ { [ not ] <condition> | ( <filter> ) }
+ [ { and | or } <filter> ]
+
+Operators:
+
+*==*
+ Equality
+*!=*
+ Inequality
+*<*
+ Less than
+*<=*
+ Less than or equal
+*>*
+ Greater than
+*>=*
+ Greater than or equal
+*=~*
+ Pattern match using regular expression
+*!~*
+ Logically negated from *=~*
+*=\**
+ Globbing, see **glob**\(7), though only * and ? are supported
+*!\**
+ Logically negated from *=\**
+*in*, *not in*
+ Collection membership and negation
+
+
Common daemon functionality
---------------------------
All Ganeti daemons re-open the log file(s) when sent a SIGHUP signal.
-**logrotate**(8) can be used to rotate Ganeti's log files.
+**logrotate**\(8) can be used to rotate Ganeti's log files.
+
+.. vim: set textwidth=72 :
+.. Local Variables:
+.. mode: rst
+.. fill-column: 72
+.. End: