=======================================
基于ceph快速创建虚机
=======================================
基于ceph来构建openstack的统一存储是目前非常流行的做法,更加详细的说明,可以参考 `openstack与ceph整合 `_ 。
openstack提供了5种boot虚机的方式,当然这也是时下各种云平台通用的做法,分别为:
- 从镜像启动
- 从快照启动
- 从云硬盘启动
- 从镜像启动(创建一个新卷)
- 从云硬盘快照启动(创建一个新卷)
我们所知rbd是支持copy-on-write的,这个特性可以体现在openstack的代码中调用了rbd clone这个命令,当你像复制一个非常大的卷时,rbd clone是秒级的,与之相对的做法是,重新创建一个raw文件然后上传给ceph,这明显是非常耗时的。
如果我们的nova和glance都是配置使用了ceph的rbd,那么理想状况下,我们创建一台虚机,虚机的根磁盘应该是通过glance中对应image进行rbd clone而得。
在Juno版本中,这的确已经实现,但是I版并非如此,本文主要介绍下讨论的便是在I版如何支持该功能。
社区的贡献
=======================
openstack社区是非常强大的,早在13年就有人提出此bug,经过一系列讨论和具体实现,已经完全实现了此功能 `rbd-clone-image-handler `_ 。当然这些代码在Juno版本才合入master,如果想在I版使用,你可以基于I版手动合并这些patch。
对nova代码不太深入理解的,可能觉得合并patch有些困难,建议你使用网友合并好的icehouse分支 `stable-icehouse `_ 。
当然你需要一些额外的配置,更多的配置请参考 `ceph官网 `_ 。