在 Linux 中,Swap 分区相当于 Windows 的虚拟内存,如果 VPS 内存较小可以添加 Swap,把硬盘当内存用。
注意:OpenVZ 无法自行添加 Swap 分区。
一. 检查 Swap 空间
swapon -s
如果返回的信息为空,则表示 Swap 文件不存在,可以添加。
二. 创建并允许 Swap 文件
dd if=/dev/zero of=/home/swapfile bs=1024 count=1024k
参数解读:
if=文件名:输入文件名。即指定源文件。
of=文件名:输出文件名。即指定目的文件。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。
三. 格式化并激活 Swap 文件
- 格式化 Swap。
mkswap /home/swapfile
- 激活 Swap。
swapon /home/swapfile
以上步骤做完,再次运行命令:
swapon -s
返回信息如下:
Filename Type Size Used Priority
/home/swapfile file 1048572 0 -1
证明 Swap 分区初步配置完成。
四. 配置 fstab 开机挂载
配置 fstab 后可实现开机自动挂载 Swap 分区的功能。
用 vim 打开 /etc/fstab 文件,
sudo vim /etc/fstab
在其最后添加如下一行:
/home/swapfile swap swap defaults 0 0
然后输入:w
回车保存并退出。
最后,赋予 Swap 文件适当的权限:
chown root:root /home/swapfile
chmod 600 /home/swapfile
五. 配置 swappiness (可选)
此外,我们还可以通过修改 Swap 的 swappiness 参数来控制 Linux 使用 Swap 的程度。
- swappiness=0 时,系统积极使用物理内存,物理内存不足后才使用 Swap 空间。
- swappiness=100 时,系统积极的使用 Swap 分区,并且把内存上的数据及时的搬运到 Swap 空间里面。
在 CentOS/Ubuntu 中,swappiness 的值可以通过以下命令可以看到:
cat /proc/sys/vm/swappiness
返回值为60。
我们可以调整 swappiness 的值到一个合适的参数,从而达到最优化使用 Swap 的目的。这里我们可以将其设为10。
- 临时修改:
使用 sysctl 命令
sysctl vm.swappiness=10
重启系统后会恢复默认值。 - 永久设置:
在 vim 中修改sysctl.conf:
sudo vim /etc/sysctl.conf
在文档的最后加上如下一行:
vm.swappiness=10
输入:x,保存退出 vim 。
六. 总结
把以下命令敲一遍即可添加好 Swap 分区。
swapon -s
dd if=/dev/zero of=/home/swapfile bs=1024 count=1024k
mkswap /home/swapfile
swapon /home/swapfile
配置开机挂载:
sudo vim /etc/fstab
/*最后一行添加*/
/home/swapfile swap swap defaults 0 0
设置权限
chown root:root /home/swapfile
chmod 600 /home/swapfile
配置 swappiness (可选)
sudo vim /etc/sysctl.conf
/*最后一行添加*/
vm.swappiness=10
/*保存退出即可。*/
七. 参考链接
https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-6
http://www.cmsky.com/linux-add-swap/