【OpenStack实践分享】rbd 是否支持注入
【OpenStack实践分享】rbd 是否支持注入
2018-01-16 09:46:24 来源:九州云
抢沙发
2018-01-16 09:46:24 来源:九州云
摘要:很多 OpenStack 与 Ceph 部署集成的文档都会告诉你,libivrt 的文件和密码注入在 Ceph 上面是不支持的,需要使用下面的配置文件关闭。
关键词:
OpenStack
rbd
引子
很多 OpenStack 与 Ceph 部署集成的文档都会告诉你,libivrt 的文件和密码注入在 Ceph 上面是不支持的,需要使用下面的配置文件关闭。
[libvirt]
inject_password = false
inject_key = false
inject_partition = -2
但真的只是不支持这么简单么? 首先看 nova 的注入是如何工作的。
nova 是怎么注入的文件的
nova 使用 libguestfs 来文件密码的注入
libguestfs主要有三个大的部分:guestfsd, guestfs-lib ,guestfish。
guestfsd是一个daemon,但是它不是运行在 host 上的 daemon,它运行在 guest 上,libguestfs 首先用febootstrap和febootstrap-supermin-helper两个工具将 host 中的 kernel,用得到的一些 modules,配置文件和一些工具重新组合到一起,接着在后台启动一个 qemu 进程启动这个由febootstrap生成的 image。在用 qemu 启动的这个 guest 里运行guestfsd。guestfsd通过 socket 和 host 进行通信,之间建立了一个通信的协议,它可以通过 socket 接受来自host端guestfs-lib写到 socket 的数据。guestfsd 通过分析接受到的数据,进而执行相应的操作。
guestfs-lib是一个库,它实现了一些 libguestfs 的库函数 guestfs_*。这些库函数向 socket 发送相应的数据,数据就会被 guest 端的 guestfsd 接收到,进而分析所要执行的操作。
guestfish是对 guestfs-lib 接口函数的一些应用,guestfish 的命令都是通过调用guestfs-lib的库函数来实现的。
如果在 nova 中开启了 inject 功能,nova 会调用 libguestfs 的接口,把文件或密码注入到镜像中去,然后再去真正的启动用户的虚拟机。那支持 ceph 里面的镜像么?
libguestfs 对 rbd 的支持
libguestfs 对 rbd 的支持是从 1.21.21 这个版本开始的【注释1】,并且测试并不充分【注释2】, 这个版本也是2013年5月份才发布的。到现在 CentOS6 上面的 libguestfs 版本还是 1.20.11。所以早期时候,文档中建议关掉 inject 功能,是确实 libguestfs 不支持RBD上面的镜像。
但是 CentOS7 上面,libguestfs 已经支持这个功能,所以是可以打开 nova 的注入功能的。那我们是不是就可以把这个功能打开了?
libvirt 注入的问题
不支持 Boot from volume【注释3】, 当从 Volume 启动的时候,并不支持文件注入。
社区也准备废弃这个功能,有几个原因:首先是代码层面上,如果注入失败了,没有任何错误信息报出来;其次是文件注入并不安全;另外这些注入的文件并没有持久化(存入数据库),在 evacuate 或 unshelve 的时候,这些文件会被丢掉;最后是可以通过 metadata-api 或 config-drive 更方便的实现文件注入功能。有兴趣可以读下相关信息【注释4、5、6、7】。
结论
通过 nova inject 注入的方式并不被社区推荐,应该采用 metadata-api 或 config drive 方式才是更加可取。
第四十一届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:pingxiaoli
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。