ubuntu设置swap交换缓存

你这台 Ubuntu 14.04 系统目前是 没有启用交换分区/交换文件 的,所以 free -mh 里显示 交换:0Bsar -S 也全是 0。要启用 swap(交换缓存),需要手动添加。


一、创建交换文件(推荐方法)

  1. 创建一个 2G 的交换文件(可以根据内存大小决定,通常设为内存的 1~2 倍,但不要超过硬盘实际空间):

    sudo fallocate -l 2G /swapfile
    

    如果 fallocate 不支持,可以用 dd

    sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
    
  2. 设置权限

    sudo chmod 600 /swapfile
    
  3. 格式化为交换分区

    sudo mkswap /swapfile
    
  4. 启用 swap

    sudo swapon /swapfile
    
  5. 检查是否生效

    free -mh
    

    会显示有了 2G 的 Swap。
    你再执行:

    sar -S 1 5
    

    就会有 kbswpfree 数值了。

  6. 永久生效
    编辑 /etc/fstab,在文件最后添加一行:

    /swapfile   none    swap    sw    0   0
    

二、如果你有空闲磁盘分区

也可以用 mkswap 格式化一个分区(比如 /dev/sdb2),然后 swapon /dev/sdb2,并写入 /etc/fstab


三、调整内核交换策略(可选)

Linux 默认 尽量不用 swap,你可以通过 swappiness 调整:

cat /proc/sys/vm/swappiness

默认是 60(数值越高越倾向使用 swap)。
临时修改:

sudo sysctl vm.swappiness=10

永久修改:
编辑 /etc/sysctl.conf,添加:

vm.swappiness=10

保存后执行:

sudo sysctl -p

🔧 建议:


要不要我帮你写一份 Ubuntu 14.04 一键创建 + 启用 2G swap 的脚本(直接复制运行即可)?

👌 现在效果很清楚了:


你目前的状态


优化建议

  1. 调整 swappiness(控制 swap 使用倾向)
    目前系统的默认值应该是 60
    你内存比较小(1.8 G),建议设低一些,避免过早 swap:

    echo 10 | sudo tee /proc/sys/vm/swappiness
    

    永久生效:在 /etc/sysctl.conf 里加:

    vm.swappiness=10
    

    然后:

    sudo sysctl -p
    
  2. 设置 cache 压缩(可选)
    如果升级到较新内核,可以考虑用 zram 压缩 swap,性能更好。不过你现在是 5.4 内核,已经支持 zram,可以配置 /dev/zram 来当 swap。

  3. 监控 swap 使用情况

    • 查看 swap 使用情况:

      swapon -s
      
    • 结合内存监控:

      vmstat 1
      

      如果 si/so(swap in/out)经常不为 0,就说明 swap 压力大了。


⚡ 总结:

要不要我给你写一个 一键设置 swappiness + 开机启用 swap 检查的脚本,方便你服务器自动化维护?


Revision #2
Created 5 September 2025 01:07:16 by Admin
Updated 5 September 2025 01:12:41 by Admin