- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenStack之Cinder学习笔记
OpenStack之Cinder学习笔记
关于Cinder的介绍
Cinder的前身是nova-volume, Openstack中的实例是不能持久化的,实现持久化的方法就是使用cinder/bin/cinder-volume. 挂载volume之后在volume中实现持久化.
Cinder的服务主要有cinder-volume,cinder-backup,cinder-scheduler,还有一个api服务,并且Cinder提供了一个控制台管理工具,提供命令行操作。cinder-backup提供cinder中的volume的备份管理功能,现在的实现是用swift作为存储后台,按照以后的发展也许用Ceph代替能提高性能, cinder-volume就是实现实际的块存储管理功能,cinder-scheduler实现调度功能.我认为理解cinder的难点在于要对于分布式存储,ISCSI协议有一定知识.
Cinder对块数据实现了多种的存储管理方式。主要有LVM,nfs,iSCSI. 这些存储方式都在cinder/volume/drivers下,要实现特定的存储方法只需要继承VolumeDriver基类或者类似iSCSIDriver子类.
在nova的源代码libvirt目录下有一个volume.py实现对应cinder的,实现对于实际运行volume相关操作。针对cinder的不同存储类型,对应的有不同的Volume Driver类型,如LibvirtVolumeDriver,LibvirtNetVolumeDriver,LibvirtISCSIVolumeDriver,LibvirtNFSVolumeDriver等。这些类都继承于LibvirtBaseVolumeDriver这个基类,主要实现的功能其实就是构造libvirt 中attachDeviceFlags 函数需要的xml格式参数(挂载卷时attach_volume),或者构造实例xml时添加device,和实现一些功能的命令执行如LibvirtISCSIVolumeDriver中一些iscsi命令。
--------------------------------------------我是分割线--------------------------------------------------
Api.py:通常处理与本组件有关的请求。
/driver:通常是继承本部分的driver.py的基类开发出来的适应不同情况的具体使用方法。
Backup
卷备份(create、restore、delete) driver(ceph swift tcm)
Brick
块设备(还在研究中)
Compute
利用novaClient实现卷的快照的建立 删除
Db
存储键值当前运行的服务的db的内容
Image
应用glance作为后端镜像服务
Keymgr
密钥管理(对称加密)
Schduler
调度器(filter weigh)
Transfer
卷在用户之间的转换
Volume
50%代码在这里,主要是卷存储的相关知识
个人研究感觉比较复杂一点的就是backup,schduler,volume三个部分比较复杂一些,其中brick是为H版所专门包含的,以后会脱离Cinder挪到oslo。Schduler模块其实就是衡量如何选择主机的,主要功能就是filter过滤掉不适合做主机的机子,weigh计算权重得到最适合做主机的机子。Volume应该是Cinder的核心,所有和卷存储有关的内容都包含在这里
/cinder/volume/api.py:处理卷相关的所有请求;
class API(base.Base):卷的管理操作接口API;
def list_availability_zones(self):描述已知可用的zone;
def create/delete/update实现卷的建立/ 删除/ 设置给定的属性更新;
def get(self, context, volume_id):根据volume_id获取相应的volume;
def get_all(self, context, marker=None, limit=None,sort_key=created_at, sort_dir=desc, filters={}):获取所有卷的信息;
def get_snapshot(self, context, snapshot_id):获取指定卷的快照;
def get_volume(self, context, volume_id):
文档评论(0)