56 |
56 |
|
57 |
57 |
In all modes, the groups' ``alloc_policy`` attribute will be honored.
|
58 |
58 |
|
|
59 |
.. _multi-reloc-result:
|
|
60 |
|
59 |
61 |
Result
|
60 |
62 |
------
|
61 |
63 |
|
62 |
64 |
In all storage models, an inter-group move can be modeled as a sequence
|
63 |
|
of **replace secondary** and **failover** operations (when shared
|
64 |
|
storage is used, they will all be failover operations within the
|
65 |
|
corresponding mobility domain). This will be represented as a list of
|
66 |
|
``(instance, [operations])`` pairs.
|
67 |
|
|
68 |
|
For replace secondary operations, a new secondary node must be
|
69 |
|
specified. For failover operations, a node *may* be specified when
|
70 |
|
necessary, e.g. when shared storage is in use and there's no designated
|
71 |
|
secondary for the instance.
|
|
65 |
of **replace secondary**, **migration** and **failover** operations
|
|
66 |
(when shared storage is used, they will all be failover or migration
|
|
67 |
operations within the corresponding mobility domain).
|
|
68 |
|
|
69 |
The result is expected to be a list of jobsets. Each jobset contains
|
|
70 |
lists of serialized opcodes. Example::
|
|
71 |
|
|
72 |
[
|
|
73 |
[
|
|
74 |
{ "OP_ID": "OP_INSTANCE_MIGRATE",
|
|
75 |
"instance_name": "inst1.example.com",
|
|
76 |
},
|
|
77 |
{ "OP_ID": "OP_INSTANCE_MIGRATE",
|
|
78 |
"instance_name": "inst2.example.com",
|
|
79 |
},
|
|
80 |
],
|
|
81 |
[
|
|
82 |
{ "OP_ID": "OP_INSTANCE_REPLACE_DISKS",
|
|
83 |
"instance_name": "inst2.example.com",
|
|
84 |
"mode": "replace_new_secondary",
|
|
85 |
"remote_node": "node4.example.com"
|
|
86 |
},
|
|
87 |
],
|
|
88 |
[
|
|
89 |
{ "OP_ID": "OP_INSTANCE_FAILOVER",
|
|
90 |
"instance_name": "inst8.example.com",
|
|
91 |
},
|
|
92 |
]
|
|
93 |
]
|
|
94 |
|
|
95 |
Accepted opcodes:
|
|
96 |
|
|
97 |
- ``OP_INSTANCE_FAILOVER``
|
|
98 |
- ``OP_INSTANCE_MIGRATE``
|
|
99 |
- ``OP_INSTANCE_REPLACE_DISKS``
|
|
100 |
|
|
101 |
Starting with the first set, Ganeti will submit all jobs of a set at the
|
|
102 |
same time, enabling execution in parallel. Upon completion of all jobs
|
|
103 |
in a set, the process is repeated for the next one. Ganeti is at liberty
|
|
104 |
to abort the execution of the relocation after any jobset. In such a
|
|
105 |
case the user is notified and can restart the relocation.
|
72 |
106 |
|
73 |
107 |
.. vim: set textwidth=72 :
|
74 |
108 |
.. Local Variables:
|