这几天在学习Openstack的Cinder项目,记录学习笔记如下。
Cinder从Openstack的Folsom版本(2012年9月发布)开始出现,用以替代Nova-Volume服务,Cinder为Openstack提供了管理卷(volunme)的基础设施。
按Openstack官方文档的表述,Cinder是受请求得到、自助化访问的块储存服务,即Cinder有两个显著地特点,第一,必须用户提出请求,才能得到该服务;第二,用户可以自定义的半自动化服务。Cinder实现LVM(逻辑卷管理),用以呈现存储资源给能够被Nova调用的端用户。简而言之,Cinder虚拟化块存储设备池,提供端用户自助服务的API用以请求和使用这些块资源,并且不用了解存储的位置或设备信息。
Cinder相关项目
1、Python Cinder客户端
2、块存储API文档
Cinder架构
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义。
Auth Manager:授权管理者
AMQP:高级消息队列协议,应用于MQ中。
SCSI 即 小型计算机系统接口 。小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。它是各种计算机与外部设备之间的接口标准。
iSCSI: Internet 小型计算机系统接口(iSCSI)是一种基于TCP/IP的协议,用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。
REST :表征状态转移(Representational State Transfer),定义了一种软件架构原则,它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。 如果考虑使用它的 Web 服务的数量,REST 近年来已经成为最主要的 Web 服务设计模式。
Cinder整体构架中,API是核心部分,连接了内部的授权管理,REST请求,MQ队列和前端的Cinder客户端,Nova客户端。客户端通过Web界面显示Cinder信息,Nova端用户可以调用存储在块中的资源。MQ队列,Scheduler调度volume上的存储信息。iSCSI是一个接口协议,一端连接存储设备(Volume),一端连接其他主机。
Cinder服务
API service:Cinder构架图的核心部分,负责接受和处理Rest请求,并将请求放入RabbitMQ队列。
Scheduler service: 处理任务队列的任务,并根据预定策略选择合适的Volume Service节点来执行任务。所以构架图中,Scheduler一端连接MQ队列,处理MQ队列中的任务;一端连接Volume设备,任务在Volume节点上执行。
Volume service: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。
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的支持会或多或少的受到限制。
1、对于本地存储,cinder-volume可以使用lvm驱动,该驱动当前的实现需要在主机上事先用lvm命令创建一个cinder-volumes的vg, 当该主机接受到创建卷请求的时候,cinder-volume在该vg上创建一个LV, 并且用openiscsi将这个卷当作一个iscsi tgt给export.当然还可以将若干主机的本地存储用sheepdog虚拟成一个共享存储,然后使用sheepdog驱动。
2、EMC
3、NetApp
结合EMC和NetApp两个典型存储图,存储过程必定包含的元素有用户,Nova(Openstack的核心项目,计算功能),数据库,Volume管理(资源就是存储在Volume设备上),另外MQ队列至关重要,所有请求消息都汇集MQ队列,依次进行处理。EMC和NetApp存储的不同点是EMC使用SMI-S服务器,通过CIM与Volume管理者进行信息交互,而NetApp使用NetApp OnCommand存储管理方式,通过REST与Volume管理者传递请求。
本文参考:
1、Openstack官网Cinder部分https://wiki.openstack.org/wiki/Cinder