OpenStack组件之Cinder

理解 Block Storage

操作系统获得存储空间的方式一般有两种:

通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据(数据库)

通过 NFS、CIFS 等 协议,mount 远程的文件系统

第一种裸硬盘的方式叫做 Block Storage(块存储),每个裸硬盘通常也称作 Volume(卷)

第二种叫做文件系统存储。NAS 和 NFS 服务器,以及各种分布式文件系统提供的都是这种存储。

理解 Block Storage Service

Block Storage Servicet 提供对 volume 从创建到删除整个生命周期的管理。从instance 的角度看,挂载的每一个 Volume 都是一块硬盘。

OpenStack 提供 Block Storage Service 的是 Cinder,

其具体功能是:

1、提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type

2、提供 scheduler 调度 volume 创建请求,合理优化存储资源的分配

3、通过 driver 架构支持多种 back-end(后端)存储方式,包括 LVM,NFS,Ceph 和其他诸如 EMC、IBM 等商业存储产品和方案

1.OpenStack中的存储

①临时存储(Ephemeral Storage)

  • 如果只部署了Nova服务,则默认分配给虚拟机的磁盘是临时的,当虚拟机终止后,存储空间也会被释放。
  • 默认情况下,临时存储以文件形式放置在计算节点的本地磁盘上。

②持久性存储(Persistent Storage)

  • 持久化存储设备的生命周期独立于任何其他系统设备或资源,存储的数据一直可用,无论虚拟机是否运行。
  • 当虚拟机终止后,持久性存储上的数据仍然可用
  • 目前OpenStack支持的三种类型的持久性存储:块存储、对象存储、文件系统存储

2.OpenStack中的持久化存储

①块存储

  • 由cinder提供块存储
  • 操作对象是磁盘,直接挂载到主机,一般用于主机的直接存储空间和数据库应用,DAS和SAN都可以提供块存储

②对象存储

  • 由swift提供对象存储
  • 操作对象是对象( object,一个对象名称就是一个域名地址,可以直接通过REST API的方式访问对象)

③文件系统

  • 由manila提供文件存储(使用较少)
  • 操作对象是文件和文件夹在存储系统上增加了文件系统,再通过NFS或CIFS协议进行访问

3.存储类型对比

4.cinder功能

  • Cinder的核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行处理。为云平台提供统一接口按需分配的,持久化的块存储服务(类似于Amazon EBS服务)。通过驱动的方式接入不同种类的后端存储(本地存储,网络存储,FCSAN,IPSAN)。

5.cinder架构

lCinder Client

封装Cinder提供的rest接口,以CLI形式供用户使用。

l Cinder API

  • 对外提供rest API,对操作需求进行解析,对API进行路由寻找相应的处理方法。包含卷的增删改查(包括从源卷、镜像、快照创建)、快照增删改查、备份、volume type管理、挂载/卸载(Nova调用)等;
  • 接收API请求,调用cinder-volume

l Cinder Scheduler

  • 负责收集backend上报的容量、能力信息,根设定的算法完成卷到指定cinder-volume的调度。通过调度算法选择最合适的存储节点创建 volume。
  • cinder-scheduler通过过滤(通过配置的file和输入参数)和称权,筛选出合适的后端:

1.列出所有的后端

2.根据后端的能力进行筛选

a-Drivers定期报告后端的能力和状态

b-管理员创建的卷类型(volume type)

c-创建卷时,用户指定卷类型

3.根据权重给后端排序

4.返回最合适的后端

  • 会根据预定的策略(比如不同的调度算法)选择合适的cinder-volume节点来处理用户的请求。在用户的请求没有指定具体的存储节点时,会使用cinder-scheduler选择一个合适的节点,如果用户请求已经指定了具体的存储节点,则该节点上的cinder-volume会进行处理,并不需要cinder-scheduler的参与。

l Cinder Volume

  • 多节点部署,使用不同的配置文件、接入不同的backend设备,由各存储厂商插入driver代码与设备交互完成设备容量和能力信息收集、卷操作。
  • 提取接收到的请求参数
  • 调用对应的 Driver在后端创建实际的卷
  • 使用 Driver返回的模型更新数据库中的记录
  • 管理 volume 的服务,与 volume provider 协调工作,管理 volume 的生命周期。运行 cinder-volume 服务的节点被称作为存储节点。多个这样的节点便构成了一个存储资源池。
  • cinder默认的后端驱动为LVM

lvolume provider

  •  数据的存储设备,为 volume 提供物理存储空间。
  •  cinder-volume 支持多种 volume provider,每种 volume provider 通过自己的 driver 与cinder-volume 协调工作。

l Cinder Backup

  • 实现将卷的数据备份到其他存储介质(目前SWIFT/Ceph/TSM提供了驱动)。支持将存储卷备份到Openstack对象存储,比如Swift、Ceph对象存储等。

l SQL DB

  • 提供存储卷、快照、备份、service等数据,支持Mysql、PG、MSSQL等SQL数据库。

6.cinder架构说明

7.cinder架构部署(以SAN存储为例)---可以避免单点故障

  • Cinder-api, Cinder-scheduler, Cinder-volume以选择部署到一个节点上,也可以分别部署
  • API采用AA模式, Haproxy作为LB,分发请求到多个Cinder API
  • Scheuer也采用AA模式,有 irabbitmq以负载均衡模式向3个节点分发任务,井同时从 .rabbitqmq.收取Cinder volume上报的能力信息,调度时, scheduler通过在DB中预留资源从而保证数据一致性
  • Cinder Volume也采用AA模式,同时上报同一个backend容量和能力信息,井同时接受请求进行处理Rabbitmq,支持主备或集群。
  • MYSQL,支持主备或集群

8.用户申请存储资源流程

     

      用户发送创建卷的请求到cinder-api后,cinder-api向keystone验证token,验证通过后去数据库中查询卷的规格是否超过已有的配额,若没有超过,则发送创建卷的请求到MQ,cinder-scheduler收到cinder-api的请求后,会去数据库中查询各个主机的存储信息,根据卷的规格和主机剩余存储容量调度算法得出最优的cinder-volume去创建卷。选择最优的Backend并通过消息队列将请求发送到指定的后端,MQ去向最优的cinder-volume发送创建卷的请求,cinder-volume调用下端的volume driver去命令存储介质创建符合卷规格的卷,创建成功后,会返回创建结果给cinder-volume,cinder-volume使用Driver返回的模型去更新数据库中相关主机的存储记录,并去对接nova-compute,将创建的卷挂载到对应的主机上。

卷的生命周期管理(创建、删除、状态维护等)由Cinder负责,卷的使用(挂载、卸载)由Nova发起。

注:cinder API在接受到创建卷的需求之前,会先收到创建卷类型的API请求,目的是为了筛选不同的后端存储,通过创建不同的自定义卷类型,创建卷时会自动筛选出合适的后端存储,API收到创建卷的请求后,会发送给cinder-scheduler分配创建卷的任务,cinder-scheduler根据cinder-volume上报的后端存储信息状态运行调度算法过滤并选择最优的HOST,然后会将操作请求发送给对应的cinder-volume,然后由cinder-volume请求阵列后端创建指定的卷具体提供存储的还是后端的存储设备。cinder-volume会定期收集后端存储阵列容量等信息,并会通知cinder-scheduler来更新内存中的Backend信息。

    创建卷类型的目的是为了筛选不同的后端存储,例如SSDSATA、高性能、低性能等,通过创建不同的自定义卷类型,创建卷时自动筛选出合适的后端存储。

9.cinder挂载卷流程

  • 挂卷是通过Nova和Cinder的配合最终将远端的卷连接到虚拟机所在的Host节点上,并最终通过虚拟机管理程序映射到内部的虚拟机中。

Nova调用Cinder API创建卷,传递主机的信息,如hostname, iSCSI initiator name, FC WWPNs

Cinder API将该信息传递给Cinder Volume。

Cinder Volume通过创建卷时保存的host信息找到对应的Cinder Driver。

Cinder Driver通知存储允许该主机访问该卷,并返回该存储的连接信息(如iSCSI iqn,portal,FC Target WWPN,NFS path等)

Nova调用针对于不同存储类型进行主机识别磁盘的代码( Cinder 提供了brick模块用于参考)实现识别磁盘或者文件设备。

Nova通知Cinder已经进行了挂载。

Nova将主机的设备信息传递给hypervisor来实现虚拟机挂载磁盘。

10.cinder主要操作

cinder主要操作主要三个资源:

Volume

块设备卷,提供创建,删除,扩容,挂载/卸载等功能

Snapshot

针对块设备卷的快照创建,删除,回滚等功能

Backup

提供对块设备卷的备份,恢复能力

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值