全部产品
Search
文档中心

Alibaba Cloud Linux:Alibaba Cloud Linux 3与CentOS 7的区别

更新时间:Jul 02, 2024

CentOS 7停止维护EOL(End of Life)后,您可以选择将CentOS 7迁移至Alibaba Cloud Linux 3。迁移前可以通过本文了解Alibaba Cloud Linux 3与CentOS 7有哪些区别。

说明

内核及核心工具链区别

组件

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

在迁移到Alibaba Cloud Linux 3之后,您的应用程序需要重新编译以适配新版本的动态链接库,否则可能出现链接失败的情况。

glibc

2.17_326.el7_9

2.32_1.16.al8

2.32-1.12.al8

内核

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

系统重要组件版本区别

说明

如果您在CentOS 7上通过编译安装的方式使用更高版本的组件,而非直接使用yum源提供的组件,在迁移至Alibaba Cloud Linux 3后可能系统会出现无法登录,应用无法正常运行等现象。此时,您需要选择在Alibaba Cloud Linux 3上对相关组件进行重新编译,或者使用Alibaba Cloud Linux 3 yum源提供的组件。

组件

CentOS 7 x86

Alibaba Cloud Linux 3 x86 & Arm64

说明

python

python2/python3.4/python3.6

python2/python3.6/python3.8/python3.11

在CentOS上/usr/bin/python默认指向python2,在Alinux上默认指向python3。如果您的程序中直接使用python xxx.py执行python程序,则可能遇到兼容性问题。

java-1.8.0-alibaba-dragonwell

3:8.15.16.372-2.al8

在执行yum install java时,CentOS默认安装java-1.8.0-openjdk,而Alibaba Cloud Linux默认安装java-1.8.0-alibaba-dragonwell。如果您需要在Alibaba Cloud Linux上安装openjdk,请使用yum install java-1.8.0-openjdk

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

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

mysql

8.0.36-1.0.1.1.al8

在执行yum install mysql时,CentOS默认安装MariaDB,而Alibaba Cloud Linux默认安装MySQL。

mariadb

5.5.68-1.el7

3:10.5.22-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

系统重要组件区别

组件

CentOS 7 x86

Alibaba Cloud Linux 3 x86 & Arm64

包管理

yum

dnf

网络数据包过滤框架

iptables

nftables

容器组件

docker

podman

说明

您也可以引入docker-ce自行部署。

端口区别

版本

协议

端口

服务

CentOS 7

TCP/UDP

111

rpcbind

TCP

22

SSH

TCP

25

smtp

UDP

68

说明

由NetworkManager进程监听。

dhcp

UDP/UDP6

323

chronyd

Alibaba Cloud Linux 3

TCP/UDP/TCP6/UDP6

111

rpcbind

TCP

22

SSH

UDP

68

说明

由dhclient进程监听。

dhcp

UDP/UDP6

323

chronyd

TCP/UDP

5355

systemd-resolve

内核区别

sysctl系统参数

说明

sysctl系统参数差异较多,本文仅给出重要的sysctl差异说明。

变更配置项

sysctl

CentOS 7 x86

Alibaba Cloud Linux 3 x86 & Arm64

说明

Linux社区补丁信息

读写属性

读写属性

kernel.panic

0

rw

1

rw

默认行为改变。

此选项用于控制内核在发生panic后,需要等待n(sysctl的值)秒自动重启。

  • n>0代表等待n秒

  • n=0代表不重启

  • n<0代表立即重启

kernel.watchdog_thresh

10

rw

50

rw

以秒为单位的watchdog超时时间。

云上链路更为复杂,调整该参数以降低误报warning的概率。

kernel.nmi_watchdog

1

rw

0

rw

是否开启hard lockup检测。

在ECS上不支持NMI中断,因此开启此功能并无意义。

如果您使用裸金属,且需要该功能,您可以手工打开该配置。

kernel.hung_task_timeout_secs

120

rw

240

rw

以秒为单位的,处于D状态的进程未被调度的超时时间。

云上链路更为复杂,调整该参数以降低误报warning的概率。

vm.drop_caches

0

rw

-w

读写权限变更。

该选项原本支持读取上次写入的值的行为误导用户该选项是设置系统到非缓存模式,而非发起一次清除缓存的任务。为防止误解,去掉了该开关的读权限。

  • Commit ID:204cb79ad42f015312a5bbd7012d09c93d9b46fb

  • Subject信息:kernel:sysctl: make drop_caches write-only

vm.dirty_ratio

30

rw

40

rw

该选项受到tuned的影响,在CentOS 7上tuned使用virtual-guest进行调优,设置的值为30。在Alibaba Cloud Linux上使用ecs-performance模式,值为40。

vm.numa_zonelist_order

default

rw

Node

rw

随Linux社区版本迭代而失效。

该选项的作用是控制系统内存分配时从各个node&zone选择的顺序,随着Linux社区版本迭代,已不需要用户手动控制。

  • Commit ID:c9bff3eebc09be23fbc868f5e6731666d23cbea3

  • Subject信息:mm, page_alloc: rip out ZONELIST_ORDER_ZONE

net.ipv4.tcp_mem

rw

rw

该选项由3个整型的值(low, pressure, max)组成,分别代表:

  • low:当TCP使用的页数少于此值时,系统不予关心。

  • pressure:TCP使用的页数高于此值时,系统会减少内存使用,进入pressure mode。

  • max:所有TCP socket最大能使用的页的数量。

该选项的默认值与系统内存大小紧密相关,但在同样的内存规格上您会观察到Alibaba Cloud Linux 3上缓冲区大小相比CentOS 7小一半左右,这是Linux社区版本迭代调整了默认值的初始化算法导致的。

  • Commit ID:b66e91ccbc34ebd5a2f90f9e1bc1597e2924a500

  • Subject信息:tcp: halvestcp_mem[] limits

net.ipv4.tcp_fastopen

0

rw

1

rw

随Linux社区版本调整默认值。

该选项用于控制系统是否支持发送和接收TCP Fast Open相关报文。

  • 0表示不支持。

  • 1表示仅支持发送相关报文。

  • Commit ID:e1cfcbe82b4534bd0f99fef92a6d33843fd85e0e

  • Subject信息:ipv4: Namespaceify tcp_fastopen knob

net.ipv4.tcp_fack

1

rw

0

rw

随Linux社区版本迭代而失效。

用于支持TCP FACK特性,该特性已被RACK特性替代,因此在Alibaba Cloud Linux 3上已失效。

  • Commit ID:713bafea92920103cd3d361657406cf04d0e22dd

  • Subject信息:tcp: retire FACK loss detection

net.core.somaxconn

128

rw

4096

rw

随Linux社区版本而调整默认值。

该选项用于控制socket监听队列的最大长度,128已无法满足现代服务器的需求,故调整为4096。

  • Commit ID:19f92a030ca6d772ab44b22ee6a01378a8cb32d4

  • Subject信息:net: increase SOMAXCONN to 4096

net.core.default_qdisc

pfifo_fast

rw

fq_codel

rw

默认的qdisc模型,fq_codel能更好地解决bufferbloat问题。

已移除配置项

已移除配置项是指在CentOS 7中存在,在Alibaba Cloud Linux 3中被移除的配置项。

sysctl参数

读写属性

说明

Linux社区补丁信息

kernel.panic_on_stackoverflow

0

rw

随Linux社区版本迭代被移除。

该选项用于启用内核栈溢出检测,在后续迭代中,内核栈已默认带上guard page进行检测,故该功能失效。

  • Commit ID:117ed45485413b1977bfc638c32bf5b01d53c62b

  • Subject信息:x86/irq/64: Remove stack overflow debug code

kernel.random.read_wakeup_threshold

64

rw

随Linux社区版本迭代被移除。

  • Commit ID:c95ea0c69ffda19381c116db2be23c7e654dac98

  • Subject信息:random: remove kernel.random.read_wakeup_threshold

kernel.compat-log

1

rw

随Linux社区版本迭代被移除。

在x86 64位架构上不支持虚拟8086模式,如果配置了该选项,则调用vm86old()和vm86()时会打印warning日志。由于该warning并不是必要的,所以后续被移除了,此选项也一并被移除。

  • Commit ID:9dcfcda5768eda793e15a1a73da38cfd1fc1a47a

  • Subject信息:compat: remove compat_printk()

kernel.numa_balancing_settle_count

4

rw

随Linux社区版本迭代被移除。

Linux对不同类型的任务分别采用更科学的指标区分负载,从而不再需要该选项来管控频率的阈值。

  • Commit ID:1bd53a7efdc988163ec4c25f656df38dbe500632

  • Subject信息:sched/numa: Drop sysctl_numa_balancing_settle_count sysctl

kernel.sched_shares_window_ns

10000000

rw

随Linux社区版本迭代被移除,该功能在CentOS 7上已失效。

  • Commit ID:3c3fcb45d524feb5d14a14f332e3eec7f2aff8f3

  • Subject信息:sched/fair: Kill the unused 'sched_shares_window_ns' tunable

kernel.sched_time_avg_ms

1000

rw

随Linux社区版本迭代被移除。

由于Linux对RT调度类采用PELT负载跟踪算法,从而抛弃旧算法及相关参数,该参数则是其中之一。

  • Commit ID:5fd778915ad29184a5ff8eb82d1118f6916b79e4

  • Subject信息:sched/sysctl: Remove unused sched_time_avg_ms sysctl

vm.hugepages_treat_as_movable

0

rw

随Linux社区版本迭代被移除。

该配置项本意是允许从 ZONE_MOVABLE区域分配不可迁移的大页,以减少内存碎片,但该功能目前已严重影响内存热插拔,所以被移除。

  • Commit ID:d6cb41cc44c63492702281b1d329955ca767d399

  • Subject信息:mm, hugetlb: remove hugepages_treat_as_movable sysctl

vm.nr_pdflush_threads

0

r-

随Linux社区版本迭代被移除,该功能在CentOS 7上已失效。

  • Commit ID:b35bd0d9f8a8ea17aae40893e18274d191a2d2c5

  • Subject信息:sysctl: remove /proc/sys/vm/nr_pdflush_threads

net.ipv4.tcp_tw_recycle

0

rw

随Linux社区版本迭代被移除。

该配置项允许处于TIME-WAIT的socket被快速回收。由于在实现上假设远端同一地址的时间戳是单调递增的,而NAT和TCP时间戳随机漂移特性已打破该假设,导致该功能无法正常使用,故被移除。

  • Commit ID:4396e46187ca5070219b81773c4e65088dac50cc

  • Subject信息:tcp: remove tcp_tw_recycle

net.ipv4.tcp_thin_dupack

0

rw

随Linux社区版本迭代被移除,该功能已被TCP RACK特性替代。

  • Commit ID:4a7f6009441144783e5925551c72e3f2e1b0839b

  • Subject信息:tcp: remove thin_dupack feature

net.ipv4.tcp_max_ssthresh

0

rw

随Linux社区版本迭代被移除。该配置项本意是用于人工调整TCP慢启动速度的,但目前已被更有效且更加自动化的方式替代,故移除。

  • Commit ID:9f9843a751d0a2057f9f3d313886e7e5e6ebaac9

  • Subject信息:tcp: properly handle stretch acks in slow start

fs.negative-dentry-limit

0

rw

该配置项为CentOS 7自研配置项,非Linux社区通用功能,已在CentOS 8中被移除。

Why negative-dentry-limit sysctl parameter is not available in Red Hat Enterprise Linux 8?

fs.may_detach_mounts

0

rw

该配置项为CentOS 7自研配置项,非Linux社区通用功能,已在CentOS 8中被移除。

What is the parameter fs.may_detach_mounts on Red Hat Enterprise Linux 7?

/sys/参数

路径

CentOS 7 x86

Alibaba Cloud Linux 3 x86 & Arm64

说明

/sys/block/<blk>/queue/read_ahead_kb

128

4,096

  • tuned新版本会对该参数进行调优。

  • 该值会影响磁盘的预读,过大可能导致数据库相关业务性能下降,磁盘I/O上升。

  • 如果您遇到此类问题,建议调整回128。

/sys/module/virtio_net/parameters/napi_tx

开启

  • 该参数会影响virtio_net的发送队列是否使用napi机制。

  • 在某些极端benchmark场景下,启用该参数会导致TCP报文无法聚合,从而降低benchmark的跑分结果。

  • 可在内核cmdline中增加virtio_net.napi_tx=0来关闭该参数。

内核cmdline

cmdline

CentOS 7 x86

Alibaba Cloud Linux 3 x86 & Arm64

说明

cgroup.memory=nokmem

关闭

开启

该参数用于禁用对kernel memory的cgroup审计和限制功能,开启该参数有助于提升系统性能。更多信息,请参见龙蜥社区

  • CentOS:默认未配置该参数。

  • Alibaba Cloud Linux 3:默认已配置该参数。

crashkernel=auto

开启

关闭

该参数用于自动计算kdump kernel预留内存的大小。

  • CentOS:默认已配置该参数。

  • Alibaba Cloud Linux 3:默认未配置该参数。Alibaba Cloud Linux 3已在镜像中预先配置好 crashkernel的预留内存大小,因此该差异无影响。

net.ifnames=0

开启

开启

该参数用于配置网络接口的命名规则为传统模式(例如:eth0,eth1),关闭systemd的可预测的网络接口功能。

CentOS与Alibaba Cloud Linux均默认已配置该参数,表示配置为传统模式。

说明

网络接口命名变更很容易对兼容性造成影响。更多信息,请参见出错提示“Unsupported network configuration”

内核Kconfig

说明

内核Kconfig差异较多,本文仅给出重要的内核Kconfig差异说明。

Kconfig

CentOS 7 x86

Alibaba Cloud Linux 3 x86

Alibaba Cloud Linux 3 Arm64

说明

CONFIG_NR_CPUS

5120

1024

1024

支持最大CPU数量。

目前阿里云上并无超过1024核的实例,该差异无影响。

CONFIG_NODES_SHIFT

10

6

6

支持最大NUMA数量。

目前阿里云上并无超过64个NUMA节点的实例,该差异无影响。

CONFIG_PREEMPT_NONE

is not set

y

is not set

内核抢占模式。

none模式在云上能获取更好的性能,但Arm64由于历史原因没有做调整。

Alibaba Cloud Linux 3将在5.10.134-17内核支持以cmdline的方式动态调整默认抢占模式。

CONFIG_PREEMPT_VOLUNTARY

y

is not set

y

CONFIG_BTRFS_FS

m

is not set

is not set

Alibaba Cloud Linux 3不支持btrfs文件系统,推荐使用ext4或xfs文件系统。