测试组里一个同学负责MapR的搭建,MapR文档中建议每个节点上至少有24GB的swap分区,不知道MapR为啥会有这种反人类的建议……swap无非就是一块顺序读写的磁盘空间,莫非省着内存不用,用swap能提高效率?也许它用swap来存map-reduce的临时文件?
可是既然这么建议了,只好照办,毕竟我们对MapR也不熟悉。
要让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