- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Cinder 可启动卷缓存机制浅析技术文档V10
Cinder 可启动卷缓存机制浅析技术文档
V1.0
Apr 14, 2016
Cinder 可启动卷缓存机制浅析技术文档V1.0
术语和称谓
Volume: 虚拟的块设备,本文中称为 “卷”
Image-Volume: 导入了虚拟机启动镜像的卷,称为 “可启动卷”
Volume-backed Image: 以卷作为镜像后端
可启动卷的应用场景
Cinder 是OpenStack 中提供块存储(Block Storage)管理服务的模块,同其他
模块一样,Cinder 仅提供管理而不提供真正的存储能力,该能力由其后端来提
供,Cinder 可以适配多种后端存储,从而达到灵活管理。
卷是Cinder 管理的基本资源,一般的,卷被挂载到虚拟机上为存储数据所用,
其生命周期与虚拟机相分离,因而被视为 “永久的数据存储”。另外
OpenStack 还提供了从卷启动(Boot from volume)的功能,即由可启动卷来
启动虚拟机。
从卷启动的优和劣
从卷启动为OpenStack 对接块存储设备提供了一种解决方案,而且有很多优
势:
由卷启动虚拟机的实验该过程如下:
创建可启动卷:cinder create --image-id --display-name a-
image-volume
由卷启动虚拟机:nova boot --flavor --boot-volume name (可通
过--block-device-mapping 添加更多参数,详见官方文档)
过程图解:
如图所示,对比由镜像启动和由卷启动虚拟机,两种方式都需要向Glance 请求
下载镜像文件,但由于镜像缓存的作用,每个计算节点每个镜像仅需要请求一
次;而由卷启动则每次都需要下载镜像。那么问题来了,如果镜像文件比较大,
则启动虚拟机的耗时也会比较长;如果要批量启动虚拟机,Glance API 服务的
压力也会非常大。
为了解决上面的问题,社区提供了两种方案:
可启动卷缓存
以卷作为镜像后端
下面主要介绍第一种:可启动卷缓存
可启动卷缓存的机制
缓存什么?
对于Cinder 来说,保存虚拟机的镜像文件显然并不是它该做的事情,但是保存
了镜像文件的卷管理起来就游刃有余了。而且由于虚拟卷可以任意的Extend,
只缓存一份刚好满足镜像大小的卷,然后在需要的时候扩展成所需的大小就可
以了。
缓存到哪里?
对于所有资源,OpenStack 都是基于项目(Project/Tenant)来管理。缓存的卷
要归属于哪个项目呢?一般用户的项目显然是不合适的,好在OpenStack 有一
个部署下来就被创建但是一般不怎么用的项目: Service。
何时缓存?
通过上面图中的可启动卷的创建过程可以知道,由创建好的卷Clone 出来一份
做缓存就好。
如何匹配缓存?
在新创建可启动卷时,要想知道当前镜像是否被缓存过,那就需要借助数据库
记录了:只需要在创建卷缓存时,将镜像与缓存的关联保存到表中,请求再次
来到时,查询当前镜像是不是存在表中即可。
过程
以上几个问题大致概括了卷缓存的要点,下面顺序的描述该过程(忽略API 接收
和Schedule 过程,直接进入卷创建逻辑):
Liberty 版本中默认不启用卷缓存特性,需要另外配置:
vim /etc/cinder/cinder.conf
image_volume_cache_enabled = True # 是否启用镜像缓存功能
image_volume_cache_max_size_gb = 100 # 镜像缓存的总容量
image_volume_cache_max_count = 10 # 镜像缓存的总个数
cinder_internal_tenant_project_id = 0f7d9f0f103642df9b1c2def87bca48
6 # cinder 用户所在的项目(即service 项目)id
cinder_internal_tenant_user_id = 8bb3be9e49f049a69088c39aa0a81266
# cinder 用户id
数据库中新建image_volume_cache_entries 表,用以保存卷和镜像的关
联;
当由镜像创建卷时,根据数据库记录判断是否由该镜像创建过可
文档评论(0)