在OpenStack虚拟机实例中创建swap分区的一种方法

时间:2023-11-24 19:44:50

测试组里一个同学负责MapR的搭建,MapR文档中建议每个节点上至少有24GB的swap分区,不知道MapR为啥会有这种反人类的建议……swap无非就是一块顺序读写的磁盘空间,莫非省着内存不用,用swap能提高效率?也许它用swap来存map-reduce的临时文件?

可是既然这么建议了,只好照办,毕竟我们对MapR也不熟悉。

【引用请注明出处:http://blog.csdn.net/bhq2010/article/details/9320223

要让OpenStack的实例中有swap分区,可以在镜像中加,但是很麻烦,而且也不好弄个几十GB的swap,那样镜像会很大。

另外一种方法如下:

1. 安装必要的软件

我们的精简的centos中没有mkfs.ext4和parted,所以要安装e4fsprogs和parted,一般的centos中都已经安装了。设置好软件源:

# yum update
# yum install parted
# yum install e4fsprogs

2. 创建分区和文件系统

实例中的vda是openstack提供的root文件系统,装着系统,所以只能对vdb,也就是ephemeral storage 进行分区并创建文件系统:

# parted /dev/vdb --script "mktable gpt"
# parted /dev/vdb --script "mkpart primary 1024KB 48GB"
# parted /dev/vdb --script "mkpart primary 48GB -1"
# ls /dev | grep vdb
# mkswap /dev/vdb1
# mkfs.ext4 /dev/vdb2

这里ephemeral disk(vdb)在flavor中设的是500GB,给swap分了 48GB.,剩下的给了vdb2.

3. 修改fstab

将/etc/fstab改为如下内容:

/dev/vda                /        ext4   defaults              0 0
/dev/vdb1 swap swap defaults 0 0
/dev/vdb2 /opt ext4 defaults 0 0

重启实例或者mountall一下,就可以了。

用free查看一下swap是否为48GB