前言

最近有一次偶然的在尝试了一个新的云服务器提供商雨云(主要是价格很亲民诱人)。
一顿操作,在一次使用过程中习惯性看了下htop,结果发现这货居然没有默认的swap文件或者分区。
由于是为了测试贫穷买了1C1G的绝版货,很有可能跑几个服务就把内存给占满了。
htop无swap文件

那么问题来了,这可怎么办呢?此时我导如果在的话,一定一顿好打,服务器root权限在你手里,自己加呗。

开始动手

先看下free -m,的确是没有交换分区的

~# free -m
               total        used        free      shared  buff/cache   available
Mem:             957         513          81           1         361         296
Swap:              0           0           0

操作步骤
交换分区需要动分区表,比较麻烦。新版的linux都可以支持一个交换文件作为虚拟内存进行使用,这是小虎最近几年最喜欢的配置方式,所以这篇文章会介绍的就是这种方式。

操作方法

  1. dd命令写一个1GB的全0文件

    dd if=/dev/zero of=/var/swap bs=1M count=1024
  2. mkswap命令设置文件为swap,并修改权限

    mkswap -f /var/swap
    chmod 0600 /var/swap
  3. swapon标记挂载目标文件为交换文件

    swapon /var/swap

    此时再用free -m就可以看到已经有swap空间了
    交换分区文件

  4. 修改fstab自动挂载交换文件
    完成前面的1-3步,swap空间是开启了,但是重启以后还是配置会掉,因此我们需要配置fstab使得开机后自动挂载交换分区文件。
    使用vi或者任何你喜欢的编辑器编辑fstab配置文件,增加一行配置

    /var/swap swap swap defaults 0 0

    到这里重启以后也会默认挂载交换空间。

  5. 进阶的swappiness
    其实还有一个系统参数swappiness的值来设置内核的内存使用策略,这个值越大证明系统使用虚拟内存的策略就越激进(也就是越多)。默认CentOS/Redhat是0,Ubuntu是60。因此红帽系的小伙伴可能需要手动修改下swappiness的值。

    vi /etc/sysctl.conf
    vm.swappiness = 60

参考连接

  1. Linux环境下swap配置方法