阿里云ECS添加SWAP分区并开机挂载

  • 内容
  • 评论
  • 相关

阿里云服务器默认是没有swap的。

而且阿里云服务器中在/etc/rc.d/rc.local脚本中将所有fstab中要求挂载的swap分区都给关闭了。

咨询了阿里云工程师为何关闭swap,回复如下:

您好,swap主要是内存不够用的时候,将内存中不使用的一些内容放到swap中,内存会和swap频繁交换数据。这个可能会引起io的问题。如果内存够用,除非有特殊情况,比如安装oracle。建议不使用swap。请了解。

不过,如果你觉得swap分区很有必要,那么我们可以修改rc.local文件,将其中的swapoff -a注释或者删掉。

然后通过文件或分区建立swap分区,并使其开机挂载。

下面记录一下我开启swap的过程。

 

建立swap分区

查看当前的内存和分区使用情况。

[php]
[root@yeboyzq ~]# free -m
total used free shared buffers cached
Mem: 494 488 6 0 2 17
-/+ buffers/cache: 468 26
[root@qiansw ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 5.7G 14G 31% /
tmpfs 248M 0 248M 0% /dev/shm
/dev/xvdb1 9.9G 386M 9.0G 5% /data
[/php]

可以看到当前swap大小为0,挂载根目录的分区是最大的分区,我们建立一个文件放到根目录下的var目录下,命名为swap。使用该文件启动swap。

[php]
[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
[/php]

挂载完毕后,我们查看内存使用情况。发现swap出现了。

[php]
[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
[/php]

虽然现在swap能用了,但它仍然不会自动挂载,一重启就没有了。

 

使用fstab文件指定swap自动挂载

我们需要将其加入到fstab文件中使其自动挂载。

rhel中,只要编辑/etc/fstab文件,将swap信息加入即可。

使用vim编辑fstab文件,加入下面一行。

[php]
/var/swap swap swap defaults 0 0
[/php]

但是文章开始提到阿里云默认是不让用户使用swap的。

我们需要编辑/etc/rc.d/rc.local文件,将文件中的swapoff行注释或删掉。

[php]
#swapoff -a
[/php]

搞定,reboot之后,查看内存使用情况。我们会发现,swap分区已经正常挂载了。

[php]
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

[/php]

 

附swapoff说明

[php]
[root@qiansw ~]# swapoff --help
Usage:
swapoff -a [-v] disable all swaps
swapoff [-v] <special> disable given swap
swapoff -h display help
swapoff -V display version

The <special> parameter:
{-L label | LABEL=label} LABEL of device to be used
{-U uuid | UUID=uuid} UUID of device to be used
<device> name of device to be used
<file> name of file to be used
[/php]

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注