前情提示

centos6;

1C2G1M;

1
2
3
4
5
6
7
8
9
#sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -m
history | grep 'swap'

注意啦:

1
2
3
真正启用swap,还需要另一个,阿里云ECSLinux默认是没有开启swap虚拟分区的,但是腾讯云默认是60
查看
cat /proc/sys/vm/swappiness
1
2
3
4
5
6
vim /etc/sysctl.conf
vm.swappiness = 10
执行验证
sysctl -p
没有参数在最后一行加入即可
提示:在Linux系统中,可以通过查看/proc/sys/vm/swappiness内容的值来确定系统对SWAP分区的使用原则。当 swappiness内容的值为0时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当swappiness内容的值为100时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。查看修改前为0,需要在物理内存使用完毕后才会使用SWAP分区。
1
2
3
4
个人建议:
低于4G,60
高于8G,0
一般建议低于25,比如10

表 16.2. 推荐的系统 swap 空间

也有的是<=4用2倍,4-8=RAM

系统 RAM 容量 建议 swap 空间大小 允许休眠的建议 swap 空间大小
⩽ 2GB RAM 容量的两倍 RAM 容量的三倍
> 2GB – 8GB 与 RAM 容量相等 RAM 容量的两倍
> 8GB – 64GB 至少 4GB RAM 容量的 1.5 倍
> 64GB 至少 4GB 不建议使用休眠功能

重新更改swap大小

删除,再重建

1
2
3
4
5
6
7
8
9
10
swapoff -a
rm -rf /swapfile
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

#echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
#swapoff /swapfile #卸载swap文件
free -m

以下备份内容:

描述

SWAP分区介绍

在Linux系统中的SWAP(交换分区),类似于Windows系统的虚拟内存。系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到SWAP,以提高系统可用内存。

注:如果您使用普通云盘,不建议使用SWAP分区。如果是高效云盘或SSD云盘,可以根据实际情况使用SWAP分区。详情请参考参文档ECS实例使用须知。

SWAP配置介绍

  1. 以root用户身份,通过

    远程连接

    登录Linux实例,执行以下命令,创建用于交换分区的文件。

    1
    dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block

    注:block_sizenumber_of_block大小可以自定义,比如bs=1M count=1024代表设置1G大小SWAP分区。

  2. 执行以下命令,设置交换分区文件。

    1
    mkswap /mnt/swap

    img

  3. 执行以下命令,启用交换分区文件。

    1
    swapon /mnt/swap

    img

    img

    注:如果在/etc/rc.local中有swapoff -a需要修改为swapon -a

  4. 设置开机时自启用SWAP分区,需要修改文件

    1
    /etc/fstab

    中的SWAP行,添加以下代码。

    1
    /mnt/swap swap swap defaults 0 0

    img

    注:/mnt/swap路径可以修改,可以根据创建的SWAP分区文件具体路径来配置。

  5. 执行以下命令,临时修改

    1
    swappiness

    参数值,此处以空闲内存少于10%时才使用SWAP分区为例。

    提示:在Linux系统中,可以通过查看/proc/sys/vm/swappiness内容的值来确定系统对SWAP分区的使用原则。当 swappiness内容的值为0时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当swappiness内容的值为100时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。查看修改前为0,需要在物理内存使用完毕后才会使用SWAP分区。

    1
    echo 10 >/proc/sys/vm/swappiness

    img

  6. 若需要永久修改此配置,在系统重启之后也生效的话,通过vim命令编辑

    1
    /etc/sysctl.conf

    文件,并增加以下内容。

    1
    vm.swappiness = 10
  7. 执行以下命令,验证添加成功。(使其生效)

    1
    sysctl -p

关闭SWAP分区

当系统出现内存不足时,开启SWAP可能会因频繁换页操作,导致IO性能下降,可以采用以下方法,关闭SWAP分区。

  1. 执行以下命令,查询SWAP分区设置。

    1
    free -m

    系统显示类似如下。

    img

  2. 执行以下命令,关闭SWAP分区。

    1
    swapoff [$SWAP_File]

    注:[$SWAP_File]SWAP分区标识。

    系统显示类似如下。

    img

  3. 通过vim命令,修改/etc/fstab文件,删除或注释相关配置,取消SWAP的自动挂载,系统显示类似如下。
    img

  4. 执行以下命令,确认SWAP分区已经关闭。

    1
    free -m

    系统显示类似如下。

    img

  5. 执行以下命令,临时修改swappiness参数值。此处以空闲内存为0%为例。

    1
    echo 0 >/proc/sys/vm/swappiness    
  6. 若需要永久修改此配置,在系统重启之后也生效的话,通过vim命令编辑

    1
    /etc/sysctl.conf

    文件,并增加以下内容。

    1
    vm.swappiness = 0
  7. 执行以下命令,验证添加成功。

    1
    sysctl -p

常见问题处理

常见问题描述

使用mkswap创建SWAP时出现类似如下报错信息:

1
mkswap: error: swap area needs to be at least 40 KiB

img

问题原因

指定的SWAP分区文件太小,SWAP分区文件至少应该大于40KB。

解决方法

重新生成更大的文件格式化为SWAP即可。