Skip to content

一、什么是 SWAP?

SWAP 是一种虚拟内存机制,当物理内存不足时,Linux 内核会将一部分数据暂时移出到硬盘上的一个特殊区域,这个区域就是 SWAP 空间。SWAP 可以是硬盘上的一个文件或一个专用的分区。

二、SWAP 的作用

  1. 内存不足时的扩展:当系统的物理内存被占满,SWAP 可以作为额外的内存空间。
  2. 进程休眠:当某个进程暂时不需要执行但又不能被完全删除时,其内存内容可以被移到 SWAP 中,释放物理内存给更活跃的进程使用。
  3. 内存管理辅助:操作系统可以利用 SWAP 进行内存页的换入换出操作,优化内存使用效率。

三、SWAP 的配置方法

  • 创建 SWAP 文件

决定 SWAP 文件的大小,可以根据物理内存和实际用途来考虑。如果按照物理内存考虑的话,可以参考下面的建议

小于 2GB 的物理内存:建议 SWAP 空间的大小至少是物理内存的两倍。 2GB 至 8GB 的物理内存:SWAP 空间的大小可以设置为物理内存的 1.5 倍。 大于 8GB 的物理内存:SWAP 空间的大小通常设置为物理内存的大小,或者更小一些,例如 4GB 或 8GB。

例如创建1G的空间

建议方式(速度快)

shell
$ fallocate -l 1G /swapfile

或者使用 dd

shell
$ dd if=/dev/zero of=/swapfile bs=1M count=1024
  • 设置权限
shell
$ chmod 600 /swapfile
  • 格式化
shell
$ mkswap /swapfile
  • 启用 SWAP
shell
$ swapon /swapfile
  • 设置开机启动

编辑 /etc/fstab 文件,添加以下行以确保 SWAP 在系统启动时自动启用。

/swapfile none swap defaults 0 0

执行以下脚本直接写入更方便

shell
$ echo "/swapfile none swap defaults 0 0" >> /etc/fstab

四、调整 SWAP 使用策略

通过调整 /proc/sys/vm/swappiness 文件中的值,可以控制 SWAP 的使用倾向。值范围是 0 到 100。 该参数的含义可以理解为 “内存空间剩余多少时,开始使用swap”

  • 查看该值
shell
$ cat /proc/sys/vm/swappiness
  • 临时调整,重启失效
shell
$ sysctl vm.swappiness=10
  • 永久调整

编辑 /etc/sysctl.conf, 添加或修改 vm.swappiness = 10,然后执行以下命令使更改生效即可

shell
 $ sysctl -p

五、修改SWAP 的大小

可以先取消挂载,然后删除文件后重新创建,重新挂载即可。

  • 取消挂载
shell
$ swapoff /swapfile