CentOS 7停止维护EOL(End of Life)后,您可以选择将CentOS 7迁移至Alibaba Cloud Linux 3。迁移前可以通过本文了解Alibaba Cloud Linux 3与CentOS 7有哪些区别。
关于CentOS EOL的应对方案,请参见CentOS EOL应对方案。
各操作系统在官方平台公布的生命周期计划,请参见操作系统维护周期。
内核及核心工具链区别
组件 | 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上 |
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 | |
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 | 在执行 |
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的值)秒自动重启。
| 无 |
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 | 读写权限变更。 该选项原本支持读取上次写入的值的行为误导用户该选项是设置系统到非缓存模式,而非发起一次清除缓存的任务。为防止误解,去掉了该开关的读权限。 |
|
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社区版本迭代,已不需要用户手动控制。 |
|
net.ipv4.tcp_mem | 无 | rw | 无 | rw | 该选项由3个整型的值(low, pressure, max)组成,分别代表:
该选项的默认值与系统内存大小紧密相关,但在同样的内存规格上您会观察到Alibaba Cloud Linux 3上缓冲区大小相比CentOS 7小一半左右,这是Linux社区版本迭代调整了默认值的初始化算法导致的。 |
|
net.ipv4.tcp_fastopen | 0 | rw | 1 | rw | 随Linux社区版本调整默认值。 该选项用于控制系统是否支持发送和接收TCP Fast Open相关报文。
|
|
net.ipv4.tcp_fack | 1 | rw | 0 | rw | 随Linux社区版本迭代而失效。 用于支持TCP FACK特性,该特性已被RACK特性替代,因此在Alibaba Cloud Linux 3上已失效。 |
|
net.core.somaxconn | 128 | rw | 4096 | rw | 随Linux社区版本而调整默认值。 该选项用于控制socket监听队列的最大长度,128已无法满足现代服务器的需求,故调整为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进行检测,故该功能失效。 |
|
kernel.random.read_wakeup_threshold | 64 | rw | 随Linux社区版本迭代被移除。 |
|
kernel.compat-log | 1 | rw | 随Linux社区版本迭代被移除。 在x86 64位架构上不支持虚拟8086模式,如果配置了该选项,则调用vm86old()和vm86()时会打印warning日志。由于该warning并不是必要的,所以后续被移除了,此选项也一并被移除。 |
|
kernel.numa_balancing_settle_count | 4 | rw | 随Linux社区版本迭代被移除。 Linux对不同类型的任务分别采用更科学的指标区分负载,从而不再需要该选项来管控频率的阈值。 |
|
kernel.sched_shares_window_ns | 10000000 | rw | 随Linux社区版本迭代被移除,该功能在CentOS 7上已失效。 |
|
kernel.sched_time_avg_ms | 1000 | rw | 随Linux社区版本迭代被移除。 由于Linux对RT调度类采用PELT负载跟踪算法,从而抛弃旧算法及相关参数,该参数则是其中之一。 |
|
vm.hugepages_treat_as_movable | 0 | rw | 随Linux社区版本迭代被移除。 该配置项本意是允许从 ZONE_MOVABLE区域分配不可迁移的大页,以减少内存碎片,但该功能目前已严重影响内存热插拔,所以被移除。 |
|
vm.nr_pdflush_threads | 0 | r- | 随Linux社区版本迭代被移除,该功能在CentOS 7上已失效。 |
|
net.ipv4.tcp_tw_recycle | 0 | rw | 随Linux社区版本迭代被移除。 该配置项允许处于TIME-WAIT的socket被快速回收。由于在实现上假设远端同一地址的时间戳是单调递增的,而NAT和TCP时间戳随机漂移特性已打破该假设,导致该功能无法正常使用,故被移除。 |
|
net.ipv4.tcp_thin_dupack | 0 | rw | 随Linux社区版本迭代被移除,该功能已被TCP RACK特性替代。 |
|
net.ipv4.tcp_max_ssthresh | 0 | rw | 随Linux社区版本迭代被移除。该配置项本意是用于人工调整TCP慢启动速度的,但目前已被更有效且更加自动化的方式替代,故移除。 |
|
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 |
|
/sys/module/virtio_net/parameters/napi_tx | 无 | 开启 |
|
内核cmdline
cmdline | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 & Arm64 | 说明 |
cgroup.memory=nokmem | 关闭 | 开启 | 该参数用于禁用对kernel memory的cgroup审计和限制功能,开启该参数有助于提升系统性能。更多信息,请参见龙蜥社区。
|
crashkernel=auto | 开启 | 关闭 | 该参数用于自动计算kdump kernel预留内存的大小。
|
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文件系统。 |