OpenStack 到 Folsom 版本有比较大的改变,其中之一就是将之前在 Nova 中的部分持久性块存储功能(Nova-Volume)分离了出来,独立为新的组件 Cinder。主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动支持以与 OpenStack 进行整合。在CinderSupportMatrix中可以看到众多存储厂商如 NetAPP、IBM、SolidFire、EMC 和众多开源块存储系统对 Cinder 的支持。Havana 版本中 Cinder 新增特性如下:
Volume-Resize:在可用情况下调整卷大小。
Volume-Backup-To-Ceph:现在卷可以备份到 Ceph 集群中。
Volume-Migration:现在不同用户间可以透明地转移和交换卷。
QoS:增加限速相关的元信息供 Nova 和其 Hypervisor 使用。
More-Drivers:更多的存储厂商加入和完善了自己的 Cinder 驱动,如 Huawei、Vmware、Zadara。
Cinder 架构图

Cinder 服务
API service:负责接受和处理 Rest 请求,并将请求放入 RabbitMQ队列。
Scheduler service: 处理任务队列的任务,并根据预定策略选择合适的 Volume Service 节点来执行任务。目前版本的 cinder 仅仅提供了一个 Simple Scheduler, 该调度器选择卷数量最少的一个活跃节点来创建卷。
Volume service: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个 Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储,当前版本的 Cinder 为 Volume Service 添加如下 drivers。当然在 Cinder 的 blueprints 当中还有一些其它的 drivers,以后的版本可能会添加进来。
本地存储:LVM(iSCSI), Sheepdog(sheepdog)
网络存储: NFS, RBD(Ceph)
IBM: Storwize family/SVC (iSCSI/FC),XIV (iSCSI),GPFS,zVM
Netapp: NetApp(iSCSI/NFS)
EMC: VMAX/VNX (iSCSI),Isilon(iSCSI)
Solidfire: Solidfire cluster(iSCSI)
HP:3PAR (iSCSI/FC),LeftHand (iSCSI)
Cinder服务的部署
上述的Cinder服务都可以独立部署,cinder同时也提供了一些典型的部署命令:
cinder-all: 用于部署all-in-one节点,即API, Scheduler, Volume服务部署在该节点上。
cinder-scheduler: 用于将scheduler服务部署在该节点上。
cinder-api: 用于将api服务部署在该节点上。
cinder-volume: 用于将volume服务部署在该节点上。
Cinder 如何支持典型存储
从目前的实现来看,Cinder 对本地存储和 NAS 的支持比较不错,可以提供完整的 Cinder API V2 支持,而对于其它类型的存储设备,Cinder 的支持会或多或少的受到限制,下面是 Rackspace 对于 Private Cloud 存储给出的典型配置:
1.本地存储
对于本地存储,cinder-volume 可以使用 LVM 驱动,该驱动当前的实现需要在主机上事先用 LVM 命令创建一个 cinder-volumes 的卷组 , 当该主机接受到创建卷请求的时候,cinder-volume 在该卷组 上创建一个逻辑卷, 并且用 openiscsi 将这个卷当作一个 iscsi tgt 给输出.当然还可以将若干主机的本地存储用 sheepdog 虚拟成一个共享存储,然后使用 sheepdog 驱动。
2.EMC
EMC 块存储架构

3.Netapp
Netapp 块存储架构

HuaWei
HuaWei 块存储架构





