温馨提示×

CentOS Swap如何提高效率

小樊
39
2025-12-27 04:27:18
栏目: 智能运维

CentOS 上提升 Swap 效率的实用方案

一 基础配置与容量规划

  • 优先使用Swap 文件(便于按需调整),也可使用Swap 分区。创建示例:
    • 创建文件: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”
  • 容量建议(按内存与工作负载):
    • ≤4GB RAM:2×RAM(如 4GB → 8GB)
    • 4–8GB RAM:=RAM
    • 8–64GB RAM:固定 8GB
    • 64–256GB RAM:固定 16GB
    • 内存密集型服务(如数据库)建议 Swap 不超过 4GB,避免磁盘 I/O 放大导致性能劣化。

二 关键内核参数调优

  • 降低换出倾向(提升前台响应):
    • 查看:cat /proc/sys/vm/swappiness
    • 临时:sudo sysctl vm.swappiness=10
    • 永久:在 /etc/sysctl.conf 写入“vm.swappiness=10”,执行 sudo sysctl -p
    • 多数服务器建议范围:10–30
  • 控制脏页回写(减少抖动与突发写盘):
    • /etc/sysctl.conf 添加:
      • vm.dirty_ratio=10
      • vm.dirty_background_ratio=5
    • 执行:sudo sysctl -p
  • 文件系统缓存压力(可选):适度降低 vm.vfs_cache_pressure,保留更多目录/索引节点缓存,降低因回收引发的不必要换出。

三 使用 Zram 与 Zswap 降低磁盘压力

  • Zram(内存内压缩块设备,优先使用):
    • 安装与启用:sudo yum install -y zram-config;sudo systemctl start zram-config
    • 可按需配置大小(如设置 ZRAM_DEVICE_SIZE=4G 于 /etc/zram-config.conf)
    • 适合内存较小或高 I/O 场景,能显著减少对物理 Swap 的依赖
  • Zswap(内核级压缩缓存,作为磁盘 Swap 的前置层):
    • 适用于希望保留磁盘 Swap 作为兜底、同时降低实际写入量的场景
    • 与 Zram 可二选一或协同使用(取决于内核与发行版支持)。

四 放置位置与优先级策略

  • 存储介质选择:
    • SSD 上 Swap 速度明显优于 HDD,但应关注写入寿命;在老化 SSD云主机上,建议谨慎启用或尽量减小 Swap,必要时可关闭
  • 多 Swap 优先级:
    • 通过 swapon 的 –priority 设置优先级,优先使用更快的介质(如 Zram 或高性能 SSD)
    • 示例:sudo swapon --priority 32767 /dev/sdX(数值越大优先级越高)
  • 场景化建议:
    • 内存充足且稳定性优先:可仅保留少量 Swap或仅启用 Zram
    • 内存紧张且允许一定磁盘 I/O:使用 SSD-backed Swap 并配合较低 swappiness 与 Zram 分层。

五 监控与维护

  • 常用观测:
    • 内存与 Swap:free -h
    • Swap 启用与优先级:swapon --show
    • 实时与历史:top/htop、vmstat、iostat
  • 维护与排障:
    • 动态调整后验证:watch -n 1 free -h
    • 临时停用/启用以清理无效页:sudo swapoff -a && sudo swapon -a(维护窗口内执行,避免业务抖动)
    • 容量不足时优先增加 Swap 文件或调整优先级,再考虑重分区
    • 变更前做好备份与压测,逐步应用到生产。

0