Alibaba Cloud Linux 3 is the recommended migration target for CentOS 7, which reached end of life (EOL). This topic covers the differences between the two distributions so you can assess the impact before migrating.
For more information, see CentOS EOL guidance and Maintenance support for operating systems.
Breaking changes that require action
The following changes may break your applications or scripts after migration. Review these before you migrate.
Kernel and core toolchain
The core toolchain versions are higher in Alibaba Cloud Linux 3. After migration, recompile your applications to adapt to the dynamic link libraries (DLLs) used in Alibaba Cloud Linux 3—otherwise, applications may fail to identify DLL files.
| Component | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 | Alibaba Cloud Linux 3 Arm64 |
|---|---|---|---|
| gcc | 4.8.5_44.el7 | 10.2.1_3.8.al8 | 10.2.1-3.5.al8 |
| glibc | 2.17_326.el7_9 | 2.32_1.16.al8 | 2.32-1.12.al8 |
| Kernel | 3.10.0-1160.114.2.el7 | 5.10.134-16.1.al8 | — |
| binutils | 2.27_44.base.el7_9.1 | 2.35_12.2.al8 | — |
| systemd | 219_78.el7_9.9 | 239_74.0.3.al8 | — |
| grub2 | 2.02_0.87.0.2.el7.centos.14 | 2.02-148.0.1.al8.1 | — |
For kernel version differences, see the Kernel differences section.
Python default interpreter
In CentOS 7, /usr/bin/python points to Python 2. In Alibaba Cloud Linux 3, it points to Python 3. If your scripts or programs call python xxx.py, they may behave differently or fail after migration.
| Component | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 and Arm64 |
|---|---|---|
| Python | Python 2, Python 3.4, Python 3.6 | Python 2, Python 3.6, Python 3.8, Python 3.11 |
Default Java installation
Running yum install java installs different JDKs depending on the distribution:
-
CentOS 7: installs
java-1.8.0-openjdk -
Alibaba Cloud Linux 3: installs
java-1.8.0-alibaba-dragonwell(Alibaba's OpenJDK distribution)
To install OpenJDK in Alibaba Cloud Linux 3, run yum install java-1.8.0-openjdk.
| Component | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 and Arm64 |
|---|---|---|
| java-1.8.0-alibaba-dragonwell | — | 3:8.15.16.372-2.al8 |
| java-1.8.0-openjdk | 1:1.8.0.412.b08-1.el7_9 | 1:1.8.0.412.b08-2.0.1.1.al8 |
Default MySQL installation
Running yum install mysql installs different database packages:
-
CentOS 7: installs MariaDB
-
Alibaba Cloud Linux 3: installs MySQL
| Component | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 and Arm64 |
|---|---|---|
| mysql | — | 8.0.36-1.0.1.1.al8 |
| mariadb | 5.5.68-1.el7 | 3:10.5.22-1.0.1.al8 |
System tool replacements
Three core system tools are replaced in Alibaba Cloud Linux 3. Update your scripts and automation accordingly.
| Function | CentOS 7 | Alibaba Cloud Linux 3 | Notes |
|---|---|---|---|
| Package management | YUM | DNF | |
| Network packet filtering | iptables | nftables | Update firewall rules to use nftables syntax. |
| Container runtime | Docker | Podman | Docker Community Edition (CE) can also be installed for self-deployment. |
File system support
Alibaba Cloud Linux 3 supports ext4 and XFS, but not Btrfs. If your workload uses Btrfs, migrate data to ext4 or XFS before switching.
| Kconfig parameter | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 | Alibaba Cloud Linux 3 Arm64 |
|---|---|---|---|
| CONFIG_BTRFS_FS | m (enabled as module) | Not set | Not set |
Other component version differences
The following component versions are updated in Alibaba Cloud Linux 3. No action is typically required unless your application depends on a specific version.
If you compile and install component versions not available in the YUM repository in CentOS 7, you may be unable to log in to the system or run applications after migration. Compile such components in Alibaba Cloud Linux 3, or install them from the Alibaba Cloud Linux 3 YUM repository.
| Component | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 and Arm64 |
|---|---|---|
| golang | 1.20.12-1.el7 | 1.20.12-8.0.1.al8 |
| nginx | 1:1.20.1-10.el7 | 1:1.20.1-1.0.3.al8 |
| php | 5.4.16-48.el7 | 7.4.33-1.0.1.al8 |
| postgresql | 9.2.24-9.el7_9 | 13.14-1.0.1.al8 |
| redis | 3.2.12-2.el7 | 6.2.7-1.0.2.al8 |
| openssl | 1.0.2k_26.el7_9 | 1.1.1k_12.0.1.al8 |
Port differences
Alibaba Cloud Linux 3 listens on different ports compared to CentOS 7. Update your firewall rules if needed.
| Protocol | Port | Service | CentOS 7 | Alibaba Cloud Linux 3 |
|---|---|---|---|---|
| TCP/UDP | 111 | rpcbind | Yes (TCP/UDP) | Yes (TCP/UDP/TCP6/UDP6) |
| TCP | 22 | SSH | Yes | Yes |
| TCP | 25 | SMTP | Yes | No |
| UDP | 68 | DHCP | Yes (NetworkManager process) | Yes (dhclient process) |
| UDP/UDP6 | 323 | chronyd | Yes | Yes |
| TCP/UDP | 5355 | systemd-resolve | No | Yes |
Notable differences:
-
Port 25 (SMTP) is open in CentOS 7 but not in Alibaba Cloud Linux 3.
-
Port 5355 (systemd-resolve) is open in Alibaba Cloud Linux 3 but not in CentOS 7.
-
UDP 68 (DHCP) is managed by the NetworkManager process in CentOS 7 and by the dhclient process in Alibaba Cloud Linux 3.
Kernel differences
sysctl parameters
Changed parameters
The following sysctl parameters have different default values in Alibaba Cloud Linux 3. In most cases, no action is required—these defaults are tuned for cloud environments.
| Parameter | CentOS 7 value | Alibaba Cloud Linux 3 value | Description |
|---|---|---|---|
| kernel.panic | 0 (read/write) | 1 (read/write) | Controls whether the kernel restarts automatically after a panic. 0 = no restart; >0 = restart after n seconds; <0 = restart immediately. Alibaba Cloud Linux 3 restarts after 1 second by default. No action required. |
| kernel.watchdog_thresh | 10 (read/write) | 50 (read/write) | Watchdog timeout period in seconds. Increased to reduce false-positive alerts in cloud environments where network links are more complex. No action required. |
| kernel.nmi_watchdog | 1 (read/write) | 0 (read/write) | Hard lockup detection using Non-Maskable Interrupts (NMIs). NMIs are not supported in Elastic Compute Service (ECS), so this is disabled by default. If you use bare metal instances and need hard lockup detection, enable it manually. |
| kernel.hung_task_timeout_secs | 120 (read/write) | 240 (read/write) | Timeout in seconds before a process in the D (TASK_UNINTERRUPTIBLE) state triggers a warning. Increased to reduce false-positive alerts in cloud environments. No action required. |
| vm.drop_caches | 0 (read/write) | — (write-only) | Read permission removed in Alibaba Cloud Linux 3. In CentOS 7, reading this parameter could mislead users into thinking it indicates a non-cached mode, when it actually initiates a cache-clearing task. No action required. |
| vm.dirty_ratio | 30 (read/write) | 40 (read/write) | Maximum percentage of system memory that can be filled with dirty pages before processes are forced to write. Set by the tuned daemon based on the active performance profile. No action required unless you have custom tuning scripts. |
| vm.numa_zonelist_order | default (read/write) | Node (read/write) | Controls zone selection order during NUMA memory allocation. This option became a no-op in newer kernel versions—manual control is no longer needed. No action required. |
| net.ipv4.tcp_mem | — (read/write) | — (read/write) | Maximum memory TCP can allocate. For the same memory specification, the default buffer size in Alibaba Cloud Linux 3 is approximately half that of CentOS 7, due to an updated initialization algorithm (commit b66e91ccbc34ebd5a2f90f9e1bc1597e2924a500). No action required. |
| net.ipv4.tcp_fastopen | 0 (read/write) | 1 (read/write) | Controls TCP Fast Open. 0 = disabled; 1 = enabled for outbound connections only. Enabled by default in Alibaba Cloud Linux 3 (commit e1cfcbe82b4534bd0f99fef92a6d33843fd85e0e). No action required. |
| net.ipv4.tcp_fack | 1 (read/write) | 0 (read/write) | TCP Forward Acknowledgment (FACK) is replaced by the RACK (Recent Acknowledgment) algorithm and is disabled. No action required (commit 713bafea92920103cd3d361657406cf04d0e22dd). |
| net.core.somaxconn | 128 (read/write) | 4,096 (read/write) | Maximum length of the socket listening queue. Increased from 128 to 4,096 to meet server workload requirements (commit 19f92a030ca6d772ab44b22ee6a01378a8cb32d4). No action required. |
| net.core.default_qdisc | pfifo_fast (read/write) | fq_codel (read/write) | Default queuing discipline. Changed to Fair Queuing Controlled Delay (FQ-CoDel) to prevent bufferbloat. No action required. |
Removed parameters
The following sysctl parameters from CentOS 7 are not available in Alibaba Cloud Linux 3. If your configuration files or scripts reference these parameters, remove or replace them.
| Parameter | CentOS 7 default | Reason removed | Recommended action |
|---|---|---|---|
| kernel.panic_on_stackoverflow | 0 | Replaced by kernel stack guard pages, which perform detection automatically (commit 117ed45485413b1977bfc638c32bf5b01d53c62b). | Remove from configuration files. No replacement needed. |
| kernel.random.read_wakeup_threshold | 64 | Removed during kernel version iteration (commit c95ea0c69ffda19381c116db2be23c7e654dac98). | Remove from configuration files. No replacement needed. |
| kernel.compat-log | 1 | Virtual 8086 mode is not supported on x86 64-bit architectures. The warning logs this option produced are no longer needed (commit 9dcfcda5768eda793e15a1a73da38cfd1fc1a47a). | Remove from configuration files. No replacement needed. |
| kernel.numa_balancing_settle_count | 4 | Linux now uses more precise metrics to distinguish task loads; frequency threshold control via this option is no longer needed (commit 1bd53a7efdc988163ec4c25f656df38dbe500632). | Remove from configuration files. No replacement needed. |
| kernel.sched_shares_window_ns | 10,000,000 | This option had no effect in CentOS 7 (commit 3c3fcb45d524feb5d14a14f332e3eec7f2aff8f3). | Remove from configuration files. No replacement needed. |
| kernel.sched_time_avg_ms | 1,000 | Replaced by the per-entity load tracking (PELT) algorithm for real-time scheduling (commit 5fd778915ad29184a5ff8eb82d1118f6916b79e4). | Remove from configuration files. No replacement needed. |
| vm.hugepages_treat_as_movable | 0 | Removed because it caused issues with the memory hot-swap feature (commit d6cb41cc44c63492702281b1d329955ca767d399). | Remove from configuration files. No replacement needed. |
| vm.nr_pdflush_threads | 0 | This option had no effect in CentOS 7 (commit b35bd0d9f8a8ea17aae40893e18274d191a2d2c5). | Remove from configuration files. No replacement needed. |
| net.ipv4.tcp_tw_recycle | 0 | Removed because it conflicts with TCP timestamp randomization used in NAT environments (commit 4396e46187ca5070219b81773c4e65088dac50cc). | Remove from configuration files. |
| net.ipv4.tcp_thin_dupack | 0 | Replaced by the TCP RACK algorithm (commit 4a7f6009441144783e5925551c72e3f2e1b0839b). | Remove from configuration files. No replacement needed. |
| net.ipv4.tcp_max_ssthresh | 0 | Replaced by a more effective automated slow-start method (commit 9f9843a751d0a2057f9f3d313886e7e5e6ebaac9). | Remove from configuration files. No replacement needed. |
| fs.negative-dentry-limit | 0 | CentOS 7-specific feature; not part of the Linux community kernel. Removed in CentOS 8 and later. See Red Hat KB. | Remove from configuration files. No replacement needed. |
| fs.may_detach_mounts | 0 | CentOS 7-specific feature; not part of the Linux community kernel. Removed in CentOS 8 and later. See Red Hat KB. | Remove from configuration files. No replacement needed. |
/sys/ parameters
| Path | CentOS 7 | Alibaba Cloud Linux 3 | Notes |
|---|---|---|---|
| /sys/block/\<blk\>/queue/read_ahead_kb | 128 | 4,096 | The tuned daemon sets this value. A large read-ahead value may reduce performance for database workloads and increase disk I/O. If this affects your workload, set the value back to 128. |
| /sys/module/virtio_net/parameters/napi_tx | — | Enabled | Controls whether NAPI is used for the virtio_net send queue. In some benchmark scenarios, enabling NAPI prevents TCP packet assembly and reduces throughput. To disable it, set virtio_net.napi_tx=0. |
Kernel command line parameters
| Parameter | CentOS 7 | Alibaba Cloud Linux 3 | Description |
|---|---|---|---|
| cgroup.memory=nokmem | Not configured | Configured | Disables kernel memory accounting (CONFIG_MEMCG_KMEM) for cgroups. Disabling it improves system performance. See the OpenAnolis community for details. |
| crashkernel=auto | Configured | Not configured | Automatically calculates reserved memory for the kdump service. Alibaba Cloud Linux 3 images have the crashkernel reserved memory size preconfigured, so removing this parameter from the default settings has no impact. |
| net.ifnames=0 | Configured | Configured | Restores legacy network interface naming (eth0, eth1) and disables the systemd predictable naming feature. Configured by default in both distributions. Network interface naming changes can affect compatibility. For more information, see What do I do if the "Unsupported network configuration" error message appears?. |
Kconfig parameters
The following kernel configuration parameters differ between the two distributions.
| Parameter | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 | Alibaba Cloud Linux 3 Arm64 | Description |
|---|---|---|---|---|
| CONFIG_NR_CPUS | 5,120 | 1,024 | 1,024 | Maximum CPU cores supported. No Alibaba Cloud instances have more than 1,024 cores, so this has no practical impact. |
| CONFIG_NODES_SHIFT | 10 | 6 | 6 | Maximum NUMA nodes supported (2^6 = 64 nodes). No Alibaba Cloud instances have more than 64 NUMA nodes, so this has no practical impact. |
| CONFIG_PREEMPT_NONE | Not set | y | Not set | Kernel preemption mode. Alibaba Cloud Linux 3 on x86 uses no-preemption mode for better cloud performance. This mode is disabled in Alibaba Cloud Linux 3 for Arm64 due to historical reasons. Starting from kernel version 5.10.134-17, you can use a kernel command line parameter to change the default preemption mode dynamically. |
| CONFIG_PREEMPT_VOLUNTARY | y | Not set | y | Voluntary preemption mode. Enabled in CentOS 7 and Alibaba Cloud Linux 3 Arm64. |
| CONFIG_BTRFS_FS | m | Not set | Not set | Alibaba Cloud Linux 3 supports ext4 and XFS file systems, but not Btrfs. If your workload uses Btrfs, migrate data to ext4 or XFS before switching. |