Cinder是 Openstack 的Block Storage Service,从Nova项目中将nova-volume抽取出来作为独立项目,开始于Openstack的Folsom版本。
Cinder采用REST based API。
将Nova-volume块设备服务独立成Cinder项目是基于下述理由:
Nova项目过大,服务间的依赖关系使得增加新特性和功能变得困难。
因为Nova各个部分件的依赖关系,使得理解整个项目变得困难起来,同时也让人很难对项目bug和蓝图子任务形成一个完整视野。
块存储是Openstack的一个关键组成,迫切需要独立出来以便能更好地让开发者聚焦到它上面来。
作为一个独立的项目,能够更好地更方便地开发出新特性和新功能。
块存储日渐增长的复杂性,如Scheduler、多个volume drivers同时工作,以及与glance等其他组件的交互。
和Nova的架构极为相似,主要包含api、scheduler、volume等组件,它们之间通过AMQP队列进行消息通信。
DB : sql数据库,用于存放所有Cinder组件的数据,单点中心结构。
Web Dashboard: 和api进行交互的外部组件。
Auth Manager:用户认证。
Scheduler: 调度器,决定在哪个host上创建卷。
Volume: 管理可以动态挂卸载的块设备。
主要功能:
l 卷的 创建/删除/上传
Ø 创建卷
Ø 从快照创建卷
Ø 从镜像创建卷
Ø 上传卷到镜像
l 卷的 挂载/卸载
l 快照 创建/删除
特性:
l Create volume from image
l NFS files as virtual Block Device
l Persistent iSCSI Targets
l Python-cinderclient
l Improved API response data
l QoS
l Volume State Implementation
l API improvements
l Secure Attach
l Multiple Back-End driver support
l Better defination/use of Types and Extra Specs
l Retention of meta-data for Glance images on bootable
l Backup to Object Store
l Volume resize
l Xen enhancements
云硬盘由三个模块组成,架构如下图所示:
VolumeManager:接收用户发送的卷操作http请求,并根据用户请求,下发相应的命令给Volume Server 和Host Agent模块。
Volume Server:管理存储卷,接收VolumeManager的命令来创建、删除卷/快照。并将卷设置成iscsitarget,供Host Agent来连接。
Host Agent:负责连接用户卷,并将卷挂载/卸载到云主机。另外,在卷扩容操作中实现小卷拼接;在对扩容卷进行快照时进行io悬挂等动作。
云硬盘目前实现的功能有:
卷的创建、删除、挂载、卸载
卷的扩容
快照的创建、删除、上传
根据上述对云硬盘架构的分析理解,再结合Openstack的Nova和cinder 的功能实现,可以将云硬盘转换成下述架构:
如上图所示,云硬盘的VolumeManager 和 HostAgent完全可以由Nova替代,Nova中的现有接口中就是先了VolumeManager和HostAgent的基本功能,如接受用户卷操作请求、发送卷操作命令给cinder、连接挂载卷。而Volume Server的卷管理功能则完全可以由cinder来替代。
这种架构的好处是:
1、可以充分利用社区的成果,像我们后续可能要做的“云硬盘启动云主机”也在社区的开发规划中。社区后续的存储QoS、安全挂载以及多后端存储驱动支持开发也能让我们受益。
2、在社区架构下将云硬盘的工作集中在存储后端这块,云硬盘和云主机的接口部分则充分由Openstack接管。这样做云硬盘不用去投入大量精力放在云硬盘和云主机的接口工作上,类似云主机重启中挂载卷失败的问题也可以很好解决。
从现有实现来看,云硬盘若转移到cinder架构下,需要做的工作有:
1、在nova中增加扩容卷api接口,并在其中实现组合卷的功能。
2、针对扩容卷的快照操作,在快照接口中创建快照前后增加io悬挂和io恢复的操作。
http://wiki.openstack.org/Cinder
http://docs.openstack.org/developer/cinder/devref/index.html
《Openstack cinder》 ———— Renuka Apte/2012-06-01 Citrix Systems
《Openstack Block Storage Service》 ————朱荣泽/2012-09-22 新浪
《Island: Local Storage plugin for Cinder》 ———— 陈辉、朱荣泽/2012-06 新浪
《OpenStack Block Storage (Cinder) Project Update》 ———— John Griffith OpenStack Summit 2012
网易云新用户大礼包:https://www.163yun.com/gift
本文来自网易实践者社区,经作者管强授权发布。