前言
openstack是个很不错的东西,结合ceph之后,openstack就如同插上了翅膀,更加强大了。
ceph的好处:
- 有了ceph这个共享存储,guest的热迁移就方便多了
- ceph提供的块儿存储支持snap和clone,是的创建虚机和快照都不用copy磁盘,使得创建虚机可以秒级完成,而且非常节省存储
我遇到的问题:
- 在我将openstack和ceph结合起来之后,创建虚机依然很慢,并没有达到创建虚机不复制磁盘的效果
解决办法:
- 调试虚拟创建过程,发现如果要利用上rbd的snap和clone的特性,需要在image上有location属性;然而,我创建的image并没有该属性,openstack image命令行没有location相关选项,dashboard上创建镜像也没有该属性,只有glance命令行允许指定或单独添加该属性,却又报location invisible的错误;临时解决办法:直接修改代码,在代码中添加:
- 关于glance设置location失败的问题,根据关键字去glance代码中查看代码,发现当配置文件中的show_multiple_locations = false时,是不允许操作location的:
然后,去glance-api的机器上grep show_multiple_locations ,并修改为True,重启glance-api 服务;然后再尝试location-add,提示url已存在,其实,该信息本来是存在的,只是显示与否的问题,现在不需要做任何操作,已经可以从image的信息中看到url了,如下:
参考配置文件 /etc/glance/glance-api.conf 得知,show_multiple_locations = True使得image的地址直接暴露给了client,client就可以直接操作image了,可能存在一定的安全问题;当我们认为这不是问题的时候,我们就可以修改该配置,现在,我正是想利用rbd的一些特性,就需要将给选项设置为True;
- 至此,纠结已经的问题正式告一段落
总结:
- 按照手册安装openstack没有太大意义,能发现问题并解决问题才能进步;在解决该问题的过程中,尝试了python的单步调试(效果很差)、从代码上了解了虚拟机创建的过程,也了解了一些glance的代码,受益匪浅