原文来自:https://zhuanlan.zhihu.com/p/106327686?utm_id=0

前言

最近发现服务器内存一直居高不下,想到之前看到的一篇文章说创建SWAP代替,这个方法有两种观点,一种是不支持的,觉得是拆东墙补西墙治标不治本,另一种是支持态度,觉得实际可以缓解内存吃紧的现象。

步骤

1. 确定当前没有开启 Swap

在终端使用命令 free -m 查看输出结果:

1
2
3
4
total              used       free     shared    buffers     cached
Mem: 1840 1614 226 15 36 1340
-/+ buffers/cache: 238 1602
Swap: 0 0 0

可以看到最后一行是0 0 0,则表示当前没有开启。

2. 创建 Swap 文件

使用下面命令创建交换文件。因为要分配硬盘空间,所以有可能比较慢,等待一会

1
dd if=/dev/zero of=/swapfile count=2048 bs=1M

count=2048 表示创建 2G 的虚拟内存,因为这里用到的单位是 M,如果要创建 6G 虚拟内存,则把2048 改成 6144 即可,因为 1024 * 6 = 6144。

可以使用 ls / | grep swapfile 命令查看一下,确保交换文件存在,创建成功。

3. 激活 Swap 文件

依次执行下面的命令

1
2
chmod 600 /swapfile
mkswap /swapfile

依次运行上面两个命令后,如果成功,将会看到类似下面的输出

1
2
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=ff3fc469-9c4b-4913-b653-ec53d6460d0e

4. 开启 Swap

1
swapon /swapfile

到这里,Swap 已经开启成功。我们再次使用 free -m 命令查看一下,你将看到类似下面的输出。

1
2
3
4
total       used       free     shared    buffers     cached
Mem: 1840 1754 86 16 23 1519
-/+ buffers/cache: 210 1630
Swap: 2047 0 2047

最后一行 Swap 将不再是0 0 0,而是我们上面设置的大小

5. 设置系统启动时自动开启 Swap

使用编辑器编辑 /etc/fstab 文件,添加 Swap 自动开启的配置,这里使用 Vim 进行编辑,也可以使用其他文本编辑工具,例如 nano

1
vim /etc/fstab

fstab 文件最后一行添加下面的内容

1
/swapfile none swap sw 0 0

然后保存,退出。

好了,现在 Swap 已经配置完,并且可以在系统启动时自动开启。

最后

其实创建swap不能说有用,它的原理好像需要在物理内存用完之后才会起作用。但是由于我硬盘空间用不完,所以创建这个试试看,毕竟自己试过才知道到底好不好。