Newer
Older
Version 2.7.0 rc2
-----------------
*(unreleased)*
Incompatible/important changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Instance policies for disk size were documented to be on a per-disk
basis, but hail applied them to the sum of all disks. This has been
fixed.
- ``hbal`` will now exit with status 0 if, during job execution over
LUXI, early exit has been requested and all jobs are successful;
before, exit status 1 was used, which cannot be differentiated from
"job error" case
- Compatibility with newer versions of rbd has been fixed
- ``gnt-instance batch-create`` has been changed to use the bulk create
opcode from Ganeti. This lead to incompatible changes in the format of
the JSON file. It's now not a custom dict anymore but a dict
compatible with the ``OpInstanceCreate`` opcode.
- Parent directories for file storage need to be listed in
``$sysconfdir/ganeti/file-storage-paths`` now. ``cfgupgrade`` will
write the file automatically based on old configuration values, but it
can not distribute it across all nodes and the file contents should be
verified. Use ``gnt-cluster copyfile
$sysconfdir/ganeti/file-storage-paths`` once the cluster has been
upgraded. The reason for requiring this list of paths now is that
before it would have been possible to inject new paths via RPC,
allowing files to be created in arbitrary locations. The RPC protocol
is protected using SSL/X.509 certificates, but as a design principle
Ganeti does not permit arbitrary paths to be passed.
- The parsing of the variants file for OSes (see
:manpage:`ganeti-os-interface(7)`) has been slightly changed: now empty
lines and comment lines (starting with ``#``) are ignored for better
readability.
- The ``setup-ssh`` tool added in Ganeti 2.2 has been replaced and is no
longer available. ``gnt-node add`` now invokes a new tool on the
destination node, named ``prepare-node-join``, to configure the SSH
daemon. Paramiko is no longer necessary to configure nodes' SSH
daemons via ``gnt-node add``.
- Draining (``gnt-cluster queue drain``) and un-draining the job queue
(``gnt-cluster queue undrain``) now affects all nodes in a cluster and
the flag is not reset after a master failover.
- Python 2.4 has *not* been tested with this release. Using 2.6 or above
is recommended. 2.6 will be mandatory from the 2.8 series.
New features
~~~~~~~~~~~~
- New network management functionality to support automatic allocation
of IP addresses and managing of network parameters. See
:manpage:`gnt-network(8)` for more details.
- New external storage backend, to allow managing arbitrary storage
systems external to the cluster. See
:manpage:`ganeti-extstorage-interface(7)`.
- New ``exclusive-storage`` node parameter added, restricted to
nodegroup level. When it's set to true, physical disks are assigned in
an exclusive fashion to instances, as documented in :doc:`Partitioned
Ganeti <design-partitioned>`. Currently, only instances using the
``plain`` disk template are supported.
- The KVM hypervisor has been updated with many new hypervisor
parameters, including a generic one for passing arbitrary command line
values. See a complete list in :manpage:`gnt-instance(8)`. It is now
compatible up to qemu 1.4.
- A new tool, called ``mon-collector``, is the stand-alone executor of
the data collectors for a monitoring system. As of this version, it
just includes the DRBD data collector, that can be executed by calling
``mon-collector`` using the ``drbd`` parameter. See
:manpage:`mon-collector(7)`.
- A new user option, :pyeval:`rapi.RAPI_ACCESS_READ`, has been added
for RAPI users. It allows granting permissions to query for
information to a specific user without giving
:pyeval:`rapi.RAPI_ACCESS_WRITE` permissions.
- A new tool named ``node-cleanup`` has been added. It cleans remains of
a cluster from a machine by stopping all daemons, removing
certificates and ssconf files. Unless the ``--no-backup`` option is
given, copies of the certificates are made.
- Instance creations now support the use of opportunistic locking,
potentially speeding up the (parallel) creation of multiple instances.
This feature is currently only available via the :doc:`RAPI
<rapi>` interface and when an instance allocator is used. If the
``opportunistic_locking`` parameter is set the opcode will try to
acquire as many locks as possible, but will not wait for any locks
held by other opcodes. If not enough resources can be found to
allocate the instance, the temporary error code
:pyeval:`errors.ECODE_TEMP_NORES` is returned. The operation can be
retried thereafter, with or without opportunistic locking.
- New experimental linux-ha resource scripts.
- Restricted-commands support: ganeti can now be asked (via command line
or rapi) to perform commands on a node. These are passed via ganeti
RPC rather than ssh. This functionality is restricted to commands
specified on the ``$sysconfdir/ganeti/restricted-commands`` for security
reasons. The file is not copied automatically.
Misc changes
~~~~~~~~~~~~
- Diskless instances are now externally mirrored (Issue 237). This for
now has only been tested in conjunction with explicit target nodes for
migration/failover.
- Queries not needing locks or RPC access to the node can now be
performed by the confd daemon, making them independent from jobs, and
thus faster to execute. This is selectable at configure time.
- The functionality for allocating multiple instances at once has been
overhauled and is now also available through :doc:`RAPI <rapi>`.
Since rc1:
- ``devel/upload`` now works when ``/var/run`` on the target nodes is a
symlink.
- Disks added through ``gnt-instance modify`` or created through
``gnt-instance recreate-disks`` are wiped, if the
``prealloc_wipe_disks`` flag is set.
- If wiping newly created disks fails, the disks are removed. Also,
partial failures in creating disks through ``gnt-instance modify``
triggers a cleanup of the partially-created disks.
- Removing the master IP address doesn't fail if the address has been
already removed.
- Fix ownership of the OS log dir
- Workaround missing SO_PEERCRED constant (Issue 191)
Version 2.7.0 rc1
-----------------
*(Released Fri, 3 May 2013)*
This was the first release candidate of the 2.7 series. Since beta3:
- Fix kvm compatibility with qemu 1.4 (Issue 389)
- Documentation updates (admin guide, upgrade notes, install
instructions) (Issue 372)
- Fix gnt-group list nodes and instances count (Issue 436)
- Fix compilation without non-mandatory libraries (Issue 441)
- Fix xen-hvm hypervisor forcing nics to type 'ioemu' (Issue 247)
- Make confd logging more verbose at INFO level (Issue 435)
- Improve "networks" documentation in :manpage:`gnt-instance(8)`
- Fix failure path for instance storage type conversion (Issue 229)
- Update htools text backend documentation
- Improve the renew-crypto section of :manpage:`gnt-cluster(8)`
- Disable inter-cluster instance move for file-based instances, because
it is dependant on instance export, which is not supported for
file-based instances. (Issue 414)
- Fix gnt-job crashes on non-ascii characters (Issue 427)
- Fix volume group checks on non-vm-capable nodes (Issue 432)
Version 2.7.0 beta3
-------------------
*(Released Mon, 22 Apr 2013)*
This was the third beta release of the 2.7 series. Since beta2:
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
- Fix hail to verify disk instance policies on a per-disk basis (Issue 418).
- Fix data loss on wrong usage of ``gnt-instance move``
- Properly export errors in confd-based job queries
- Add ``users-setup`` tool
- Fix iallocator protocol to report 0 as a disk size for diskless
instances. This avoids hail breaking when a diskless instance is
present.
- Fix job queue directory permission problem that made confd job queries
fail. This requires running an ``ensure-dirs --full-run`` on upgrade
for access to archived jobs (Issue 406).
- Limit the sizes of networks supported by ``gnt-network`` to something
between a ``/16`` and a ``/30`` to prevent memory bloat and crashes.
- Fix bugs in instance disk template conversion
- Fix GHC 7 compatibility
- Fix ``burnin`` install path (Issue 426).
- Allow very small disk grows (Issue 347).
- Fix a ``ganeti-noded`` memory bloat introduced in 2.5, by making sure
that noded doesn't import masterd code (Issue 419).
- Make sure the default metavg at cluster init is the same as the vg, if
unspecified (Issue 358).
- Fix cleanup of partially created disks (part of Issue 416)
Version 2.7.0 beta2
-------------------
*(Released Tue, 2 Apr 2013)*
This was the second beta release of the 2.7 series. Since beta1:
- Networks no longer have a "type" slot, since this information was
unused in Ganeti: instead of it tags should be used.
- The rapi client now has a ``target_node`` option to MigrateInstance.
- Fix early exit return code for hbal (Issue 386).
- Fix ``gnt-instance migrate/failover -n`` (Issue 396).
- Fix ``rbd showmapped`` output parsing (Issue 312).
- Networks are now referenced indexed by UUID, rather than name. This
will require running cfgupgrade, from 2.7.0beta1, if networks are in
use.
- The OS environment now includes network information.
- Deleting of a network is now disallowed if any instance nic is using
it, to prevent dangling references.
- External storage is now documented in man pages.
- The exclusive_storage flag can now only be set at nodegroup level.
- Hbal can now submit an explicit priority with its jobs.
- Many network related locking fixes.
- Bump up the required pylint version to 0.25.1.
- Fix the ``no_remember`` option in RAPI client.
- Many ipolicy related tests, qa, and fixes.
- Many documentation improvements and fixes.
- Fix building with ``--disable-file-storage``.
- Fix ``-q`` option in htools, which was broken if passed more than
once.
- Some haskell/python interaction improvements and fixes.
- Fix iallocator in case of missing LVM storage.
- Fix confd config load in case of ``--no-lvm-storage``.
- The confd/query functionality is now mentioned in the security
documentation.
Version 2.7.0 beta1
-------------------
*(Released Wed, 6 Feb 2013)*
This was the first beta release of the 2.7 series. All important changes
are listed in the latest 2.7 entry.
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
*(Released Fri, 21 Dec 2012)*
Important behaviour change: hbal won't rebalance anymore instances which
have the ``auto_balance`` attribute set to false. This was the intention
all along, but until now it only skipped those from the N+1 memory
reservation (DRBD-specific).
A significant number of bug fixes in this release:
- Fixed disk adoption interaction with ipolicy checks.
- Fixed networking issues when instances are started, stopped or
migrated, by forcing the tap device's MAC prefix to "fe" (issue 217).
- Fixed the warning in cluster verify for shared storage instances not
being redundant.
- Fixed removal of storage directory on shared file storage (issue 262).
- Fixed validation of LVM volume group name in OpClusterSetParams
(``gnt-cluster modify``) (issue 285).
- Fixed runtime memory increases (``gnt-instance modify -m``).
- Fixed live migration under Xen's ``xl`` mode.
- Fixed ``gnt-instance console`` with ``xl``.
- Fixed building with newer Haskell compiler/libraries.
- Fixed PID file writing in Haskell daemons (confd); this prevents
restart issues if confd was launched manually (outside of
``daemon-util``) while another copy of it was running
- Fixed a type error when doing live migrations with KVM (issue 297) and
the error messages for failing migrations have been improved.
- Fixed opcode validation for the out-of-band commands (``gnt-node
power``).
- Fixed a type error when unsetting OS hypervisor parameters (issue
311); now it's possible to unset all OS-specific hypervisor
parameters.
- Fixed the ``dry-run`` mode for many operations: verification of
results was over-zealous but didn't take into account the ``dry-run``
operation, resulting in "wrong" failures.
- Fixed bash completion in ``gnt-job list`` when the job queue has
hundreds of entries; especially with older ``bash`` versions, this
results in significant CPU usage.
And lastly, a few other improvements have been made:
- Added option to force master-failover without voting (issue 282).
- Clarified error message on lock conflict (issue 287).
- Logging of newly submitted jobs has been improved (issue 290).
- Hostname checks have been made uniform between instance rename and
create (issue 291).
- The ``--submit`` option is now supported by ``gnt-debug delay``.
- Shutting down the master daemon by sending SIGTERM now stops it from
processing jobs waiting for locks; instead, those jobs will be started
once again after the master daemon is started the next time (issue
296).
- Support for Xen's ``xl`` program has been improved (besides the fixes
above).
- Reduced logging noise in the Haskell confd daemon (only show one log
entry for each config reload, instead of two).
- Several man page updates and typo fixes.
Version 2.6.1
-------------
*(Released Fri, 12 Oct 2012)*
A small bugfix release. Among the bugs fixed:
- Fixed double use of ``PRIORITY_OPT`` in ``gnt-node migrate``, that
made the command unusable.
- Commands that issue many jobs don't fail anymore just because some jobs
take so long that other jobs are archived.
- Failures during ``gnt-instance reinstall`` are reflected by the exit
status.
- Issue 190 fixed. Check for DRBD in cluster verify is enabled only when
DRBD is enabled.
- When ``always_failover`` is set, ``--allow-failover`` is not required
in migrate commands anymore.
- ``bash_completion`` works even if extglob is disabled.
- Fixed bug with locks that made failover for RDB-based instances fail.
- Fixed bug in non-mirrored instance allocation that made Ganeti choose
a random node instead of one based on the allocator metric.
- Support for newer versions of pylint and pep8.
- Hail doesn't fail anymore when trying to add an instance of type
``file``, ``sharedfile`` or ``rbd``.
- Added new Makefile target to rebuild the whole distribution, so that
all files are included.
Version 2.6.0
-------------
*(Released Fri, 27 Jul 2012)*
.. attention:: The ``LUXI`` protocol has been made more consistent
regarding its handling of command arguments. This, however, leads to
incompatibility issues with previous versions. Please ensure that you
restart Ganeti daemons soon after the upgrade, otherwise most
``LUXI`` calls (job submission, setting/resetting the drain flag,
pausing/resuming the watcher, cancelling and archiving jobs, querying
the cluster configuration) will fail.
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
New features
~~~~~~~~~~~~
Instance run status
+++++++++++++++++++
The current ``admin_up`` field, which used to denote whether an instance
should be running or not, has been removed. Instead, ``admin_state`` is
introduced, with 3 possible values -- ``up``, ``down`` and ``offline``.
The rational behind this is that an instance being “down” can have
different meanings:
- it could be down during a reboot
- it could be temporarily be down for a reinstall
- or it could be down because it is deprecated and kept just for its
disk
The previous Boolean state was making it difficult to do capacity
calculations: should Ganeti reserve memory for a down instance? Now, the
tri-state field makes it clear:
- in ``up`` and ``down`` state, all resources are reserved for the
instance, and it can be at any time brought up if it is down
- in ``offline`` state, only disk space is reserved for it, but not
memory or CPUs
The field can have an extra use: since the transition between ``up`` and
``down`` and vice-versus is done via ``gnt-instance start/stop``, but
transition between ``offline`` and ``down`` is done via ``gnt-instance
modify``, it is possible to given different rights to users. For
example, owners of an instance could be allowed to start/stop it, but
not transition it out of the offline state.
Instance policies and specs
+++++++++++++++++++++++++++
In previous Ganeti versions, an instance creation request was not
limited on the minimum size and on the maximum size just by the cluster
resources. As such, any policy could be implemented only in third-party
clients (RAPI clients, or shell wrappers over ``gnt-*``
tools). Furthermore, calculating cluster capacity via ``hspace`` again
required external input with regards to instance sizes.
In order to improve these workflows and to allow for example better
per-node group differentiation, we introduced instance specs, which
allow declaring:
- minimum instance disk size, disk count, memory size, cpu count
- maximum values for the above metrics
- and “standard” values (used in ``hspace`` to calculate the standard
sized instances)
The minimum/maximum values can be also customised at node-group level,
for example allowing more powerful hardware to support bigger instance
memory sizes.
Beside the instance specs, there are a few other settings belonging to
the instance policy framework. It is possible now to customise, per
cluster and node-group:
- the list of allowed disk templates
- the maximum ratio of VCPUs per PCPUs (to control CPU oversubscription)
- the maximum ratio of instance to spindles (see below for more
information) for local storage
All these together should allow all tools that talk to Ganeti to know
what are the ranges of allowed values for instances and the
over-subscription that is allowed.
For the VCPU/PCPU ratio, we already have the VCPU configuration from the
instance configuration, and the physical CPU configuration from the
node. For the spindle ratios however, we didn't track before these
values, so new parameters have been added:
- a new node parameter ``spindle_count``, defaults to 1, customisable at
node group or node level
- at new backend parameter (for instances), ``spindle_use`` defaults to 1
Note that spindles in this context doesn't need to mean actual
mechanical hard-drives; it's just a relative number for both the node
I/O capacity and instance I/O consumption.
Instance migration behaviour
++++++++++++++++++++++++++++
While live-migration is in general desirable over failover, it is
possible that for some workloads it is actually worse, due to the
variable time of the “suspend” phase during live migration.
To allow the tools to work consistently over such instances (without
having to hard-code instance names), a new backend parameter
``always_failover`` has been added to control the migration/failover
behaviour. When set to True, all migration requests for an instance will
instead fall-back to failover.
Instance memory ballooning
++++++++++++++++++++++++++
Initial support for memory ballooning has been added. The memory for an
instance is no longer fixed (backend parameter ``memory``), but instead
can vary between minimum and maximum values (backend parameters
``minmem`` and ``maxmem``). Currently we only change an instance's
memory when:
- live migrating or failing over and instance and the target node
doesn't have enough memory
- user requests changing the memory via ``gnt-instance modify
--runtime-memory``
Instance CPU pinning
++++++++++++++++++++
In order to control the use of specific CPUs by instance, support for
controlling CPU pinning has been added for the Xen, HVM and LXC
hypervisors. This is controlled by a new hypervisor parameter
``cpu_mask``; details about possible values for this are in the
:manpage:`gnt-instance(8)`. Note that use of the most specific (precise
VCPU-to-CPU mapping) form will work well only when all nodes in your
cluster have the same amount of CPUs.
Disk parameters
+++++++++++++++
Another area in which Ganeti was not customisable were the parameters
used for storage configuration, e.g. how many stripes to use for LVM,
DRBD resync configuration, etc.
To improve this area, we've added disks parameters, which are
customisable at cluster and node group level, and which allow to
specify various parameters for disks (DRBD has the most parameters
currently), for example:
- DRBD resync algorithm and parameters (e.g. speed)
- the default VG for meta-data volumes for DRBD
- number of stripes for LVM (plain disk template)
- the RBD pool
These parameters can be modified via ``gnt-cluster modify -D …`` and
``gnt-group modify -D …``, and are used at either instance creation (in
case of LVM stripes, for example) or at disk “activation” time
(e.g. resync speed).
Rados block device support
++++++++++++++++++++++++++
A Rados (http://ceph.com/wiki/Rbd) storage backend has been added,
denoted by the ``rbd`` disk template type. This is considered
experimental, feedback is welcome. For details on configuring it, see
the :doc:`install` document and the :manpage:`gnt-cluster(8)` man page.
Master IP setup
+++++++++++++++
The existing master IP functionality works well only in simple setups (a
single network shared by all nodes); however, if nodes belong to
different networks, then the ``/32`` setup and lack of routing
information is not enough.
To allow the master IP to function well in more complex cases, the
system was reworked as follows:
- a master IP netmask setting has been added
- the master IP activation/turn-down code was moved from the node daemon
to a separate script
- whether to run the Ganeti-supplied master IP script or a user-supplied
on is a ``gnt-cluster init`` setting
Details about the location of the standard and custom setup scripts are
in the man page :manpage:`gnt-cluster(8)`; for information about the
setup script protocol, look at the Ganeti-supplied script.
SPICE support
+++++++++++++
The `SPICE <http://www.linux-kvm.org/page/SPICE>`_ support has been
improved.
It is now possible to use TLS-protected connections, and when renewing
or changing the cluster certificates (via ``gnt-cluster renew-crypto``,
it is now possible to specify spice or spice CA certificates. Also, it
is possible to configure a password for SPICE sessions via the
hypervisor parameter ``spice_password_file``.
There are also new parameters to control the compression and streaming
options (e.g. ``spice_image_compression``, ``spice_streaming_video``,
etc.). For details, see the man page :manpage:`gnt-instance(8)` and look
for the spice parameters.
Lastly, it is now possible to see the SPICE connection information via
``gnt-instance console``.
OVF converter
+++++++++++++
A new tool (``tools/ovfconverter``) has been added that supports
conversion between Ganeti and the `Open Virtualization Format
<http://en.wikipedia.org/wiki/Open_Virtualization_Format>`_ (both to and
from).
This relies on the ``qemu-img`` tool to convert the disk formats, so the
actual compatibility with other virtualization solutions depends on it.
Confd daemon changes
++++++++++++++++++++
The configuration query daemon (``ganeti-confd``) is now optional, and
has been rewritten in Haskell; whether to use the daemon at all, use the
Python (default) or the Haskell version is selectable at configure time
via the ``--enable-confd`` parameter, which can take one of the
``haskell``, ``python`` or ``no`` values. If not used, disabling the
daemon will result in a smaller footprint; for larger systems, we
welcome feedback on the Haskell version which might become the default
in future versions.
If you want to use ``gnt-node list-drbd`` you need to have the Haskell
daemon running. The Python version doesn't implement the new call.
User interface changes
~~~~~~~~~~~~~~~~~~~~~~
We have replaced the ``--disks`` option of ``gnt-instance
replace-disks`` with a more flexible ``--disk`` option, which allows
adding and removing disks at arbitrary indices (Issue 188). Furthermore,
disk size and mode can be changed upon recreation (via ``gnt-instance
recreate-disks``, which accepts the same ``--disk`` option).
As many people are used to a ``show`` command, we have added that as an
alias to ``info`` on all ``gnt-*`` commands.
The ``gnt-instance grow-disk`` command has a new mode in which it can
accept the target size of the disk, instead of the delta; this can be
more safe since two runs in absolute mode will be idempotent, and
sometimes it's also easier to specify the desired size directly.
Also the handling of instances with regard to offline secondaries has
been improved. Instance operations should not fail because one of it's
secondary nodes is offline, even though it's safe to proceed.
A new command ``list-drbd`` has been added to the ``gnt-node`` script to
support debugging of DRBD issues on nodes. It provides a mapping of DRBD
minors to instance name.
API changes
~~~~~~~~~~~
RAPI coverage has improved, with (for example) new resources for
recreate-disks, node power-cycle, etc.
Compatibility
~~~~~~~~~~~~~
There is partial support for ``xl`` in the Xen hypervisor; feedback is
welcome.
Python 2.7 is better supported, and after Ganeti 2.6 we will investigate
whether to still support Python 2.4 or move to Python 2.6 as minimum
required version.
Support for Fedora has been slightly improved; the provided example
init.d script should work better on it and the INSTALL file should
document the needed dependencies.
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
Internal changes
~~~~~~~~~~~~~~~~
The deprecated ``QueryLocks`` LUXI request has been removed. Use
``Query(what=QR_LOCK, ...)`` instead.
The LUXI requests :pyeval:`luxi.REQ_QUERY_JOBS`,
:pyeval:`luxi.REQ_QUERY_INSTANCES`, :pyeval:`luxi.REQ_QUERY_NODES`,
:pyeval:`luxi.REQ_QUERY_GROUPS`, :pyeval:`luxi.REQ_QUERY_EXPORTS` and
:pyeval:`luxi.REQ_QUERY_TAGS` are deprecated and will be removed in a
future version. :pyeval:`luxi.REQ_QUERY` should be used instead.
RAPI client: ``CertificateError`` now derives from
``GanetiApiError``. This should make it more easy to handle Ganeti
errors.
Deprecation warnings due to PyCrypto/paramiko import in
``tools/setup-ssh`` have been silenced, as usually they are safe; please
make sure to run an up-to-date paramiko version, if you use this tool.
The QA scripts now depend on Python 2.5 or above (the main code base
still works with Python 2.4).
The configuration file (``config.data``) is now written without
indentation for performance reasons; if you want to edit it, it can be
re-formatted via ``tools/fmtjson``.
A number of bugs has been fixed in the cluster merge tool.
``x509`` certification verification (used in import-export) has been
changed to allow the same clock skew as permitted by the cluster
verification. This will remove some rare but hard to diagnose errors in
import-export.
Version 2.6.0 rc4
-----------------
*(Released Thu, 19 Jul 2012)*
Very few changes from rc4 to the final release, only bugfixes:
- integrated fixes from release 2.5.2 (fix general boot flag for KVM
instance, fix CDROM booting for KVM instances)
- fixed node group modification of node parameters
- fixed issue in LUClusterVerifyGroup with multi-group clusters
- fixed generation of bash completion to ensure a stable ordering
- fixed a few typos
Version 2.6.0 rc3
-----------------
*(Released Fri, 13 Jul 2012)*
Third release candidate for 2.6. The following changes were done from
rc3 to rc4:
- Fixed ``UpgradeConfig`` w.r.t. to disk parameters on disk objects.
- Fixed an inconsistency in the LUXI protocol with the provided
arguments (NOT backwards compatible)
- Fixed a bug with node groups ipolicy where ``min`` was greater than
the cluster ``std`` value
- Implemented a new ``gnt-node list-drbd`` call to list DRBD minors for
easier instance debugging on nodes (requires ``hconfd`` to work)
Version 2.6.0 rc2
-----------------
*(Released Tue, 03 Jul 2012)*
Second release candidate for 2.6. The following changes were done from
rc2 to rc3:
- Fixed ``gnt-cluster verify`` regarding ``master-ip-script`` on non
master candidates
- Fixed a RAPI regression on missing beparams/memory
- Fixed redistribution of files on offline nodes
- Added possibility to run activate-disks even though secondaries are
offline. With this change it relaxes also the strictness on some other
commands which use activate disks internally:
* ``gnt-instance start|reboot|rename|backup|export``
- Made it possible to remove safely an instance if its secondaries are
offline
- Made it possible to reinstall even though secondaries are offline
Version 2.6.0 rc1
-----------------
*(Released Mon, 25 Jun 2012)*
First release candidate for 2.6. The following changes were done from
rc1 to rc2:
- Fixed bugs with disk parameters and ``rbd`` templates as well as
``instance_os_add``
- Made ``gnt-instance modify`` more consistent regarding new NIC/Disk
behaviour. It supports now the modify operation
- ``hcheck`` implemented to analyze cluster health and possibility of
improving health by rebalance
- ``hbal`` has been improved in dealing with split instances
Version 2.6.0 beta2
-------------------
*(Released Mon, 11 Jun 2012)*
Second beta release of 2.6. The following changes were done from beta2
to rc1:
- Fixed ``daemon-util`` with non-root user models
- Fixed creation of plain instances with ``--no-wait-for-sync``
- Fix wrong iv_names when running ``cfgupgrade``
- Export more information in RAPI group queries
- Fixed bug when changing instance network interfaces
- Extended burnin to do NIC changes
- query: Added ``<``, ``>``, ``<=``, ``>=`` comparison operators
- Changed default for DRBD barriers
- Fixed DRBD error reporting for syncer rate
- Verify the options on disk parameters
And of course various fixes to documentation and improved unittests and
QA.
Version 2.6.0 beta1
-------------------
*(Released Wed, 23 May 2012)*
First beta release of 2.6. The following changes were done from beta1 to
beta2:
- integrated patch for distributions without ``start-stop-daemon``
- adapted example init.d script to work on Fedora
- fixed log handling in Haskell daemons
- adapted checks in the watcher for pycurl linked against libnss
- add partial support for ``xl`` instead of ``xm`` for Xen
- fixed a type issue in cluster verification
- fixed ssconf handling in the Haskell code (was breaking confd in IPv6
clusters)
Plus integrated fixes from the 2.5 branch:
- fixed ``kvm-ifup`` to use ``/bin/bash``
- fixed parallel build failures
- KVM live migration when using a custom keymap
Version 2.5.2
-------------
*(Released Tue, 24 Jul 2012)*
A small bugfix release, with no new features:
- fixed bash-isms in kvm-ifup, for compatibility with systems which use a
different default shell (e.g. Debian, Ubuntu)
- fixed KVM startup and live migration with a custom keymap (fixes Issue
243 and Debian bug #650664)
- fixed compatibility with KVM versions that don't support multiple boot
devices (fixes Issue 230 and Debian bug #624256)
Additionally, a few fixes were done to the build system (fixed parallel
build failures) and to the unittests (fixed race condition in test for
FileID functions, and the default enable/disable mode for QA test is now
customisable).
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
Version 2.5.1
-------------
*(Released Fri, 11 May 2012)*
A small bugfix release.
The main issues solved are on the topic of compatibility with newer LVM
releases:
- fixed parsing of ``lv_attr`` field
- adapted to new ``vgreduce --removemissing`` behaviour where sometimes
the ``--force`` flag is needed
Also on the topic of compatibility, ``tools/lvmstrap`` has been changed
to accept kernel 3.x too (was hardcoded to 2.6.*).
A regression present in 2.5.0 that broke handling (in the gnt-* scripts)
of hook results and that also made display of other errors suboptimal
was fixed; the code behaves now like 2.4 and earlier.
Another change in 2.5, the cleanup of the OS scripts environment, is too
aggressive: it removed even the ``PATH`` variable, which requires the OS
scripts to *always* need to export it. Since this is a bit too strict,
we now export a minimal PATH, the same that we export for hooks.
The fix for issue 201 (Preserve bridge MTU in KVM ifup script) was
integrated into this release.
Finally, a few other miscellaneous changes were done (no new features,
just small improvements):
- Fix ``gnt-group --help`` display
- Fix hardcoded Xen kernel path
- Fix grow-disk handling of invalid units
- Update synopsis for ``gnt-cluster repair-disk-sizes``
- Accept both PUT and POST in noded (makes future upgrade to 2.6 easier)
Version 2.5.0
-------------
Incompatible/important changes and bugfixes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- The default of the ``/2/instances/[instance_name]/rename`` RAPI
resource's ``ip_check`` parameter changed from ``True`` to ``False``
- The ``/2/nodes/[node_name]/evacuate`` RAPI resource was changed to use
body parameters, see :doc:`RAPI documentation <rapi>`. The server does
not maintain backwards-compatibility as the underlying operation
changed in an incompatible way. The RAPI client can talk to old
servers, but it needs to be told so as the return value changed.
- When creating file-based instances via RAPI, the ``file_driver``
parameter no longer defaults to ``loop`` and must be specified.
- The deprecated ``bridge`` NIC parameter is no longer supported. Use
``link`` instead.
- Support for the undocumented and deprecated RAPI instance creation
request format version 0 has been dropped. Use version 1, supported
since Ganeti 2.1.3 and :doc:`documented <rapi>`, instead.
- Pyparsing 1.4.6 or above is required, see :doc:`installation
- The "cluster-verify" hooks are now executed per group by the
``OP_CLUSTER_VERIFY_GROUP`` opcode. This maintains the same behavior
if you just run ``gnt-cluster verify``, which generates one opcode per
group.
- The environment as passed to the OS scripts is cleared, and thus no
environment variables defined in the node daemon's environment will be
inherited by the scripts.
- The :doc:`iallocator <iallocator>` mode ``multi-evacuate`` has been
deprecated.
- :doc:`New iallocator modes <design-multi-reloc>` have been added to
support operations involving multiple node groups.
- Offline nodes are ignored when failing over an instance.
- Support for KVM version 1.0, which changed the version reporting format
from 3 to 2 digits.
- TCP/IP ports used by DRBD disks are returned to a pool upon instance
removal.
- ``Makefile`` is now compatible with Automake 1.11.2
- Includes all bugfixes made in the 2.4 series
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
New features
~~~~~~~~~~~~
- The ganeti-htools project has been merged into the ganeti-core source
tree and will be built as part of Ganeti (see :doc:`install-quick`).
- Implemented support for :doc:`shared storage <design-shared-storage>`.
- Add support for disks larger than 2 TB in ``lvmstrap`` by supporting
GPT-style partition tables (requires `parted
<http://www.gnu.org/s/parted/>`_).
- Added support for floppy drive and 2nd CD-ROM drive in KVM hypervisor.
- Allowed adding tags on instance creation.
- Export instance tags to hooks (``INSTANCE_TAGS``, see :doc:`hooks`)
- Allow instances to be started in a paused state, enabling the user to
see the complete console output on boot using the console.
- Added new hypervisor flag to control default reboot behaviour
(``reboot_behavior``).
- Added support for KVM keymaps (hypervisor parameter ``keymap``).
- Improved out-of-band management support:
- Added ``gnt-node health`` command reporting the health status of
nodes.
- Added ``gnt-node power`` command to manage power status of nodes.
- Added command for emergency power-off (EPO), ``gnt-cluster epo``.
- Instance migration can fall back to failover if instance is not
running.
- Filters can be used when listing nodes, instances, groups and locks;
see :manpage:`ganeti(7)` manpage.
- Added post-execution status as variables to :doc:`hooks <hooks>`
environment.
- Instance tags are exported/imported together with the instance.
- When given an explicit job ID, ``gnt-job info`` will work for archived
jobs.
- Jobs can define dependencies on other jobs (not yet supported via
RAPI or command line, but used by internal commands and usable via
LUXI).
- Lock monitor (``gnt-debug locks``) shows jobs waiting for
dependencies.
- Instance failover is now available as a RAPI resource
(``/2/instances/[instance_name]/failover``).
- ``gnt-instance info`` defaults to static information if primary node
is offline.
- Opcodes have a new ``comment`` attribute.
- Added basic SPICE support to KVM hypervisor.
- ``tools/ganeti-listrunner`` allows passing of arguments to executable.
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
Node group improvements
~~~~~~~~~~~~~~~~~~~~~~~
- ``gnt-cluster verify`` has been modified to check groups separately,
thereby improving performance.
- Node group support has been added to ``gnt-cluster verify-disks``,
which now operates per node group.
- Watcher has been changed to work better with node groups.
- One process and state file per node group.
- Slow watcher in one group doesn't block other group's watcher.
- Added new command, ``gnt-group evacuate``, to move all instances in a
node group to other groups.
- Added ``gnt-instance change-group`` to move an instance to another
node group.
- ``gnt-cluster command`` and ``gnt-cluster copyfile`` now support
per-group operations.
- Node groups can be tagged.
- Some operations switch from an exclusive to a shared lock as soon as
possible.
- Instance's primary and secondary nodes' groups are now available as
query fields (``pnode.group``, ``pnode.group.uuid``, ``snodes.group``
and ``snodes.group.uuid``).
Misc
~~~~
- Numerous updates to documentation and manpages.
- :doc:`RAPI <rapi>` documentation now has detailed parameter
descriptions.
- Some opcode/job results are now also documented, see :doc:`RAPI
<rapi>`.
- A lockset's internal lock is now also visible in lock monitor.
- Log messages from job queue workers now contain information about the
opcode they're processing.
- ``gnt-instance console`` no longer requires the instance lock.
- A short delay when waiting for job changes reduces the number of LUXI
requests significantly.
- DRBD metadata volumes are overwritten with zeros during disk creation.
- Out-of-band commands no longer acquire the cluster lock in exclusive
mode.
- ``devel/upload`` now uses correct permissions for directories.
Version 2.5.0 rc6
-----------------
*(Released Fri, 23 Mar 2012)*
This was the sixth release candidate of the 2.5 series.
Version 2.5.0 rc5
-----------------
*(Released Mon, 9 Jan 2012)*
This was the fifth release candidate of the 2.5 series.
Version 2.5.0 rc4
-----------------
*(Released Thu, 27 Oct 2011)*
This was the fourth release candidate of the 2.5 series.
Version 2.5.0 rc3
-----------------
*(Released Wed, 26 Oct 2011)*
This was the third release candidate of the 2.5 series.
Version 2.5.0 rc2
-----------------
*(Released Tue, 18 Oct 2011)*
This was the second release candidate of the 2.5 series.
Version 2.5.0 rc1
-----------------
*(Released Tue, 4 Oct 2011)*
This was the first release candidate of the 2.5 series.
Version 2.5.0 beta3
-------------------
*(Released Wed, 31 Aug 2011)*
This was the third beta release of the 2.5 series.