温馨提示×

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,仅在必要时启用。

二 扩容与变更操作

  • 交换文件(推荐用于扩容/迁移)
    1. 创建文件(示例 4GB):sudo fallocate -l 4G /swapfile(如系统不支持 fallocate,可用 dd if=/dev/zero of=/swapfile bs=1M count=4096
    2. 安全权限:sudo chmod 600 /swapfile
    3. 初始化:sudo mkswap /swapfile
    4. 启用:sudo swapon /swapfile
    5. 持久化:在 /etc/fstab 添加 /swapfile none swap sw 0 0
    6. 验证:free -hswapon --show
  • 交换分区(适合固定容量)
    1. 关闭现有交换:sudo swapoff -a
    2. 使用 fdisk/parted 创建新分区(类型设为 Linux swap
    3. 初始化:sudo mkswap /dev/sdXY
    4. 启用:sudo swapon /dev/sdXY
    5. 持久化:在 /etc/fstab 添加 /dev/sdXY swap swap defaults 0 0
    6. 验证:free -hswapon --show
  • 调整优先级(多交换源时)
    • 查看:swapon --show
    • 设置:sudo swapon -p 10 /swapfile(数值越大优先级越高)
  • 在线扩容要点
    • 交换文件:先 swapoff,按上法重建为更大文件后 swapon
    • 交换分区:需离线调整分区大小(风险较高),或新增分区后启用并设置更高优先级
  • LVM 场景
    • 可创建/扩展 swap 逻辑卷,然后 mkswapswapon,并在 /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=10vm.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 1top/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,仅在必要时启用并控制使用

0