Statistics
| Branch: | Tag: | Revision:

root / man / gnt-node.rst @ 65914847

History | View | Annotate | Download (21.6 kB)

1
gnt-node(8) Ganeti | Version @GANETI_VERSION@
2
=============================================
3

    
4
Name
5
----
6

    
7
gnt-node - Node administration
8

    
9
Synopsis
10
--------
11

    
12
**gnt-node** {command} [arguments...]
13

    
14
DESCRIPTION
15
-----------
16

    
17
The **gnt-node** is used for managing the (physical) nodes in the
18
Ganeti system.
19

    
20
COMMANDS
21
--------
22

    
23
ADD
24
~~~
25

    
26
| **add** [\--readd] [{-s|\--secondary-ip} *secondary\_ip*]
27
| [{-g|\--node-group} *nodegroup*]
28
| [\--master-capable=``yes|no``] [\--vm-capable=``yes|no``]
29
| [\--node-parameters *ndparams*]
30
| [\--disk-state *diskstate*]
31
| [\--hypervisor-state *hvstate*]
32
| {*nodename*}
33

    
34
Adds the given node to the cluster.
35

    
36
This command is used to join a new node to the cluster. You will
37
have to provide the password for root of the node to be able to add
38
the node in the cluster. The command needs to be run on the Ganeti
39
master.
40

    
41
Note that the command is potentially destructive, as it will
42
forcibly join the specified host the cluster, not paying attention
43
to its current status (it could be already in a cluster, etc.)
44

    
45
The ``-s (--secondary-ip)`` is used in dual-home clusters and
46
specifies the new node's IP in the secondary network. See the
47
discussion in **gnt-cluster**\(8) for more information.
48

    
49
In case you're readding a node after hardware failure, you can use
50
the ``--readd`` parameter. In this case, you don't need to pass the
51
secondary IP again, it will reused from the cluster. Also, the
52
drained and offline flags of the node will be cleared before
53
re-adding it.
54

    
55
The ``-g (--node-group)`` option is used to add the new node into a
56
specific node group, specified by UUID or name. If only one node group
57
exists you can skip this option, otherwise it's mandatory.
58

    
59
The ``vm_capable``, ``master_capable``, ``ndparams``, ``diskstate`` and
60
``hvstate`` options are described in **ganeti**\(7), and are used to set
61
the properties of the new node.
62

    
63
The command performs some operations that change the state of the master
64
and the new node, like copying certificates and starting the node daemon
65
on the new node, or updating ``/etc/hosts`` on the master node.  If the
66
command fails at a later stage, it doesn't undo such changes.  This
67
should not be a problem, as a successful run of ``gnt-node add`` will
68
bring everything back in sync.
69

    
70
If the node was previously part of another cluster and still has daemons
71
running, the ``node-cleanup`` tool can be run on the machine to be added
72
to clean remains of the previous cluster from the node.
73

    
74
Example::
75

    
76
    # gnt-node add node5.example.com
77
    # gnt-node add -s 192.0.2.5 node5.example.com
78
    # gnt-node add -g group2 -s 192.0.2.9 node9.group2.example.com
79

    
80

    
81
EVACUATE
82
~~~~~~~~
83

    
84
| **evacuate** [-f] [\--early-release] [\--submit]
85
| [{-I|\--iallocator} *NAME* \| {-n|\--new-secondary} *destination\_node*]
86
| [{-p|\--primary-only} \| {-s|\--secondary-only} ]
87
|  {*node*}
88

    
89
This command will move instances away from the given node. If
90
``--primary-only`` is given, only primary instances are evacuated, with
91
``--secondary-only`` only secondaries. If neither is given, all
92
instances are evacuated. It works only for instances having a drbd disk
93
template.
94

    
95
The new location for the instances can be specified in two ways:
96

    
97
- as a single node for all instances, via the ``-n (--new-secondary)``
98
  option
99

    
100
- or via the ``-I (--iallocator)`` option, giving a script name as
101
  parameter (or ``.`` to use the default allocator), so each instance
102
  will be in turn placed on the (per the script) optimal node
103

    
104
The ``--early-release`` changes the code so that the old storage on
105
node being evacuated is removed early (before the resync is
106
completed) and the internal Ganeti locks are also released for both
107
the current secondary and the new secondary, thus allowing more
108
parallelism in the cluster operation. This should be used only when
109
recovering from a disk failure on the current secondary (thus the
110
old storage is already broken) or when the storage on the primary
111
node is known to be fine (thus we won't need the old storage for
112
potential recovery).
113

    
114
Note that this command is equivalent to using per-instance commands for
115
each affected instance individually:
116

    
117
- ``--primary-only`` is equivalent to ``gnt-instance
118
  failover/migration`` for non-DRBD instances, but for DRBD instances
119
  it's different, and usually is a slow process (it will change the
120
  primary to another node while keeping the secondary, this requiring
121
  data copies, whereas failover/migrate will only toggle the
122
  primary/secondary roles, a fast process)
123
- ``--secondary-only`` is equivalent to ``gnt-instance replace-disks``
124
  in the secondary node change mode (only valid for DRBD instances)
125
- when neither of the above is done a combination of the two cases is run
126

    
127
See **ganeti**\(7) for a description of ``--submit`` and other common
128
options.
129

    
130
Example::
131

    
132
    # gnt-node evacuate -I hail node3.example.com
133

    
134
Note that, due to an issue with the iallocator interface, evacuation of
135
all instances at once is not yet implemented. Full evacuation can
136
currently be achieved by sequentially evacuating primaries and
137
secondaries.
138
::
139

    
140
    # gnt-node evacuate -p node3.example.com
141
    # gnt-node evacuate -s node3.example.com
142

    
143

    
144
FAILOVER
145
~~~~~~~~
146

    
147
**failover** [-f] [\--ignore-consistency] {*node*}
148

    
149
This command will fail over all instances having the given node as
150
primary to their secondary nodes. This works only for instances having
151
a drbd disk template.
152

    
153
Normally the failover will check the consistency of the disks before
154
failing over the instance. If you are trying to migrate instances off
155
a dead node, this will fail. Use the ``--ignore-consistency`` option
156
for this purpose.
157

    
158
Example::
159

    
160
    # gnt-node failover node1.example.com
161

    
162

    
163
INFO
164
~~~~
165

    
166
**info** [*node*...]
167

    
168
Show detailed information about the nodes in the cluster. If you
169
don't give any arguments, all nodes will be shows, otherwise the
170
output will be restricted to the given names.
171

    
172
LIST
173
~~~~
174

    
175
| **list**
176
| [\--no-headers] [\--separator=*SEPARATOR*]
177
| [\--units=*UNITS*] [-v] [{-o|\--output} *[+]FIELD,...*]
178
| [\--filter]
179
| [node...]
180

    
181
Lists the nodes in the cluster.
182

    
183
The ``--no-headers`` option will skip the initial header line. The
184
``--separator`` option takes an argument which denotes what will be
185
used between the output fields. Both these options are to help
186
scripting.
187

    
188
The units used to display the numeric values in the output varies,
189
depending on the options given. By default, the values will be
190
formatted in the most appropriate unit. If the ``--separator``
191
option is given, then the values are shown in mebibytes to allow
192
parsing by scripts. In both cases, the ``--units`` option can be
193
used to enforce a given output unit.
194

    
195
Queries of nodes will be done in parallel with any running jobs. This might
196
give inconsistent results for the free disk/memory.
197

    
198
The ``-v`` option activates verbose mode, which changes the display of
199
special field states (see **ganeti**\(7)).
200

    
201
The ``-o (--output)`` option takes a comma-separated list of output
202
fields. The available fields and their meaning are:
203

    
204
@QUERY_FIELDS_NODE@
205

    
206
If the value of the option starts with the character ``+``, the new
207
fields will be added to the default list. This allows one to quickly
208
see the default list plus a few other fields, instead of retyping
209
the entire list of fields.
210

    
211
Note that some of these fields are known from the configuration of the
212
cluster (e.g. ``name``, ``pinst``, ``sinst``, ``pip``, ``sip``) and thus
213
the master does not need to contact the node for this data (making the
214
listing fast if only fields from this set are selected), whereas the
215
other fields are "live" fields and require a query to the cluster nodes.
216

    
217
Depending on the virtualization type and implementation details, the
218
``mtotal``, ``mnode`` and ``mfree`` fields may have slightly varying
219
meanings. For example, some solutions share the node memory with the
220
pool of memory used for instances (KVM), whereas others have separate
221
memory for the node and for the instances (Xen).
222

    
223
If exactly one argument is given and it appears to be a query filter
224
(see **ganeti**\(7)), the query result is filtered accordingly. For
225
ambiguous cases (e.g. a single field name as a filter) the ``--filter``
226
(``-F``) option forces the argument to be treated as a filter (e.g.
227
``gnt-node list -F master_candidate``).
228

    
229
If no node names are given, then all nodes are queried. Otherwise,
230
only the given nodes will be listed.
231

    
232

    
233
LIST-DRBD
234
~~~~~~~~~
235

    
236
**list-drbd** [\--no-headers] [\--separator=*SEPARATOR*] node
237

    
238
Lists the mapping of DRBD minors for a given node. This outputs a static
239
list of fields (it doesn't accept the ``--output`` option), as follows:
240

    
241
``Node``
242
  The (full) name of the node we are querying
243
``Minor``
244
  The DRBD minor
245
``Instance``
246
  The instance the DRBD minor belongs to
247
``Disk``
248
  The disk index that the DRBD minor belongs to
249
``Role``
250
  Either ``primary`` or ``secondary``, denoting the role of the node for
251
  the instance (note: this is not the live status of the DRBD device,
252
  but the configuration value)
253
``PeerNode``
254
  The node that the minor is connected to on the other end
255

    
256
This command can be used as a reverse lookup (from node and minor) to a
257
given instance, which can be useful when debugging DRBD issues.
258

    
259
Note that this command queries Ganeti via **ganeti-confd**\(8), so
260
it won't be available if support for ``confd`` has not been enabled at
261
build time; furthermore, in Ganeti 2.6 this is only available via the
262
Haskell version of confd (again selected at build time).
263

    
264
LIST-FIELDS
265
~~~~~~~~~~~
266

    
267
**list-fields** [field...]
268

    
269
Lists available fields for nodes.
270

    
271

    
272
MIGRATE
273
~~~~~~~
274

    
275
| **migrate** [-f] [\--non-live] [\--migration-mode=live\|non-live]
276
| [\--ignore-ipolicy] [\--submit] {*node*}
277

    
278
This command will migrate all instances having the given node as
279
primary to their secondary nodes. This works only for instances
280
having a drbd disk template.
281

    
282
As for the **gnt-instance migrate** command, the options
283
``--no-live``, ``--migration-mode`` and ``--no-runtime-changes``
284
can be given to influence the migration type.
285

    
286
If ``--ignore-ipolicy`` is given any instance policy violations
287
occurring during this operation are ignored.
288

    
289
See **ganeti**\(7) for a description of ``--submit`` and other common
290
options.
291

    
292
Example::
293

    
294
    # gnt-node migrate node1.example.com
295

    
296

    
297
MODIFY
298
~~~~~~
299

    
300
| **modify** [-f] [\--submit]
301
| [{-C|\--master-candidate} ``yes|no``]
302
| [{-D|\--drained} ``yes|no``] [{-O|\--offline} ``yes|no``]
303
| [\--master-capable=``yes|no``] [\--vm-capable=``yes|no``] [\--auto-promote]
304
| [{-s|\--secondary-ip} *secondary_ip*]
305
| [\--node-parameters *ndparams*]
306
| [\--node-powered=``yes|no``]
307
| [\--hypervisor-state *hvstate*]
308
| [\--disk-state *diskstate*]
309
| {*node*}
310

    
311
This command changes the role of the node. Each options takes
312
either a literal yes or no, and only one option should be given as
313
yes. The meaning of the roles and flags are described in the
314
manpage **ganeti**\(7).
315

    
316
The option ``--node-powered`` can be used to modify state-of-record if
317
it doesn't reflect the reality anymore.
318

    
319
In case a node is demoted from the master candidate role, the
320
operation will be refused unless you pass the ``--auto-promote``
321
option. This option will cause the operation to lock all cluster nodes
322
(thus it will not be able to run in parallel with most other jobs),
323
but it allows automated maintenance of the cluster candidate pool. If
324
locking all cluster node is too expensive, another option is to
325
promote manually another node to master candidate before demoting the
326
current one.
327

    
328
Example (setting a node offline, which will demote it from master
329
candidate role if is in that role)::
330

    
331
    # gnt-node modify --offline=yes node1.example.com
332

    
333
The ``-s (--secondary-ip)`` option can be used to change the node's
334
secondary ip. No drbd instances can be running on the node, while this
335
operation is taking place. Remember that the secondary ip must be
336
reachable from the master secondary ip, when being changed, so be sure
337
that the node has the new IP already configured and active. In order to
338
convert a cluster from single homed to multi-homed or vice versa
339
``--force`` is needed as well, and the target node for the first change
340
must be the master.
341

    
342
See **ganeti**\(7) for a description of ``--submit`` and other common
343
options.
344

    
345
Example (setting the node back to online and master candidate)::
346

    
347
    # gnt-node modify --offline=no --master-candidate=yes node1.example.com
348

    
349

    
350
REMOVE
351
~~~~~~
352

    
353
**remove** {*nodename*}
354

    
355
Removes a node from the cluster. Instances must be removed or
356
migrated to another cluster before.
357

    
358
Example::
359

    
360
    # gnt-node remove node5.example.com
361

    
362

    
363
VOLUMES
364
~~~~~~~
365

    
366
| **volumes** [\--no-headers] [\--human-readable]
367
| [\--separator=*SEPARATOR*] [{-o|\--output} *FIELDS*]
368
| [*node*...]
369

    
370
Lists all logical volumes and their physical disks from the node(s)
371
provided.
372

    
373
The ``--no-headers`` option will skip the initial header line. The
374
``--separator`` option takes an argument which denotes what will be
375
used between the output fields. Both these options are to help
376
scripting.
377

    
378
The units used to display the numeric values in the output varies,
379
depending on the options given. By default, the values will be
380
formatted in the most appropriate unit. If the ``--separator``
381
option is given, then the values are shown in mebibytes to allow
382
parsing by scripts. In both cases, the ``--units`` option can be
383
used to enforce a given output unit.
384

    
385
The ``-o (--output)`` option takes a comma-separated list of output
386
fields. The available fields and their meaning are:
387

    
388
node
389
    the node name on which the volume exists
390

    
391
phys
392
    the physical drive (on which the LVM physical volume lives)
393

    
394
vg
395
    the volume group name
396

    
397
name
398
    the logical volume name
399

    
400
size
401
    the logical volume size
402

    
403
instance
404
    The name of the instance to which this volume belongs, or (in case
405
    it's an orphan volume) the character "-"
406

    
407

    
408
Example::
409

    
410
    # gnt-node volumes node5.example.com
411
    Node              PhysDev   VG    Name                                 Size Instance
412
    node1.example.com /dev/hdc1 xenvg instance1.example.com-sda_11000.meta 128  instance1.example.com
413
    node1.example.com /dev/hdc1 xenvg instance1.example.com-sda_11001.data 256  instance1.example.com
414

    
415

    
416
LIST-STORAGE
417
~~~~~~~~~~~~
418

    
419
| **list-storage** [\--no-headers] [\--human-readable]
420
| [\--separator=*SEPARATOR*] [\--storage-type=*STORAGE\_TYPE*]
421
| [{-o|\--output} *FIELDS*]
422
| [*node*...]
423

    
424
Lists the available storage units and their details for the given
425
node(s).
426

    
427
The ``--no-headers`` option will skip the initial header line. The
428
``--separator`` option takes an argument which denotes what will be
429
used between the output fields. Both these options are to help
430
scripting.
431

    
432
The units used to display the numeric values in the output varies,
433
depending on the options given. By default, the values will be
434
formatted in the most appropriate unit. If the ``--separator``
435
option is given, then the values are shown in mebibytes to allow
436
parsing by scripts. In both cases, the ``--units`` option can be
437
used to enforce a given output unit.
438

    
439
The ``--storage-type`` option can be used to choose a storage unit
440
type. Possible choices are lvm-pv, lvm-vg or file.
441

    
442
The ``-o (--output)`` option takes a comma-separated list of output
443
fields. The available fields and their meaning are:
444

    
445
node
446
    the node name on which the volume exists
447

    
448
type
449
    the type of the storage unit (currently just what is passed in via
450
    ``--storage-type``)
451

    
452
name
453
    the path/identifier of the storage unit
454

    
455
size
456
    total size of the unit; for the file type see a note below
457

    
458
used
459
    used space in the unit; for the file type see a note below
460

    
461
free
462
    available disk space
463

    
464
allocatable
465
    whether we the unit is available for allocation (only lvm-pv can
466
    change this setting, the other types always report true)
467

    
468

    
469
Note that for the "file" type, the total disk space might not equal
470
to the sum of used and free, due to the method Ganeti uses to
471
compute each of them. The total and free values are computed as the
472
total and free space values for the filesystem to which the
473
directory belongs, but the used space is computed from the used
474
space under that directory *only*, which might not be necessarily
475
the root of the filesystem, and as such there could be files
476
outside the file storage directory using disk space and causing a
477
mismatch in the values.
478

    
479
Example::
480

    
481
    node1# gnt-node list-storage node2
482
    Node  Type   Name        Size Used   Free Allocatable
483
    node2 lvm-pv /dev/sda7 673.8G 1.5G 672.3G Y
484
    node2 lvm-pv /dev/sdb1 698.6G   0M 698.6G Y
485

    
486

    
487
MODIFY-STORAGE
488
~~~~~~~~~~~~~~
489

    
490
| **modify-storage** [\--allocatable={yes|no}] [\--submit]
491
| {*node*} {*storage-type*} {*volume-name*}
492

    
493
Modifies storage volumes on a node. Only LVM physical volumes can
494
be modified at the moment. They have a storage type of "lvm-pv".
495

    
496
Example::
497

    
498
    # gnt-node modify-storage --allocatable no node5.example.com lvm-pv /dev/sdb1
499

    
500

    
501
REPAIR-STORAGE
502
~~~~~~~~~~~~~~
503

    
504
| **repair-storage** [\--ignore-consistency] ]\--submit]
505
| {*node*} {*storage-type*} {*volume-name*}
506

    
507
Repairs a storage volume on a node. Only LVM volume groups can be
508
repaired at this time. They have the storage type "lvm-vg".
509

    
510
On LVM volume groups, **repair-storage** runs ``vgreduce
511
--removemissing``.
512

    
513

    
514

    
515
**Caution:** Running this command can lead to data loss. Use it with
516
care.
517

    
518
The ``--ignore-consistency`` option will ignore any inconsistent
519
disks (on the nodes paired with this one). Use of this option is
520
most likely to lead to data-loss.
521

    
522
Example::
523

    
524
    # gnt-node repair-storage node5.example.com lvm-vg xenvg
525

    
526

    
527
POWERCYCLE
528
~~~~~~~~~~
529

    
530
**powercycle** [\--yes] [\--force] [\--submit] {*node*}
531

    
532
This command (tries to) forcefully reboot a node. It is a command
533
that can be used if the node environment is broken, such that the
534
admin can no longer login over SSH, but the Ganeti node daemon is
535
still working.
536

    
537
Note that this command is not guaranteed to work; it depends on the
538
hypervisor how effective is the reboot attempt. For Linux, this
539
command requires the kernel option ``CONFIG_MAGIC_SYSRQ`` to be
540
enabled.
541

    
542
The ``--yes`` option can be used to skip confirmation, while the
543
``--force`` option is needed if the target node is the master
544
node.
545

    
546
See **ganeti**\(7) for a description of ``--submit`` and other common
547
options.
548

    
549
POWER
550
~~~~~
551

    
552
**power** [``--force``] [``--ignore-status``] [``--all``]
553
[``--power-delay``] on|off|cycle|status [*nodes*]
554

    
555
This command calls out to out-of-band management to change the power
556
state of given node. With ``status`` you get the power status as reported
557
by the out-of-band management script.
558

    
559
Note that this command will only work if the out-of-band functionality
560
is configured and enabled on the cluster. If this is not the case,
561
please use the **powercycle** command above.
562

    
563
Using ``--force`` you skip the confirmation to do the operation.
564
Currently this only has effect on ``off`` and ``cycle``. On those two
565
you can *not* operate on the master. However, the command will provide
566
you with the command to invoke to operate on the master nerver-mind.
567
This is considered harmful and Ganeti does not support the use of it.
568

    
569
Providing ``--ignore-status`` will ignore the offline=N state of a node
570
and continue with power off.
571

    
572
``--power-delay`` specifies the time in seconds (factions allowed)
573
waited between powering on the next node. This is by default 2 seconds
574
but can increased if needed with this option.
575

    
576
*nodes* are optional. If not provided it will call out for every node in
577
the cluster. Except for the ``off`` and ``cycle`` command where you've
578
to explicit use ``--all`` to select all.
579

    
580

    
581
HEALTH
582
~~~~~~
583

    
584
**health** [*nodes*]
585

    
586
This command calls out to out-of-band management to ask for the health status
587
of all or given nodes. The health contains the node name and then the items
588
element with their status in a ``item=status`` manner. Where ``item`` is script
589
specific and ``status`` can be one of ``OK``, ``WARNING``, ``CRITICAL`` or
590
``UNKNOWN``. Items with status ``WARNING`` or ``CRITICAL`` are logged and
591
annotated in the command line output.
592

    
593

    
594
RESTRICTED-COMMAND
595
~~~~~~~~~~~~~~~~~~
596

    
597
| **restricted-command** [-M] [\--sync]
598
| { -g *group* *command* | *command* *nodes*... }
599

    
600
Executes a restricted command on the specified nodes. Restricted commands are
601
not arbitrary, but must reside in
602
``@SYSCONFDIR@/ganeti/restricted-commands`` on a node, either as a regular
603
file or as a symlink. The directory must be owned by root and not be
604
world- or group-writable. If a command fails verification or otherwise
605
fails to start, the node daemon log must be consulted for more detailed
606
information.
607

    
608
Example for running a command on two nodes::
609

    
610
    # gnt-node restricted-command mycommand \
611
      node1.example.com node2.example.com
612

    
613
The ``-g`` option can be used to run a command only on a specific node
614
group, e.g.::
615

    
616
    # gnt-node restricted-command -g default mycommand
617

    
618
The ``-M`` option can be used to prepend the node name to all command
619
output lines. ``--sync`` forces the opcode to acquire the node lock(s)
620
in exclusive mode.
621

    
622
Tags
623
~~~~
624

    
625
ADD-TAGS
626
^^^^^^^^
627

    
628
**add-tags** [\--from *file*] {*nodename*} {*tag*...}
629

    
630
Add tags to the given node. If any of the tags contains invalid
631
characters, the entire operation will abort.
632

    
633
If the ``--from`` option is given, the list of tags will be
634
extended with the contents of that file (each line becomes a tag).
635
In this case, there is not need to pass tags on the command line
636
(if you do, both sources will be used). A file name of - will be
637
interpreted as stdin.
638

    
639
LIST-TAGS
640
^^^^^^^^^
641

    
642
**list-tags** {*nodename*}
643

    
644
List the tags of the given node.
645

    
646
REMOVE-TAGS
647
^^^^^^^^^^^
648

    
649
**remove-tags** [\--from *file*] {*nodename*} {*tag*...}
650

    
651
Remove tags from the given node. If any of the tags are not
652
existing on the node, the entire operation will abort.
653

    
654
If the ``--from`` option is given, the list of tags to be removed will
655
be extended with the contents of that file (each line becomes a tag).
656
In this case, there is not need to pass tags on the command line (if
657
you do, tags from both sources will be removed). A file name of - will
658
be interpreted as stdin.
659

    
660
.. vim: set textwidth=72 :
661
.. Local Variables:
662
.. mode: rst
663
.. fill-column: 72
664
.. End: