Upgrading from SLE HA 15 to SLE HA 16.0
Upgrading from SLE HA 15 to SLE HA 16.0 requires a cluster offline upgrade. SLE HA 16 includes major changes that are backward incompatible with SLE HA 15, so a cluster rolling upgrade isn't possible. In a cluster offline upgrade, you must stop the cluster services on all nodes at once and upgrade the whole cluster before bringing the nodes back online.
Requirements:
A system with SUSE Linux Enterprise High Availability 15 SP7. Upgrades from other SLE HA versions are not supported for SLE HA 16.0.
The system must be registered to access the package repositories.
The time of the upgrade itself depends on the system's performance, the installation size and your network connection speed. The cluster resources will be stopped for the duration of the upgrade.
Thoroughly test this procedure in a test environment before performing it in a production environment.
1 Lifecycle and upgrade paths #
SUSE Linux Enterprise High Availability (SLE HA) allows upgrading an existing system to a later version. No new installation is required. Existing data, such as home and data directories and system configuration, is kept intact. Whether it is better to upgrade or perform a fresh installation depends on your specific scenario.
1.1 Product lifecycle #
SUSE Linux Enterprise High Availability 16 uses minor versions like 16.0 and 16.1 to add new features or functionality that remain backward-compatible. Minor releases are scheduled annually and always in November. Each minor version has 24 months of general support, giving you 12 months overlap with the next minor version. The last minor version, 16.6, will have 48 months of general support to complete a 10-year lifecycle in November 2035. Additional Long Term Support (LTS) is available for 3 years for all minor versions.
1.2 Upgrading versus fresh installation #
Upgrades between two major versions of SUSE Linux Enterprise High Availability are supported by SUSE. Whether it is better to upgrade or perform a fresh installation depends on your specific scenario. While upgrades involve less work, fresh installations ensure you benefit from all the new features of a release, such as disk layout changes, specific file system features, and other improvements. To get the most out of your system, SUSE therefore recommends fresh installations in most scenarios.
In both cases—an upgrade and a fresh installation—customers need to check if system settings and default values still fit their requirements.
1.3 Supported upgrade and migration paths to SLE HA 16.0 #
SUSE Linux Enterprise High Availability 16.0 only allows upgrades from SLE HA 15 SP7. More upgrade paths are planned for later versions.
2 The distribution migration system #
The distribution migration system provides an upgrade path for an installed SUSE Linux Enterprise High Availability system from one major version to another, for example, from SLE HA 15 SP7 to SLE HA 16.0. No new installation is required. Existing data, such as home and data directories and system configuration, is kept intact.
The distribution migration system uses a specialized upgrade live image to completely isolate the upgrade environment. This significantly reduces the risk of system inconsistencies or unrecoverable failures during major version upgrades.
2.1 Concept #
While previous versions of SUSE Linux Enterprise High Availability were upgraded from the Unified Installer, SLE HA
16 uses the distribution migration system. This upgrade is done via the network using the
zypper migration workflow, which sends a request to the repository server,
asking for an upgrade path. Supported repository servers are the SUSE Customer Center (SCC) and the
Repository Mirroring Tool (RMT). The request response contains the list of repositories required to
upgrade the system. This requires the system to be registered before the upgrade.
The repository server providing the updates must have the necessary channels available and those channels must be up to date. This requirement is automatically met when a system is registered to the SUSE Customer Center (SCC) or for "Pay as you go" instances in the public cloud that are automatically registered to the SUSE-operated update infrastructure of the cloud service provider. However, administrative work may be required when the system to be upgraded is connected to an RMT server.
Upgrading to a new major version requires the system to be offline. This downtime is necessary to avoid system inconsistencies that could put the system into a state that does not allow recovery. Therefore, an upgrade live image is used for the upgrade.
The distribution migration system provides the live image and a start-up utility,
run_migration, which reboots the running system into the upgrade live image.
Once booted into the upgrade live image, the following chain of services will be executed:
Detect the system to be upgraded
Mount the necessary file systems
Set up the network to match the network configuration of the system to be upgraded
Prepare SSH access to the upgrade live image
Prepare the package manager for the upgrade task
Upgrade the system using zypper
Update the boot loader configuration
Unmount all mounted file systems
Reboot
If an error occurs prior to the start of the upgrade, the system will be reverted to its original state.
3 Preparing the upgrade #
Before starting the upgrade procedure, make sure your system is properly prepared. Among other things, preparation involves backing up data and checking the release notes.
Perform the following steps before starting the upgrade:
Make sure the latest system updates are installed by running
zypper patch.Read the release notes. Find the list of all changes, new features and known issues in the release notes.
Consult the release notes to check whether the following applies:
Your hardware needs special considerations
Any currently used software packages have changed significantly
Your installation requires special precautions
Back up your data by copying the existing configuration files to a separate medium (such as a tape device or removable hard disk). This primarily applies to files stored in
/etcand some directories and files in/varand/opt.Check the available disk space. If you suspect you are running short of disk space, free up disk space or resize partitions.
If your machine serves as a VM Host Server for KVM, properly shut down all running VM Guests prior to the upgrade.
Root login by ssh will be disabled by default in SLE 16. You might want to enable it back before starting the migration. To do so, create
/etc/ssh/sshd_config.d/50-permit-root-login.confwith the following content:PermitRootLogin yes
Once the migration is complete, you can install openssh-server-config-rootlogin package and remove the previously added file.
4 Running the High Availability pre-upgrade check #
Use the cluster health check tool to make sure the High Availability cluster can safely upgrade from SLE HA 15 to SLE HA 16. The tool reports any issues that will prevent the upgrade, as well as issues that can be fixed during or after the upgrade.
You can perform this procedure on any node in the cluster.
Log in to the node either as the
rootuser or as a user withsudoprivileges.Run the cluster health check:
>sudo crm cluster health sles16This command reports issues in two categories:
The
WARNcategory indicates cluster configuration that isn't recommended, such as deprecated features. Issues in this category can be fixed during or after the upgrade, so the migration check passes. For example:[WARN] Corosync transport "udpu" will be deprecated in favor of "knet" in corosync 3.
The
FAILcategory indicates cluster configuration that can't be fixed during or after the upgrade, such as removed resource agents. Issues in this category must be fixed before you can upgrade the cluster, so the migration check fails. The command's output will tell you what to fix. For example:[FAIL] The following resource agents will be removed in SLES 16. * ocf:heartbeat:IPaddr: please replace it with ocf:heartbeat:IPaddr2
Fix any
FAILissues, then run the cluster health check again to make sure you didn't miss anything.
crm cluster help health
5 Stopping the High Availability cluster services #
Stopping the cluster services means stopping Pacemaker and Corosync. You can stop the
whole cluster at once by using the --all option. In this mode, the
cluster is no longer running and all the resources stop.
For a cluster offline upgrade, the resources must not be in maintenance mode.
When you stop the cluster services for the whole cluster without maintenance mode, all the resources stop. However, the resources must finish stopping before the cluster's shutdown timeout. If stopping a resource fails or times out, the resource's node is fenced.
If any resources take a long time to stop, consider stopping them before you stop the cluster services.
You can perform this procedure on any node in the cluster.
Log in either as the
rootuser or as a user withsudoprivileges.Check the status of the cluster:
>sudo crm statusIf the resources are in maintenance mode, they will continue to run even while the cluster services are offline.
This is only true if the nodes keep running. If you need to shut down or reboot the nodes, take the cluster out of maintenance mode first.
If the resources aren't in maintenance mode, they will all stop when you stop the cluster services.
Stop the cluster services on all nodes at once:
>sudo crm cluster stop --allCheck the status of the cluster services:
>sudo crm cluster statusBoth Pacemaker and Corosync should be
inactive.
6 Customizing the upgrade process #
The upgrade live image is preconfigured to run without any further setup. The following configuration options are completely optional. Change only what is necessary and only if you know what you are doing.
6.1 Optional configuration of the upgrade process #
The migration system reads a custom configuration file from the system to be upgraded. The content of this file modifies the behavior of the upgrade process. Prior to the start of the upgrade process, create the following file if a change of the default behavior is needed:
>sudosshINSTANCE_USER@IP_OF_INSTANCE touch/etc/sle-migration-service.yml'
The custom config file supports the following settings:
- Specify Migration Product
By default, the system will be migrated to SLES 16.0. This default target can be changed through the
migration_productsetting. The product must be specified with the tripletname/version/archfound in/etc/products.d/baseproductof the target product, for example:migration_product: SLES/16.0/x86_64
WarningChanging the default product leads to unsupported territory and is not tested nor covered by the SUSE support offering. The specified product name must be supported by the repository server used for the migration. If the given product does not exist or the repository server cannot calculate an upgrade path, an error message from the repository server will be logged in the migration log file.
- Preserve System Data
Preserve custom data files, such as udev rules, from the system being migrated and ensure they are applied in the upgraded system.
The
preservesection has three subsections that govern file preservation and system actions:static: Files in this subsection are copied into the DMS directly, with no further processing.rules: If this subsection contains files, they are preserved, and the DMS reloads udev to make these rules effective.sysctl: Preserving these files triggers sysctl --system to apply the configuration changes.preserve: rules: - /etc/udev/rules.d/a.rules - /etc/udev/rules.d/b.rules static: - /etc/sysconfig/proxy - /path/to/be/preserved/*.suffixNoteudev rules that require custom drivers will not have the desired effect as the migration system will not include these drivers and therefore execution of those rules will fail. Rules with such properties should not be listed.
NoteThe DMS provides a set of default preservable files that vary based on the target version and architecture. User-defined values will supplement this default list.
- Enable Debug Mode
If enabled, it prevents the upgrade system from rewinding the setup steps and rebooting due to a failed upgrade, allowing the issue to be debugged.
debug: true|false
- Configure Reboot Method
By default, the migration system uses
kexecto boot back into the host system once migration is complete. If this is in any way problematic, a regularrebootcan be requested by settingsoft_reboot: false.soft_reboot: true|false
- Enable verbosity for zypper migration
If enabled, it will run the zypper migration plugin with increased verbosity.
verbose_migration: true|false
- Enable the fix option for pre_checks
If enabled (default), the run_pre_checks systemd process will use the
--fixoption to automatically remediate applicable issues before the migration is started.pre_checks_fix: true|false
- Configure Make initrd Method
The live system may not contain all the tools required to create an initrd that meets the needs of the system being upgraded. Building a host-independent initrd will create an initrd that includes the tools and modules available on the system being upgraded. If needed, a host-independent initrd can be created by setting
build_host_independent_initrd: True.build_host_independent_initrd: true|false
- Configure Dependency Solver Test Case Generation
It is possible that during the migration packages get installed that were not on the system previously and are pulled in because of dependencies. This setting will set up the migration so that a solver test case is generated. The information from the test case can then be used to understand why a given package was installed.
debug_solver: true|false
7 Performing the upgrade #
This section describes the actual upgrade procedure with the distribution migration system.
7.1 Requirements #
The cluster services must be stopped on all nodes. Run
crm cluster statusto make sure both Pacemaker and Corosync areinactive.The system must be registered with the SUSE Customer Center or an RMT server. "Pay as you go" instances in the public cloud are automatically registered to the SUSE-operated update infrastructure.
The upgrade path must be supported. Currently, it is only possible to upgrade from SUSE Linux Enterprise High Availability 15 SP7 to 16.0. It is possible to configure other versions of SUSE Linux Enterprise High Availability as the migration target, but doing so is not a tested or supported use case.
The server that provides the migration target must have the appropriate repositories synced, and they must be up to date. This requirement is automatically met by the SUSE Customer Center, and the SUSE-operated update infrastructure in the public cloud. If you are using an RMT server, make sure to mirror all relevant channels.
The operating system needs to reside on a single partition. Support for multiple partitions, such as LVM, is limited to configurations where the separated partitions do not contain OS-critical data or processes. For example, a separate
/homepartition will function whereas a separate/varwill not.
During the upgrade, it is only possible to log in via SSH key-based login.
If your system is not configured for it, it is recommended that at least
one of the users on the system has a ~/.ssh/authorized_keys file with a
private key accessible by the person executing the system upgrade.
7.2 Upgrading to SUSE Linux Enterprise High Availability 16.0 #
The distribution migration system can be invoked using two different methods:
Reboot after installing the suse-migration-sle16-activation package.
Run the
run_migrationcommand included with the SLES16-Migration package.
The distribution migration system upgrades both the base operating system and the High Availability cluster. Perform the upgrade on all the cluster nodes. The upgraded nodes won't be able to connect to non-upgraded nodes.
Depending on your architecture, perform the following steps to trigger the upgrade:
- Use
rebooton AMD64/Intel 64, AArch64, and ppc64le: After installing the suse-migration-sle16-activation package, start the migration process by rebooting the system:
>sudozypperin suse-migration-sle16-activation>sudorebootThe suse-migration-sle16-activation package installs SLES16-Migration as a dependency and modifies the bootloader configuration to boot into the upgrade image.
- Use
run_migrationon s390x: Modifying the boot loader configuration is not supported on s390x, so you start the migration directly with
run_migration.>sudozypperin SLES16-Migration>sudorun_migrationThe
run_migrationutility usesKexecand does not work in Xen-based environments. IfKexeccauses a kernel panic, refer to the TID at https://www.suse.com/support/kb/doc/?id=000019733 and set thesoft_rebootcustomization option.
After the upgrade, the High Availability cluster services will start automatically during system boot (if the Pacemaker service is enabled). The cluster resources will start again when the upgraded cluster stack is back online and reaches a quorate state.
8 Finishing the upgrade #
After the upgrade, you need to perform some additional tasks. The following section guides you through these steps.
Use
zypper packagesto check for orphaned and unneeded packages.Orphaned packages are no longer available in any of the configured package repositories. They can no longer get updated and become unsupported.
For a list of orphaned packages, run:
>zypper packages --orphanedUnneeded packages are dependencies of packages that have been installed either explicitly by the user or implicitly as part of a pattern or product, and that have been removed in the meantime. They are usually no longer needed and should be removed, too.
For a list of unneeded packages, run:
>zypper packages --unneededTipTo avoid unneeded packages, use
zypper rmwith the--clean-depsoption.You can combine both lists into one:
>zypper packages --orphaned --unneededUse these lists to determine which packages are still needed and which can be safely removed.
Warning: Do not remove packages you needIf packages are renamed or removed from a pattern or product,
zyppermay no longer consider them explicitly installed and mark them as unneeded, even though they are still crucial for your installation.Carefully review the list of packages you are removing.
To remove all orphaned and unneeded packages with a single command, run:
>sudozypper rm $(zypper --no-refresh packages --orphaned --unneeded | gawk '{print $5}' | tail -n +5)Exclude a single package or pattern from being uninstalled:
>sudozypper rm $(zypper --no-refresh packages --orphaned --unneeded | gawk '{print $5}' | tail -n +5 | grep -v PACKAGE_TO_EXCLUDE)Exclude multiple packages defined in a text file, separated by a newline:
>sudozypper rm $(zypper --no-refresh packages --orphaned --unneeded | gawk '{print $5}' | tail -n +5 | grep -v -f /PACKAGES/TO/KEEP.txt)
Check for any
*.rpmnewand*.rpmsavefiles. When an upgrade includes changes to a default configuration file that has been altered after package installation, instead of overwriting the file, one of these file types is created. While*.rpmnewcontains the new default configuration and leaves your altered file untouched,*.rpmsaveis a copy of your altered configuration that has been replaced by the new default file.If you find any of these files, examine their content and merge desirable changes. You do not need to search the whole file system, only the
/etcdirectory. Use the following command:>find /etc/ -name "*.rpmnew" -o -name "*.rpmsave"
9 Starting the High Availability cluster services #
If the Pacemaker service is enabled, the High Availability cluster services will start automatically during system boot. The cluster resources will start again when the upgraded cluster stack is back online and reaches a quorate state.
If the Pacemaker service is disabled, you can start the cluster services for the whole
cluster at once by using the --all option.
You can perform this procedure on any node in the cluster.
Log in either as the
rootuser or as a user withsudoprivileges.Start the cluster services on all nodes at once:
>sudo crm cluster start --allCheck the status of the cluster services:
>sudo crm cluster statusBoth Corosync and Pacemaker should be
active.Check the status of the cluster:
>sudo crm statusThe nodes will have the status
UNCLEAN (offline), but will soon change toOnline.
10 Resolving post-upgrade issues in the High Availability cluster #
Use the cluster health check tool after the upgrade to list issues that still need to be
fixed. You can also use the --fix option to automatically fix certain
issues. Issues that can't be fixed automatically are listed along with suggestions for how
to fix them manually.
All cluster nodes are reachable.
All cluster nodes have been upgraded.
You can perform this procedure on any node in the cluster.
Log in to the node either as the
rootuser or as a user withsudoprivileges.Run the cluster health check with the
--fixoption to automatically fix certain issues:>sudo crm cluster health sles16 --fixThe output also lists any issues that can't be fixed automatically and tells you how to fix them manually. For example:
[WARN] The CIB is not validated with the latest schema version. * Latest version: 4.0 * Current version: 3.10 Please run "crm configure upgrade force" to upgrade to the latest version.Fix any issues, then run the cluster health check again to make you didn't miss anything.
crm cluster help health
11 For more information #
For more information about the Distribution Migration System, refer to https://documentation.suse.com/suse-distribution-migration-system/15/html/distribution-migration-system/.
12 Legal Notice #
Copyright© 2006– 2026 SUSE LLC and contributors. All rights reserved.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or (at your option) version 1.3; with the Invariant Section being this copyright notice and license. A copy of the license version 1.2 is included in the section entitled “GNU Free Documentation License”.
For SUSE trademarks, see https://www.suse.com/company/legal/. All other third-party trademarks are the property of their respective owners. Trademark symbols (®, ™ etc.) denote trademarks of SUSE and its affiliates. Asterisks (*) denote third-party trademarks.
All information found in this book has been compiled with utmost attention to detail. However, this does not guarantee complete accuracy. Neither SUSE LLC, its affiliates, the authors, nor the translators shall be held liable for possible errors or the consequences thereof.