image.png
    负责管理整个OpenStack当中的块存储资源,主要是为虚拟机实例提供块级别存储,即虚拟机磁盘,支持多种类型的存储,华为的OpenStack中支持IPSAN、华为的企业存储、FusionCompute后端连接的存储。
    Cinder的核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行处理,可以避免单节点故障,为运行实例而提供的持久性块存储,主要为虚拟机提供块存储服务。操作对象是磁盘,直接挂载到主机,一般用于主机的直接存储空间和数据库应用,DAS和SAN都可以提供块存储。适用于数据库。
    管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。

    image.png
    Client:封装Cinder提供的rest接口,以CLI形式供用户使用
    API:对外提供API,所有对Cinder的请求首先由Cinder-api处理,接受并相应卷操作指令。对操作需求进行解析,只要是包含卷的生命周期相关操作,例如增删改查,备份,挂载卸载等都可以相应。
    Scheduler:负责收集backend上报的容量、能力信息,根据算法完成卷到指定cinder-volume的调度,通过过滤和称权,筛选出合适的后端。调度合适主机进行创建
    Volume:管理 volume 的服务,管理 volume 的生命周期。运行 cinder-volume 服务的节点被称作为存储节点。cinder-volume在存储节点上运行,OpenStack 对 Volume 的操作,最后都是交给 cinder-volume 来完成的。cinder-volume 自身并不管理真正的存储设备,存储设备是由 volume provider 管理的。多个Cinder-Volume构成了存储池。cinder-volume 与 volume provider 一起实现 volume 生命周期的管理。
    Provider:数据的存储设备,为Volume提供物理存储空间,Cinder-volume支持多种volume-provider,这种volume-provider通过自己的driver与Cinder-volume协调工作。
    Backup:实现将卷的数据备份到其他存储介质,做备份用
    DB:提供存储卷、快照、备份、service等数据,有一些数据需要存放到数据库中,一般使用 MySQL。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为“cinder”的数据库。

    创建卷流程:
    1、创建卷类型发送给cinder-api
    2、请求scheduler创建卷
    3、Schduler读取调度算法,过滤并选择最优的host主机
    4、通过volume将请求发送给对应的backup后端
    5、请求阵列后端调动指定驱动创建指定的卷
    6、后端创建卷

    cinder-api收到创卷请求后,向keystone鉴权
    鉴权成功后预留资源,生成卷ID,写入DB,返回卷信息将创卷指令通过消息队列发给Scheduler
    Scheduler选择合适的存储

    挂载卷流程:

    1. Nova调用Cinder API创建卷,传递主机的信息,如hostname, iSCSI initiator name, FC WWPNs
    2. Cinder API将该信息传递给Cinder Volume。
    3. Cinder Volume通过创建卷时保存的host信息找到对应的Cinder Driver。
    4. Cinder Driver通知存储允许该主机访问该卷,并返回该存储的连接信息(如iSCSIiqn,portal,FC Target WWPN,NFS path等)
    5. Nova调用针对于不同存储类型进行主机识别磁盘的代码(Cinder 提供了brick模块用于参考)实现识别磁盘或者文件设备。
    6. Nova通知Cinder已经进行了挂载。
    7. Nova将主机的设备信息传递给hypervisor来实现虚拟机挂载磁盘。

    nova-compute向cinder-api发起挂卷请求
    cinder-api将请求发送至相应的cinder-volume
    cinder-volume通过存储驱动建立主机与卷的映射,返回到nova-compute
    nova-compute通过主机驱动将卷挂载到虚拟机
    nova-compute将挂在信息发送给cinder-api,cinder-api写入DB