Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1515568
  • 博文数量: 230
  • 博客积分: 474
  • 博客等级: 下士
  • 技术积分: 1955
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 18:40
文章分类

全部博文(230)

文章存档

2020年(3)

2019年(3)

2018年(12)

2017年(13)

2016年(11)

2015年(55)

2014年(74)

2013年(39)

2012年(2)

2011年(18)

我的朋友

分类: 云计算

2014-09-01 15:26:14

这几天在学习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管理者传递请求。

阅读(1292) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~