很多时候我们需要配置 swap 主要的原因是物理内存太贵了, 服务器也是一样, 当内存不够用时, 系统会卡死, 因此我们宁愿牺牲一点性能也要让系统正常运行。 当然, 在系统物理内存足够的条件下, 建议关闭 swap, 内存运行速度远大于硬盘, 而 swap 实际上在硬盘上分配一些空间来充当内存的作用。

博主博客

一、建立 swap 区

1.1 创建 swapfile 文件

比如我在 /opt 文件夹创建一个 4G 名称叫 swapfile 的 swap 区。
下面 3 句随便选一句就行。

dd if=/dev/zero of=/opt/swapfile bs=1024 count=4194304
dd if=/dev/zero of=/opt/swapfile bs=1M count=4096
dd if=/dev/zero of=/opt/swapfile bs=1G count=4

1.2 格式化 swapfile 文件

mkswap -f /opt/swapfile

1.3 挂载 swapfile 文件

swapon /opt/swapfile

1.4 查看是否生效

  • free -hfree -m 可以看到内存和 swap 使用情况。
  • swapon -scat /proc/swaps 可以看到大小和位置。
[root@nukixPC ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.7Gi       1.0Gi       261Mi        15Mi       515Mi       616Mi
Swap:         5.0Gi       183Mi       4.8Gi

[root@nukixPC ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/vda2                              	partition	1047548	187480	-2
/opt/swapfile                              	file    	4194300	0	-3

[root@nukixPC ~]# cat /proc/swaps
Filename				Type		Size		Used		Priority
/dev/vda2                               partition	1047548		187480		-2
/opt/swap                               file		4194300		0		-3

1.5 开机启用

添加到 /etc/fstab

vim /etc/fstab

在文本最后添加

/opt/swapfile swap swap defaults 0 0

二、其他相关命令

2.1 卸载 swap

swapoff /opt/swapfile

2.2 即时查看 CPU、内存、swap 使用情况

top

三、swappiness 说明

在 Linux 里面 swappiness 用来控制什么时候才使用 swap 分区。
比如 swappiness=60 则 内存使用到 100-60=40% 的时候就会开始使用 swap 区。

  • swappiness=0 使用物理内存, 几乎不使用 swap 区。
  • swappiness=100 使用物理内存的同时积极使用 swap 区。

3.1 查看 swappiness

cat /proc/sys/vm/swappiness

3.2 临时修改 swappiness

sysctl vm.swappiness=60

3.3 永久修改 swappiness

打开文件 /etc/sysctl.conf

vim /etc/sysctl.conf

在文件末尾加上

vm.swappiness=60

立即生效(或者重启生效)

sysctl -p