阿里云服务器默认是没有swap的。
而且阿里云服务器中在/etc/rc.d/rc.local脚本中将所有fstab中要求挂载的swap分区都给关闭了。
咨询了阿里云工程师为何关闭swap,回复如下:
”
您好,swap主要是内存不够用的时候,将内存中不使用的一些内容放到swap中,内存会和swap频繁交换数据。这个可能会引起io的问题。如果内存够用,除非有特殊情况,比如安装oracle。建议不使用swap。请了解。
不过,如果你觉得swap分区很有必要,那么我们可以修改rc.local文件,将其中的swapoff -a注释或者删掉。
然后通过文件或分区建立swap分区,并使其开机挂载。
下面记录一下我开启swap的过程。
◾建立swap分区
◾使用fstab文件指定swap自动挂载
建立swap分区
查看当前的内存和分区使用情况。
[root@qiansw ~]# free -m
total used free shared buffers cached
Mem: 488 482 6 0 2 17
-/+ buffers/cache: 463 25
Swap: 0 0 0
[root@qiansw ~]# df -hT
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/xvda1 ext4 20G 1.4G 18G 8% /
tmpfs tmpfs 245M 0 245M 0% /dev/shm
可以看到当前swap大小为0,挂载根目录的分区是最大的分区,我们建立一个文件放到根目录下的var目录下,命名为swap。使用该文件启动swap
[root@qiansw ~]# dd if=/dev/zero of=/var/swap bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,74.6081 秒,28.8 MB/秒
[root@qiansw ~]# mkswap /var/swap
mkswap: /var/swap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=7ec70f4f-6444-4c52-bd64-51ab61392569
[root@qiansw ~]# swapon /var/swap
挂载完毕后,我们查看内存使用情况。发现swap出现了。
[root@qiansw ~]# free -m
total used free shared buffers cached
Mem: 488 482 6 0 1 10
-/+ buffers/cache: 470 18
Swap: 2047 0 2047
虽然现在swap能用了,但它仍然不会自动挂载,一重启就没有了。
使用fstab文件指定swap自动挂载
我们需要将其加入到fstab文件中使其自动挂载。
rhel中,只要编辑/etc/fstab文件,将swap信息加入即可。
使用vim编辑fstab文件,加入下面一行。
/var/swap swap swap defaults 0 0
但是文章开始提到阿里云默认是不让用户使用swap的。
我们需要编辑/etc/rc.d/rc.local文件,将文件中的swapoff行注释或删掉。
#swapoff -a
搞定,reboot之后,查看内存使用情况。我们会发现,swap分区已经正常挂载了。
Welcome to aliyun Elastic Compute Service!
[root@qiansw ~]# free -m
total used free shared buffers cached
Mem: 488 302 186 0 6 50
-/+ buffers/cache: 245 243
Swap: 2047 0 2047
############## 附swapoff说明 ##############
[root@qiansw ~]# swapoff --help
Usage:
swapoff -a [-v] disable all swaps(禁用所有swap)
swapoff [-v] disable given swap
swapoff -h display help
swapoff -V display version