wangbin
  • wangbin
  • 2018-12-16
  • IT

用mkswap、swapon命令给系统增加swap分区

一. 简介

双11的时候剁了搬瓦工家2G内存的优惠套餐,本想着这下运行任何程序都没问题了吧,结果gitlab安装最低要求4G内存上来就给了一巴掌.

算了,还好之前有了解过swap,这里记录下使用方法.

二. swap设置多大

我们知道硬盘的读写速度是没有RAM高的,而swap就是用硬盘的空间和RAM做交换,太多的交换会影响机器性能.

所以swap虽好,也不能设置过大,那我们一般要设置多大呢?

下面是redhat的建议值

Amount of RAM in the system Recommended swap space Recommended swap space if allowing for hibernation
⩽ 2 GB 2 times the amount of RAM 3 times the amount of RAM
> 2 GB – 8 GB Equal to the amount of RAM 2 times the amount of RAM
> 8 GB – 64 GB At least 4 GB 1.5 times the amount of RAM
> 64 GB At least 4 GB Hibernation not recommended

具体的参考这儿

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/storage_administration_guide/ch-swapspace

对于我们来讲,设置为内存大小的2倍吧,不多想.

三. 安装

swap空间可以是一个分区,也可以是一个文件,这里是/swap文件

# 关闭swap
swapoff /swap

# 创建4GB /swap文件
dd if=/dev/zero of=/swap bs=1M count=4096

# 将/swap文件变为swap
mkswap /swap

# 启动/swap
swapon /swap

重启后会发现swap不会自动生效,要启动时自动加载,执行下面

# 将/swap设置追加到/etc/fstab后面
echo "/swap swap swap defaults 0 0" >> /etc/fstab

四. 命令

查看当前swap

swapon -s

查看当前系统内存情况,也可以看到swap

free -m 

五. swappiness

cat /proc/sys/vm/swappiness
  1. 默认值是60
  2. swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间
  3. swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

如果我们想尽可能的不使用swap,可以将这个值修改为0.

重启系统后这个值会被重置,要永久修改的话,在/etc/sysctl.conf文件里添加

# /etc/sysctl.conf
vm.swappiness=10

六. 结尾

好了,这些应该够折腾的了.

参考:

  1. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/storage_administration_guide/ch-swapspace

  2. http://www.itpux.com/thread-1499-1-1.html

  3. http://www.wowotech.net/linux_kenrel/std_str_func.html