有时候我们机器的内存不够时,就可以通过创建 Swap 分区来缓解这种尴尬场面,Linux 下的 Swap (交换分区)相当于 Windows 下的”虚拟内存”,当系统内存不够时,把一部分硬盘空间虚拟成内存使用,从而解决内存不够用的情况。下面介绍下 Linux 如何创建和增加 Swap 分区。
一、添加 Swap 分区
1.查看 Linux 当前分区情况:
free -m
如果是增加 swap 分区,则先把当前所有分区都关闭了:
swapoff -a
可能遇到的问题:《解决 swapoff failed: Cannot allocate memory 无法关闭分区的问题》
2.创建要作为 Swap 分区文件(其中 /var/swapfile
是文件位置,bs*count
是文件大下,例如以下命令就会创建一个 4G 的文件):
dd if=/dev/zero of=/var/swapfile bs=1M count=4096
3.建立 Swap 的文件系统(格式化为 Swap 分区文件):
mkswap /var/swapfile
4.启用 Swap 分区:
swapon /var/swapfile
5.查看 Linux 当前分区:
free -m
如果有 Swap 就说明创建成功了:
6.设置开启启动,在 /etc/fstab 文件中加入一行代码:
/var/swapfile swap swap defaults 0 0
二、总结
虽然我给小内存的服务器都加了 Swap 分区,但是好像效果不明显,不知道是不是自己操作的问题,按道理“在系统内存不够时,把一部分硬盘空间虚拟成内存使用”应该能解决我内存不够用的情况,但往往不够用的时候好像还是卡,所以经济条件允许直接升级配置吧。
2021 年更新:
之前觉得 Swap 分区设置了用处不大,后来发现好像是 Swap 分区大小设置的问题。
那么 Swap 分区应该设置多大呢?在 Red Hat Enterprise Linux 中,以下是设置合适的交换分区大小的规则:
物理内存 交换分区(SWAP)
- <= 4g 至少 4G
- 4~16G 至少 8G
- 16G~64G 至少 16G
- 64G~256G 至少 32G
前后对比可以参考:《Linux 中交换空间 Swap 应该设置多大?与内存大小的关系整理》