swap 分区介绍

swap 分区中文名是交换分区,类似于 Windows 中的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况

添加 swap 分区

假设物理内存及 swap 分区空间不够或者没有 swap 分区,那么可以手动添加一个 swap 文件当做 swap 分区,也可以划分一个独立的磁盘分区当做 swap 分区,这里采用创建 swap 文件的方式添加 swap 分区

1
2
3
4
5
6
7
8
9
10
11
12
# 使用 fallocate 命令添加一个 10G 的 swap 文件(fallocate 命令并不会直接使用 10G 空间,只是预设,需要用的时候才增加)​
# swap 文件及路径可以自定义,这里在根目录下创建swapfile文件
$ sudo fallocate -l 10G /swapfile

# 修改文件权限
$ sudo chmod 600 /swapfile

# 格式化为 swap 分区
$ sudo mkswap /swapfile

# 启用新添加的swapfile
$ sudo swapon /swapfile

如果需要每次开机自动挂载 swapfile 交换文件,需要修改/etc/fstab 文件,在/etc/fstab 文件中添加如下内容(其中 UUID 对应的号码为使用 mkswap 格式化时输出的 UUID):

1
2
3
UUID=号码 none swap sw 0 0
# 或使用路径
/swapfile none swap sw 0 0

添加 swap 分区后内存快满未使用

检查 swappiness 内核参数(最常见原因),swappiness 的值(范围 0-100)决定了内核有多积极地将内存页交换到 Swap,越大越表示内核越积极地使用 swap 分区

  • 查看 swappiness
1
2
3
$ cat /proc/sys/vm/swappiness
# 或
$ sysctl vm.swappiness
  • 修改 swappiness
1
2
3
4
5
6
7
8
# 临时修改,重启后恢复
$ sudo sysctl vm.swappiness=60
# 永久修改
$ sudo vim /etc/sysctl.conf
# 添加如下内容,其中swappiness值根据需要修改
vm.swappiness=60
# 使新修改生效
$ sudo sysctl -p

参考:
ubuntu22.04 添加/删除/调整 swap 交换分区或 swap 交换文件
在 Ubuntu 中创建、删除和调整 SWAP 空间 – FWERKOR 博客
Linux 中 Swap 交换分区设置教程,以及 Swap 大小与内存的关系
Swap 分区 - guanyubo - 博客园
“Ubuntu 系统如何扩大 swap 分区?”点击查看元宝的回答
https://yb.tencent.com/s/gpIHNhNVVpNg