关于 Swap 分区的那些事。
Swap 分区
什么是 Swap 分区
说白了就是在内存不足时,将硬盘的一部分空间作为内存使用(扩展内存),同时在休眠时,能够将状态保存至该分区中(页面文件)。
是否要开启 Swap 分区
这个问题没有确切的答案,一般来说如果 RAM 大于 4GB 就无需分配 Swap ;小于 4GB 时根据实际情况判断是否要分配。
而根据 Ubuntu 官方的建议:
- 若 RAM ≤ 1GB ,则 Swap 应为 1GB 或更大;
- 若 RAM > 1GB ,则 Swap 应为 RAM 大小的平方根,最大值为 RAM 的两倍;
- 若还需启用休眠,则 Swap 交换大小应该等于 RAM 的大小加上 RAM 大小的平方根。
一般来说公有云上面会默认关闭 Swap 。
启用 Swap
- 查看当前 Swap 状态:
1 | root@lxnchan-testbench-v33:~# free |
此时可以看到,Swap
行显示的值为0
,证明当前并未开启Swap;否则则是当前已经开启了Swap,若需要调整大小需要先禁用后再重新开启。
- 创建 Swap 镜像:
创建镜像文件:
1 | dd if=/dev/zero of=swap.img count=4096 bs=1M |
其中count
参数代表镜像容量,单位为MB;swap镜像的创建位置可以是任意的,但建议放在根目录。
- 启用 Swap :
1 | chmod 600 swap.img |
执行完上述两条命令后应有返回值如下:
1 | Setting up swapspace version 1, size = 4194296 KiB |
代表Swap镜像激活成功,此时执行如下命令启用Swap:
1 | swapon swap.img |
此时再查看内存状态:
1 | root@lxnchan-testbench-v33:~# free -h |
开机自动启用 swap
打开/etc/fstab
文件,在该文件末尾添加一行:
1 | /root/swap.img none swap sw 0 0 |
其中第一个参数应该填写swap
镜像的物理位置(绝对路径)。
禁用 Swap
执行如下命令禁用 Swap:
1 | swapoff -a |
若还添加了开机自动启用还需要注释掉对应的行。