CentOS Swap升级和维护建议
小樊
33
2025-12-27 04:29:22
CentOS 交换空间升级与维护建议
一 容量规划与选型
- 选型建议:交换空间既可以是交换分区也可以是交换文件。分区适合长期稳定容量;文件更灵活易调整,推荐在需要动态调整时使用。
- 容量建议(按内存与工作负载):
- ≤4GB RAM:Swap ≈ 2×RAM(如 4GB → 8GB)
- 4–8GB RAM:Swap ≈ 1×RAM
- 8–64GB RAM:固定 8GB(覆盖大多数中等负载)
- 64–256GB RAM:固定 16GB(避免大内存过度配置)
- 内存密集型服务(如数据库):Swap 不宜过大,建议≤4GB,以减少磁盘 I/O 引发的性能劣化
- 场景提示:在SSD上启用 Swap 能显著提升速度,但应关注写入寿命;在部分云主机环境中,出于可靠性与磨损考虑,建议默认关闭 Swap,仅在必要时启用。
二 扩容与变更操作
- 交换文件(推荐用于扩容/迁移)
- 创建文件(示例 4GB):
sudo fallocate -l 4G /swapfile(如系统不支持 fallocate,可用 dd if=/dev/zero of=/swapfile bs=1M count=4096)
- 安全权限:
sudo chmod 600 /swapfile
- 初始化:
sudo mkswap /swapfile
- 启用:
sudo swapon /swapfile
- 持久化:在 /etc/fstab 添加
/swapfile none swap sw 0 0
- 验证:
free -h、swapon --show
- 交换分区(适合固定容量)
- 关闭现有交换:
sudo swapoff -a
- 使用 fdisk/parted 创建新分区(类型设为 Linux swap)
- 初始化:
sudo mkswap /dev/sdXY
- 启用:
sudo swapon /dev/sdXY
- 持久化:在 /etc/fstab 添加
/dev/sdXY swap swap defaults 0 0
- 验证:
free -h、swapon --show
- 调整优先级(多交换源时)
- 查看:
swapon --show
- 设置:
sudo swapon -p 10 /swapfile(数值越大优先级越高)
- 在线扩容要点
- 交换文件:先
swapoff,按上法重建为更大文件后 swapon
- 交换分区:需离线调整分区大小(风险较高),或新增分区后启用并设置更高优先级
- LVM 场景
- 可创建/扩展 swap 逻辑卷,然后
mkswap 与 swapon,并在 /etc/fstab 持久化
三 性能与稳定性优化
- 调整内核 swappiness(默认通常为 30)
- 临时:
sudo sysctl vm.swappiness=10
- 永久:在 /etc/sysctl.conf 写入
vm.swappiness=10,执行 sudo sysctl -p
- 建议:多数 CentOS 服务器设为 10–30,在内存充足时尽量减少磁盘 Swap 使用以降低延迟
- 启用 Zram(内核压缩内存块设备)
- 安装:
sudo yum install zram-config
- 启动:
sudo systemctl start zram-config
- 适用:内存较小或高 I/O 场景,减少对磁盘 Swap 的依赖
- 脏页写回调优(降低抖动)
- 在 /etc/sysctl.conf 添加:
vm.dirty_ratio=10、vm.dirty_background_ratio=5,执行 sudo sysctl -p
- I/O 调度与调度器选择
- 对机械盘优先 deadline;对 SSD 可用 none/mq-deadline,减少写放大与抖动
- NUMA 感知(大内存/多路 CPU)
- 尽量让 Swap 与内存访问同 NUMA 节点,降低跨节点访问开销
四 监控 维护与故障排查
- 日常监控
- 容量与占用:
free -h
- 启用与优先级:
swapon --show
- 进程级占用:
cat /proc/*/smaps | awk '/Swap/{sum+=$2} END{print "Total Swap:", sum/1024, "MB"}'(或借助 smem)
- 系统整体:
vmstat 1、top/htop
- 维护与恢复
- 临时关闭/恢复:
sudo swapoff -a / sudo swapon -a(变更 /etc/fstab 前务必验证)
- 清理与复位:在维护窗口执行
swapoff → swapon,可促使内核清理无效页
- 变更前备份关键数据与 /etc/fstab 条目,变更后在重启前用
swapon -a 验证无语法错误
- 常见问题处理
- 新加 Swap 未生效:检查 /etc/fstab 路径、权限(应为 600)、是否执行
swapon
- 容量不足导致 OOM:优先增加物理内存或降低应用内存占用;必要时适度提高 Swap,但避免过大以免 I/O 抖动
- SSD 磨损担忧:在云环境或写入敏感场景,优先 Zram 或关闭 Swap,仅在必要时启用并控制使用