| 项目 | Ubuntu 25.x (假设为 2025 LTS 或 Rolling) | CentOS 7 |
|---|---|---|
发行模式 |
Debian 系 Rolling / LTS(每 2 年 LTS) |
RHEL 复刻,传统稳定分支(已停止维护:2024-06 EOL) |
内核主线 |
6.x+(持续跟进主线,支持新硬件特性) |
3.10(长期冻结,缺少新驱动/安全补丁) |
包管理 |
|
|
生命周期 |
LTS 5 年+扩展安全维护(ESM) |
2024-06 官方 EOL,无安全更新 |
生态活跃度 |
高(云原生、容器优先) |
低(进入遗留系统维护阶段) |
默认初始化 |
systemd(Ubuntu 15.04+) |
systemd(CentOS 7 初始引入) |
SRE 视角:
选型差异 ├─ 发行策略 │ ├─ Ubuntu: 快速迭代,拥抱上游内核/用户态 │ └─ CentOS 7: RHEL 稳定优先,冻结特性集 ├─ 生命周期管理 │ ├─ Ubuntu LTS: 明确 ESM 路线,商业支持延续 │ └─ CentOS 7: 项目终止,社区迁移至 Rocky/Alma ├─ 生态与工具链 │ ├─ Ubuntu: Snap/Flatpak + 最新 GCC/Python/OpenSSL │ └─ CentOS 7: 旧版编译器/解释器,兼容性优先 └─ 安全响应 ├─ Ubuntu: 自动安全更新 + Livepatch(商业) └─ CentOS 7: 手动打补丁或无更新
以下示例适用于 Ubuntu 25.04
# 查看发行版信息 lsb_release -a cat /etc/os-release # 内核与架构 uname -r uname -m # 资源概况 free -h df -h uptime
# 更新索引 sudo apt update # 升级系统 sudo apt upgrade sudo apt full-upgrade # 处理依赖变化 # 安装软件 sudo apt install nginx # 搜索包 apt search <keyword> # 删除软件 sudo apt remove --purge nginx
# 查看状态 systemctl status nginx # 启动/停止/重启 sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx # 开机自启 sudo systemctl enable nginx sudo systemctl disable nginx
# 添加用户 sudo adduser deploy sudo usermod -aG sudo deploy # SSH 密钥登录 mkdir -p /home/deploy/.ssh echo "ssh-rsa AAAAB3..." >> /home/deploy/.ssh/authorized_keys chmod 600 /home/deploy/.ssh/authorized_keys chown -R deploy:deploy /home/deploy/.ssh
配置文件位于 /etc/netplan/*.yaml,例如 00-installer-config.yaml。
network:
version: 2
ethernets:
ens34:
dhcp4: no
addresses:
- 192.168.1.71/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 223.5.5.5
- 114.114.114.114
ens35:
dhcp4: no
addresses:
- 192.168.31.71/24
optional: true
应用配置:
sudo netplan apply # 调试 sudo netplan --debug apply
network:
version: 2
ethernets:
ens33:
dhcp4: yes
sudo ip addr add 192.168.1.71/24 dev ens34 sudo ip route add default via 192.168.1.1 sudo resolvectl dns ens34 8.8.8.8
⚠️ 注意:临时改动重启失效,需写入 Netplan 才能持久化。
ip a # 接口与 IP ip r # 路由表 nmcli device status # NetworkManager 状态(如使用) ping -c 4 8.8.8.8 traceroute 8.8.8.8 dig www.ubuntu.com ss -tuln # 监听端口
sysctl+ systemd-sysctl)创建 /etc/sysctl.d/99-ubuntu25-performance.conf
# 网络吞吐与延迟 net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 net.ipv4.tcp_rmem = 4096 87380 134217728 net.ipv4.tcp_wmem = 4096 65536 134217728 net.ipv4.tcp_congestion_control = bbr net.core.netdev_max_backlog = 250000 net.core.somaxconn = 65535 # 内存管理 vm.swappiness = 10 vm.dirty_ratio = 15 vm.dirty_background_ratio = 5 # 文件系统 fs.file-max = 2097152 fs.nr_open = 2097152
生效:
sudo sysctl --system
# 持久化:创建 systemd unit 或 cpufrequtils sudo apt install -y cpufrequtils echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils sudo systemctl restart cpufrequtils
sudo modprobe zram num_devices=1 echo lz4 > /sys/block/zram0/comp_algorithm echo 8G > /sys/block/zram0/disksize mkswap /dev/zram0 swapon -p 100 /dev/zram0
systemd-zram-generator(Ubuntu 25 已内置配置)。1.调度器选择(SSD/NVMe 推荐 none或 kyber):
echo none | sudo tee /sys/block/nvme0n1/queue/scheduler
2.队列深度与 nr_requests:
echo 512 | sudo tee /sys/block/nvme0n1/queue/nr_requests
3.挂载选项(ext4 示例):
UUID=xxxx /data ext4 defaults,noatime,discard,commit=60 0 2
noatime:减少写操作discard:TRIM 支持 SSDcommit=60:减少日志同步频率(风险可控场景)1.网卡多队列 IRQ 亲和性(以 ens33为例):
sudo ethtool -L ens33 combined 8 # 8 队列
# 绑定脚本
#!/bin/bash
IRQ_LIST=$(grep eth0 /proc/interrupts | awk '{print $1}' | sed 's/://')
CORE=0
for IRQ in $IRQ_LIST; do
echo $CORE > /proc/irq/$IRQ/smp_affinity_list
CORE=$((CORE + 1))
done
2.DNS 缓存优化:
sudo vim /etc/systemd/resolved.conf # 设置 Cache=yes CacheTTLSec=300
生效
sudo systemctl restart systemd-resolved
# 并行启动最大化 sudo mkdir -p /etc/systemd/system.conf.d echo 'DefaultTimeoutStartSec=10s' | sudo tee /etc/systemd/system.conf.d/timeout.conf echo 'DefaultDependencies=no' >> /etc/systemd/system/<critical-service>.service
cups, avahi-daemon(视场景而定)。CONFIG_CGROUP_V2,Docker/Podman 默认利用 unified hierarchy,提升资源隔离粒度。kubelet --allowed-unsafe-sysctls或 DaemonSet 设置 Pod 内 sysctl。overlay2+ ftype=1xfs,减少容器启动 IO 开销。sudo systemctl status nftables sudo nft list ruleset
创建 /etc/nftables.conf:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# 允许环回
iif "lo" accept
# 允许已建立的连接
ct state established,related accept
# 允许 ICMP
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# 允许 SSH
tcp dport 22 accept
# 允许 HTTP/HTTPS
tcp dport { 80, 443 } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
启用:
sudo systemctl enable nftables sudo systemctl start nftables
sudo nft add rule inet filter input tcp dport 8080 accept
保存规则(Ubuntu 25):
sudo nft list ruleset > /etc/nftables.conf