1. 项目介绍Cinder 是 OpenStack Block Storage 的项目名称;它为来宾虚拟机 (VM) 提供了持久块存储。Cinder块存储是虚拟基础架构中必不可少的组件,是存储虚拟机镜像文件及虚拟机使用的数据的基础。VM镜像是短暂的,它们的存储只维持在那台虚拟机的生命周期,Cinder提供对块存储的管理支持,通过使用iSCSI, 光纤通道或者NFS协议,以及若干私有协议提供后端连接,展现给计算层Nova。
  2. Cinder的组件Cinder-api 负责接受和处理Rest请求,并将请求放入RabbitMQ队列。
    Cinder-scheduler 处理任务队列的任务,并根据预定策略选择合适的cinder-Volume节点来执行任务。
    Cinder-Volume 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。负责封装driver,不同的driver负责控制不同的后端存储。
    Cinder-backup 提供cinder中的volume的备份管理功能。
    Messaging queue 在块存储的组件之间传递消息
    Database 保存Volume相关的信息
  3. 块存储服务的原理

与其他 OpenStack 项目类似,Cinder 的功能通过 API 暴露给仪表板和命令行。它能够通过具有具象状态传输 (Representational State Transfer, REST) 的 HTTP API 来访问对象存储,并使用一个名为 Auth Manager 的 Python 类将身份验证纳入 OpenStack Keystone。

API 解析所有传入的请求,先验证请求的合法性,并将合法的请求转发给消息队列,调度程序和卷服务器在该队列中执行实际的工作。在创建新的卷时,调度程序将会决定哪台主机应对该卷负责。默认情况下,它会选择拥有最多可用空间的节点。

卷管理程序管理着可动态附加的块存储设备,这些设备也被称为卷。它们可用作虚拟实例的启动设备,或作为辅助存储进行添加。Cinder 还为快照(卷的只读副本)提供了一种设备。然后可以使用这些快照来创建新的卷,以供读写使用。

卷通常通过 iSCSI 附加到计算节点。块存储也需要某种形式的后端存储,在默认情况下,该后端存储是本地卷组上的逻辑卷管理,但可以通过驱动程序将它扩展到外部存储阵列或设备。

  1. 块存储服务的搭建以下所有的步骤将在控制节点(Controller Node)上面进行操作。
  1. 首先配置镜像服务所需要的数据库首先在数据库中创建名为cinder的数据库:

然后授权cinder用户对cinder库拥有完全权限:

Cinder块存储服务_数据库


  1. 创建keystone认证加载admin的环境变量,source admin-openrc.sh
    创建keystone认证用户cinder、cinder服务实体,endpoint

Cinder块存储服务_数据库_02


Cinder块存储服务_消息队列_03


Cinder块存储服务_消息队列_04


Cinder块存储服务_数据库_05


Cinder块存储服务_数据库_06


  1. 安装块存储服务软件包
  2. 拷贝配置文件模版,然后修改配置文件/etc/cinder/cinder.conf

a、首先连接数据库

Cinder块存储服务_配置文件_07


b、修改keystone认证:

Cinder块存储服务_数据库_08


Cinder块存储服务_配置文件_09


  1. 修改消息队列

Cinder块存储服务_配置文件_10


Cinder块存储服务_数据库_11


d、指定本地的IP

Cinder块存储服务_数据库_12


e、指定oslo并发锁的目录

Cinder块存储服务_数据库_13


  1. 填充数据库

启动服务和开机自启

Cinder块存储服务_数据库_14


接下来配置存储节点storage node,此处就在计算节点上配置。

在配置前首先添加一块硬盘/dev/sdb,并安装必要的软件包


Cinder块存储服务_消息队列_15


Cinder块存储服务_配置文件_16


启动lvm2-lvmetad

Cinder块存储服务_配置文件_17


1、创建一个卷组

Cinder块存储服务_消息队列_18


2、设置权限,修改/etc/lvm/lvm.conf

Cinder块存储服务_配置文件_19


3、安装存储节点的软件包

Cinder块存储服务_配置文件_20


4、修改cinder配置文件/etc/cinder/cinder.conf

a、配置数据库连接

Cinder块存储服务_配置文件_21


b、配置消息队列

Cinder块存储服务_配置文件_22


Cinder块存储服务_配置文件_23


c、配置keystone认证

Cinder块存储服务_消息队列_24


Cinder块存储服务_配置文件_25


d、在默认域指定本机IP

Cinder块存储服务_数据库_26


e、在[lvm]域中,指定LVM驱动及卷组名称,iscsi协议(默认没有这个域)

Cinder块存储服务_数据库_27


f、在默认域中配置允许LVM back

Cinder块存储服务_配置文件_28


g、在[default],指定glance服务地址

Cinder块存储服务_配置文件_29


h、在[oslo_concurrency],指定oslo并发锁定目录

Cinder块存储服务_消息队列_30


启动服务并开机自启

Cinder块存储服务_消息队列_31


  1. 在每个环境脚本中配置镜像服务客户端使用版本2的API
  1. 块存储服务的验证在controller节点执行以下操作:

Cinder块存储服务_消息队列_32


加载admin环境变量 source admin-openrc.sh

查看cinder的服务列表

Cinder块存储服务_数据库_33


加载demo环境变量, source demo-openrc.sh

创建一个1G的逻辑卷

Cinder块存储服务_数据库_34


查看已有的卷列表

Cinder块存储服务_配置文件_35


到此cinder服务搭建完毕。