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檔案系統。 |