Merge branch 'stable-2.6' into stable-2.6-ippool-hotplug-esi
[ganeti-local] / man / gnt-node.rst
index 0bb3c07..7093b44 100644 (file)
@@ -23,9 +23,12 @@ COMMANDS
 ADD
 ~~~
 
-| **add** [--readd] [-s *secondary\_ip*] [-g *nodegroup*]
-| [--master-capable=``yes|no``] [--vm-capable=``yes|no``]
-| [--node-parameters *ndparams*]
+| **add** [\--readd] [{-s|\--secondary-ip} *secondary\_ip*]
+| [{-g|\--node-group} *nodegroup*]
+| [\--master-capable=``yes|no``] [\--vm-capable=``yes|no``]
+| [\--node-parameters *ndparams*]
+| [\--disk-state *diskstate*]
+| [\--hypervisor-state *hvstate*]
 | {*nodename*}
 
 Adds the given node to the cluster.
@@ -39,9 +42,9 @@ Note that the command is potentially destructive, as it will
 forcibly join the specified host the cluster, not paying attention
 to its current status (it could be already in a cluster, etc.)
 
-The ``-s`` is used in dual-home clusters and specifies the new node's
-IP in the secondary network. See the discussion in **gnt-cluster**(8)
-for more information.
+The ``-s (--secondary-ip)`` is used in dual-home clusters and
+specifies the new node's IP in the secondary network. See the
+discussion in **gnt-cluster**(8) for more information.
 
 In case you're readding a node after hardware failure, you can use
 the ``--readd`` parameter. In this case, you don't need to pass the
@@ -49,13 +52,24 @@ secondary IP again, it will reused from the cluster. Also, the
 drained and offline flags of the node will be cleared before
 re-adding it.
 
-The ``-g`` is used to add the new node into a specific node group,
-specified by UUID or name. If only one node group exists you can
-skip this option, otherwise it's mandatory.
+The ``--force-join`` option is to proceed with adding a node even if it already
+appears to belong to another cluster. This is used during cluster merging, for
+example.
 
-The ``vm_capable``, ``master_capable`` and ``ndparams`` options are
-described in **ganeti**(7), and are used to set the properties of the
-new node.
+The ``-g (--node-group)`` option is used to add the new node into a
+specific node group, specified by UUID or name. If only one node group
+exists you can skip this option, otherwise it's mandatory.
+
+The ``vm_capable``, ``master_capable``, ``ndparams``, ``diskstate`` and
+``hvstate`` options are described in **ganeti**(7), and are used to set
+the properties of the new node.
+
+The command performs some operations that change the state of the master
+and the new node, like copying certificates and starting the node daemon
+on the new node, or updating ``/etc/hosts`` on the master node.  If the
+command fails at a later stage, it doesn't undo such changes.  This
+should not be a problem, as a successful run of ``gnt-node add`` will
+bring everything back in sync.
 
 Example::
 
@@ -67,7 +81,7 @@ Example::
 ADD-TAGS
 ~~~~~~~~
 
-**add-tags** [--from *file*] {*nodename*} {*tag*...}
+**add-tags** [\--from *file*] {*nodename*} {*tag*...}
 
 Add tags to the given node. If any of the tags contains invalid
 characters, the entire operation will abort.
@@ -81,22 +95,26 @@ interpreted as stdin.
 EVACUATE
 ~~~~~~~~
 
-**evacuate** [-f] [--early-release] [--iallocator *NAME* \|
---new-secondary *destination\_node*] {*node*...}
+| **evacuate** [-f] [\--early-release] [\--submit]
+| [{-I|\--iallocator} *NAME* \| {-n|\--new-secondary} *destination\_node*]
+| [{-p|\--primary-only} \| {-s|\--secondary-only} ]
+|  {*node*}
 
-This command will move all secondary instances away from the given
-node(s). It works only for instances having a drbd disk template.
+This command will move instances away from the given node. If
+``--primary-only`` is given, only primary instances are evacuated, with
+``--secondary-only`` only secondaries. If neither is given, all
+instances are evacuated. It works only for instances having a drbd disk
+template.
 
 The new location for the instances can be specified in two ways:
 
-- as a single node for all instances, via the ``--new-secondary``
+- as a single node for all instances, via the ``-n (--new-secondary)``
   option
 
-- or via the ``--iallocator`` option, giving a script name as
+- or via the ``-I (--iallocator)`` option, giving a script name as
   parameter, so each instance will be in turn placed on the (per the
   script) optimal node
 
-
 The ``--early-release`` changes the code so that the old storage on
 node being evacuated is removed early (before the resync is
 completed) and the internal Ganeti locks are also released for both
@@ -107,15 +125,31 @@ old storage is already broken) or when the storage on the primary
 node is known to be fine (thus we won't need the old storage for
 potential recovery).
 
+Note that this command is equivalent to using per-instance commands for
+each affected instance individually:
+
+- ``--primary-only`` is equivalent to ``gnt-instance
+  failover/migration`` for non-DRBD instances, but for DRBD instances
+  it's different, and usually is a slow process (it will change the
+  primary to another node while keeping the secondary, this requiring
+  data copies, whereas failover/migrate will only toggle the
+  primary/secondary roles, a fast process)
+- ``--secondary-only`` is equivalent to ``gnt-instance replace-disks``
+  in the secondary node change mode (only valid for DRBD instances)
+- when neither of the above is done a combination of the two cases is run
+
+See **ganeti(7)** for a description of ``--submit`` and other common
+options.
+
 Example::
 
-    # gnt-node evacuate -I dumb node3.example.com
+    # gnt-node evacuate -I hail node3.example.com
 
 
 FAILOVER
 ~~~~~~~~
 
-**failover** [-f] [--ignore-consistency] {*node*}
+**failover** [-f] [\--ignore-consistency] {*node*}
 
 This command will fail over all instances having the given node as
 primary to their secondary nodes. This works only for instances having
@@ -144,8 +178,9 @@ LIST
 ~~~~
 
 | **list**
-| [--no-headers] [--separator=*SEPARATOR*]
-| [--units=*UNITS*] [-o *[+]FIELD,...*]
+| [\--no-headers] [\--separator=*SEPARATOR*]
+| [\--units=*UNITS*] [-v] [{-o|\--output} *[+]FIELD,...*]
+| [\--filter]
 | [node...]
 
 Lists the nodes in the cluster.
@@ -165,153 +200,72 @@ used to enforce a given output unit.
 Queries of nodes will be done in parallel with any running jobs. This might
 give inconsistent results for the free disk/memory.
 
-The ``-o`` option takes a comma-separated list of output fields.
-The available fields and their meaning are:
-
-
-
-name
-    the node name
-
-pinst_cnt
-    the number of instances having this node as primary
-
-pinst_list
-    the list of instances having this node as primary, comma separated
-
-sinst_cnt
-    the number of instances having this node as a secondary node
-
-sinst_list
-    the list of instances having this node as a secondary node, comma
-    separated
-
-pip
-    the primary ip of this node (used for cluster communication)
-
-sip
-    the secondary ip of this node (used for data replication in dual-ip
-    clusters, see gnt-cluster(8)
-
-dtotal
-    total disk space in the volume group used for instance disk
-    allocations
-
-dfree
-    available disk space in the volume group
-
-mtotal
-    total memory on the physical node
-
-mnode
-    the memory used by the node itself
-
-mfree
-    memory available for instance allocations
-
-bootid
-    the node bootid value; this is a linux specific feature that
-    assigns a new UUID to the node at each boot and can be use to
-    detect node reboots (by tracking changes in this value)
-
-tags
-    comma-separated list of the node's tags
-
-serial_no
-    the so called 'serial number' of the node; this is a numeric field
-    that is incremented each time the node is modified, and it can be
-    used to detect modifications
-
-ctime
-    the creation time of the node; note that this field contains spaces
-    and as such it's harder to parse
-
-    if this attribute is not present (e.g. when upgrading from older
-    versions), then "N/A" will be shown instead
-
-mtime
-    the last modification time of the node; note that this field
-    contains spaces and as such it's harder to parse
-
-    if this attribute is not present (e.g. when upgrading from older
-    versions), then "N/A" will be shown instead
-
-uuid
-    Show the UUID of the node (generated automatically by Ganeti)
-
-ctotal
-    the toal number of logical processors
-
-cnodes
-    the number of NUMA domains on the node, if the hypervisor can
-    export this information
-
-csockets
-    the number of physical CPU sockets, if the hypervisor can export
-    this information
-
-master_candidate
-    whether the node is a master candidate or not
-
-drained
-    whether the node is drained or not; the cluster still communicates
-    with drained nodes but excludes them from allocation operations
+The ``-v`` option activates verbose mode, which changes the display of
+special field states (see **ganeti(7)**).
 
-offline
-    whether the node is offline or not; if offline, the cluster does
-    not communicate with offline nodes; useful for nodes that are not
-    reachable in order to avoid delays
-
-role
-    A condensed version of the node flags; this field will output a
-    one-character field, with the following possible values:
-
-    - *M* for the master node
-
-    - *C* for a master candidate
-
-    - *R* for a regular node
-
-    - *D* for a drained node
-
-    - *O* for an offline node
-
-master_capable
-    whether the node can become a master candidate
-
-vm_capable
-    whether the node can host instances
-
-group
-    the name of the node's group, if known (the query is done without
-    locking, so data consistency is not guaranteed)
-
-group.uuid
-    the UUID of the node's group
+The ``-o (--output)`` option takes a comma-separated list of output
+fields. The available fields and their meaning are:
 
+@QUERY_FIELDS_NODE@
 
 If the value of the option starts with the character ``+``, the new
-fields will be added to the default list. This allows to quickly
+fields will be added to the default list. This allows one to quickly
 see the default list plus a few other fields, instead of retyping
 the entire list of fields.
 
-Note that some of this fields are known from the configuration of
-the cluster (e.g. name, pinst, sinst, pip, sip and thus the master
-does not need to contact the node for this data (making the listing
-fast if only fields from this set are selected), whereas the other
-fields are "live" fields and we need to make a query to the cluster
-nodes.
-
-Depending on the virtualization type and implementation details,
-the mtotal, mnode and mfree may have slighly varying meanings. For
-example, some solutions share the node memory with the pool of
-memory used for instances (KVM), whereas others have separate
+Note that some of these fields are known from the configuration of the
+cluster (e.g. ``name``, ``pinst``, ``sinst``, ``pip``, ``sip``) and thus
+the master does not need to contact the node for this data (making the
+listing fast if only fields from this set are selected), whereas the
+other fields are "live" fields and require a query to the cluster nodes.
+
+Depending on the virtualization type and implementation details, the
+``mtotal``, ``mnode`` and ``mfree`` fields may have slightly varying
+meanings. For example, some solutions share the node memory with the
+pool of memory used for instances (KVM), whereas others have separate
 memory for the node and for the instances (Xen).
 
+If exactly one argument is given and it appears to be a query filter
+(see **ganeti(7)**), the query result is filtered accordingly. For
+ambiguous cases (e.g. a single field name as a filter) the ``--filter``
+(``-F``) option forces the argument to be treated as a filter (e.g.
+``gnt-node list -F master_candidate``).
+
 If no node names are given, then all nodes are queried. Otherwise,
 only the given nodes will be listed.
 
 
+LIST-DRBD
+~~~~~~~~~
+
+**list-drbd** [\--no-headers] [\--separator=*SEPARATOR*] node
+
+Lists the mapping of DRBD minors for a given node. This outputs a static
+list of fields (it doesn't accept the ``--output`` option), as follows:
+
+``Node``
+  The (full) name of the node we are querying
+``Minor``
+  The DRBD minor
+``Instance``
+  The instance the DRBD minor belongs to
+``Disk``
+  The disk index that the DRBD minor belongs to
+``Role``
+  Either ``primary`` or ``secondary``, denoting the role of the node for
+  the instance (note: this is not the live status of the DRBD device,
+  but the configuration value)
+``PeerNode``
+  The node that the minor is connected to on the other end
+
+This command can be used as a reverse lookup (from node and minor) to a
+given instance, which can be useful when debugging DRBD issues.
+
+Note that this command queries Ganeti via :manpage:`ganeti-confd(8)`, so
+it won't be available if support for ``confd`` has not been enabled at
+build time; furthermore, in Ganeti 2.6 this is only available via the
+Haskell version of confd (again selected at build time).
+
 LIST-FIELDS
 ~~~~~~~~~~~
 
@@ -330,16 +284,22 @@ List the tags of the given node.
 MIGRATE
 ~~~~~~~
 
-**migrate** [-f] [--non-live] [--migration-mode=live\|non-live]
-{*node*}
+| **migrate** [-f] [\--non-live] [\--migration-mode=live\|non-live]
+| [\--ignore-ipolicy] [\--submit] {*node*}
 
 This command will migrate all instances having the given node as
 primary to their secondary nodes. This works only for instances
 having a drbd disk template.
 
 As for the **gnt-instance migrate** command, the options
-``--no-live`` and ``--migration-mode`` can be given to influence
-the migration type.
+``--no-live``, ``--migration-mode`` and ``--no-runtime-changes``
+can be given to influence the migration type.
+
+If ``--ignore-ipolicy`` is given any instance policy violations
+occurring during this operation are ignored.
+
+See **ganeti(7)** for a description of ``--submit`` and other common
+options.
 
 Example::
 
@@ -349,17 +309,24 @@ Example::
 MODIFY
 ~~~~~~
 
-| **modify** [-f] [--submit]
-| [--master-candidate=``yes|no``] [--drained=``yes|no``] [--offline=``yes|no``]
-| [--master-capable=``yes|no``] [--vm-capable=``yes|no``] [--auto-promote]
-| [-s *secondary_ip*]
-| [--node-parameters *ndparams*]
+| **modify** [-f] [\--submit]
+| [{-C|\--master-candidate} ``yes|no``]
+| [{-D|\--drained} ``yes|no``] [{-O|\--offline} ``yes|no``]
+| [\--master-capable=``yes|no``] [\--vm-capable=``yes|no``] [\--auto-promote]
+| [{-s|\--secondary-ip} *secondary_ip*]
+| [\--node-parameters *ndparams*]
+| [\--node-powered=``yes|no``]
+| [\--hypervisor-state *hvstate*]
+| [\--disk-state *diskstate*]
 | {*node*}
 
 This command changes the role of the node. Each options takes
 either a literal yes or no, and only one option should be given as
 yes. The meaning of the roles and flags are described in the
-manpage **ganeti**(7).
+manpage **ganeti(7)**.
+
+The option ``--node-powered`` can be used to modify state-of-record if
+it doesn't reflect the reality anymore.
 
 In case a node is demoted from the master candidate role, the
 operation will be refused unless you pass the ``--auto-promote``
@@ -375,9 +342,12 @@ candidate role if is in that role)::
 
     # gnt-node modify --offline=yes node1.example.com
 
-The ``-s`` can be used to change the node's secondary ip. No drbd
-instances can be running on the node, while this operation is
-taking place.
+The ``-s (--secondary-ip)`` option can be used to change the node's
+secondary ip. No drbd instances can be running on the node, while this
+operation is taking place.
+
+See **ganeti(7)** for a description of ``--submit`` and other common
+options.
 
 Example (setting the node back to online and master candidate)::
 
@@ -400,7 +370,7 @@ Example::
 REMOVE-TAGS
 ~~~~~~~~~~~
 
-**remove-tags** [--from *file*] {*nodename*} {*tag*...}
+**remove-tags** [\--from *file*] {*nodename*} {*tag*...}
 
 Remove tags from the given node. If any of the tags are not
 existing on the node, the entire operation will abort.
@@ -414,8 +384,8 @@ be interpreted as stdin.
 VOLUMES
 ~~~~~~~
 
-| **volumes** [--no-headers] [--human-readable]
-| [--separator=*SEPARATOR*] [--output=*FIELDS*]
+| **volumes** [\--no-headers] [\--human-readable]
+| [\--separator=*SEPARATOR*] [{-o|\--output} *FIELDS*]
 | [*node*...]
 
 Lists all logical volumes and their physical disks from the node(s)
@@ -433,8 +403,8 @@ option is given, then the values are shown in mebibytes to allow
 parsing by scripts. In both cases, the ``--units`` option can be
 used to enforce a given output unit.
 
-The ``-o`` option takes a comma-separated list of output fields.
-The available fields and their meaning are:
+The ``-o (--output)`` option takes a comma-separated list of output
+fields. The available fields and their meaning are:
 
 node
     the node name on which the volume exists
@@ -467,9 +437,9 @@ Example::
 LIST-STORAGE
 ~~~~~~~~~~~~
 
-| **list-storage** [--no-headers] [--human-readable]
-| [--separator=*SEPARATOR*] [--storage-type=*STORAGE\_TYPE*]
-| [--output=*FIELDS*]
+| **list-storage** [\--no-headers] [\--human-readable]
+| [\--separator=*SEPARATOR*] [\--storage-type=*STORAGE\_TYPE*]
+| [{-o|\--output} *FIELDS*]
 | [*node*...]
 
 Lists the available storage units and their details for the given
@@ -490,8 +460,8 @@ used to enforce a given output unit.
 The ``--storage-type`` option can be used to choose a storage unit
 type. Possible choices are lvm-pv, lvm-vg or file.
 
-The ``-o`` option takes a comma-separated list of output fields.
-The available fields and their meaning are:
+The ``-o (--output)`` option takes a comma-separated list of output
+fields. The available fields and their meaning are:
 
 node
     the node name on which the volume exists
@@ -538,8 +508,8 @@ Example::
 MODIFY-STORAGE
 ~~~~~~~~~~~~~~
 
-**modify-storage** [``--allocatable=yes|no``]
-{*node*} {*storage-type*} {*volume-name*}
+| **modify-storage** [\--allocatable={yes|no}] [\--submit]
+| {*node*} {*storage-type*} {*volume-name*}
 
 Modifies storage volumes on a node. Only LVM physical volumes can
 be modified at the moment. They have a storage type of "lvm-pv".
@@ -552,14 +522,14 @@ Example::
 REPAIR-STORAGE
 ~~~~~~~~~~~~~~
 
-**repair-storage** [--ignore-consistency] {*node*} {*storage-type*}
-{*volume-name*}
+| **repair-storage** [\--ignore-consistency] ]\--submit]
+| {*node*} {*storage-type*} {*volume-name*}
 
 Repairs a storage volume on a node. Only LVM volume groups can be
 repaired at this time. They have the storage type "lvm-vg".
 
-On LVM volume groups, **repair-storage** runs "vgreduce
---removemissing".
+On LVM volume groups, **repair-storage** runs ``vgreduce
+--removemissing``.
 
 
 
@@ -578,18 +548,71 @@ Example::
 POWERCYCLE
 ~~~~~~~~~~
 
-**powercycle** [``--yes``] [``--force``] {*node*}
+**powercycle** [\--yes] [\--force] [\--submit] {*node*}
 
-This commands (tries to) forcefully reboot a node. It is a command
-that can be used if the node environemnt is broken, such that the
-admin can no longer login over ssh, but the Ganeti node daemon is
+This command (tries to) forcefully reboot a node. It is a command
+that can be used if the node environment is broken, such that the
+admin can no longer login over SSH, but the Ganeti node daemon is
 still working.
 
 Note that this command is not guaranteed to work; it depends on the
 hypervisor how effective is the reboot attempt. For Linux, this
-command require that the kernel option CONFIG\_MAGIC\_SYSRQ is
+command requires the kernel option ``CONFIG_MAGIC_SYSRQ`` to be
 enabled.
 
 The ``--yes`` option can be used to skip confirmation, while the
 ``--force`` option is needed if the target node is the master
 node.
+
+See **ganeti(7)** for a description of ``--submit`` and other common
+options.
+
+POWER
+~~~~~
+
+**power** [``--force``] [``--ignore-status``] [``--all``]
+[``--power-delay``] on|off|cycle|status [*nodes*]
+
+This command calls out to out-of-band management to change the power
+state of given node. With ``status`` you get the power status as reported
+by the out-of-band management script.
+
+Note that this command will only work if the out-of-band functionality
+is configured and enabled on the cluster. If this is not the case,
+please use the **powercycle** command above.
+
+Using ``--force`` you skip the confirmation to do the operation.
+Currently this only has effect on ``off`` and ``cycle``. On those two
+you can *not* operate on the master. However, the command will provide
+you with the command to invoke to operate on the master nerver-mind.
+This is considered harmful and Ganeti does not support the use of it.
+
+Providing ``--ignore-status`` will ignore the offline=N state of a node
+and continue with power off.
+
+``--power-delay`` specifies the time in seconds (factions allowed)
+waited between powering on the next node. This is by default 2 seconds
+but can increased if needed with this option.
+
+*nodes* are optional. If not provided it will call out for every node in
+the cluster. Except for the ``off`` and ``cycle`` command where you've
+to explicit use ``--all`` to select all.
+
+
+HEALTH
+~~~~~~
+
+**health** [*nodes*]
+
+This command calls out to out-of-band management to ask for the health status
+of all or given nodes. The health contains the node name and then the items
+element with their status in a ``item=status`` manner. Where ``item`` is script
+specific and ``status`` can be one of ``OK``, ``WARNING``, ``CRITICAL`` or
+``UNKNOWN``. Items with status ``WARNING`` or ``CRITICAL`` are logged and
+annotated in the command line output.
+
+.. vim: set textwidth=72 :
+.. Local Variables:
+.. mode: rst
+.. fill-column: 72
+.. End: