以root用户登录建立交换区文件:
fallocate -l 2G /swapfile //AWS这步可能会报错,可以换成dd命令,如:dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod /swapfile //赋予仅root用户的权限,确保安全
mkswap /swapfile
swapon /swapfile
swapon -s
echo "/swapfile swap swap sw 0 0" >> /etc/fstab
另转载一篇,供参考:(https://www.iamhippo.com/2017-04/519.html)
阿里云全系linux系统不配置swap分区,按照阿里云的说法是为了让大家多买内存。。。以减少对swap的依赖。。however,许多应用程序要求必须要有swap分区,比如说大名鼎鼎的oracle
话不多说,下面说下centos创建swap的方法. 目前主流的做法有两种: 一是创建一个单独的分区,专门用来做swap区,这是推荐的做法。但是对于阿里云来说,如果你没有加载第二个或者第三个数据盘,这是很难实现的。因为对系统盘做无损分区,这基本是不可能的事情。因此,只有当你挂载了第二个数据盘或者多个数据盘,还没有开始使用的情况下,可以使用这个方式;二是专门创建一个目录来做swap分区,这种方法不受系统盘和数据盘的限制,哪里有空间,哪里就可以设置。但是这种方式的速度不如直接挂载一个分区过去速度快。
第二种方式,阿里云的官方文档中有详细的说明: https://help.aliyun.com/knowledge_detail/42534.html
这里我就不多说了。这篇文章主要关注点在于创建一个分区然后挂载到swap分区上
swap 的大小,根据我多年的经验,在内存小于等于4G时,可以设置为内存的2倍;在大于4G时,建议设置为和内存大小一样。
对新数据盘进行分区,就是使用fdisk /dev/vdx 命令,然后跟着命令走就可以了
格式化的时候,和格式化普通格式硬盘不一样,需要使用mkswap命令, 加入我们创建的分区为/dev/vdb1
则命令为
mkswap /dev/vdb1
swapon /dev/vdb1
第一句话表明格式化为swap 分区,第二句话表示enable swap分区。
运行完这两个命令,用free -m就可以看到swap分区了。
如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a
但是当你重启以后,你会发现swap又没有了。。这是因为我们需要把挂载swap的命令写入/etc/fstab里面
/dev/vbd1 swap swap defaults 0 0
但是这还没完呢
在 Linux 系统中,可以通过查看 /proc/sys/vm/swappiness 内容的值来确定系统对 SWAP 分区的使用原则。当 swappiness 内容的值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 SWAP 分区。当 swappiness 内容的值为 100 时,表示积极地使用 SWAP 分区,并且把内存中的数据及时地置换到 SWAP 分区。
标准的linux安装板,会把此值这是为60
可用下面的命令临时修改此项参数:
echo 10 >/proc/sys/vm/swappiness
若要永久修改此项配置,需要编辑/etc/sysctl.conf, 并增加一下内容:
# vim /etc/sysctl.conf
vm.swappiness=10
# sysctl -p