Cinder是OpenStack的一个组件,从Folsom版本从Nova-Volume中分离出来,为云平台提供统一接口,按需分配的,持久化的块存储服务(类似于Amazon EBS服务)。
Cinder的核心功能是对卷的管理,允许对卷,卷的类型,卷的快照、卷备份进行处理。它为后端不同的存储设备提供了统一的接口,不同的块设备服务厂商再Cinder中实现其驱动支持以与OpenStack进行整合。
Cinder Client:封装 Cinder 提供的rest接口,以CLI形式提供给用户使用。比如:nova-compute、horizon 。
Cinder-api:对外提供rest API,对操作需求进行解析,对API进行路由寻找相应的处理方法,包含卷的增删改查、快照增删改查、备份、Volume type管理、挂载/卸载(Nova调用)等。
Cinder-scheduler:负责收集backend上报的容量、能力信息,跟设定的算法完成卷到指定cinder-volume的调度。
Cinder-volume:多节点部署,使用不同的配置文件、接入不同的backend设备,由各存储厂商插入driver代码与设备交互完成设备容量和能力信息收集、卷操作。
Cinder-backup:实现将卷的数据备份到其他存储介质(目前Swift/Ceph/TSM提供了驱动)
SQL DB:提供存储卷、快照、备份、service等数据,支持Mysql、PG、MSSQL等SQL数据库
AMPQ:Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议。应用层协议的一个开放标准,为面向消息的中间件设计,不受产品和语言差异的影响。
组件 | 功能 |
---|---|
Cinder-api | cinder模块对外唯一入口,cinder的endpoint,接受和处理rest请求 |
Cinder-scheduler | 根据预定的调度过滤策略以及权重计算策略,选出合适的后端来处理任务 |
Cinder-volume | 负责与后端存储进行对接,通过各厂商提供的driver将OpenStack操作转换为存储操作 |
Cinder-backup | 实现将卷的数据备份到其他的存储介质 |
Cinder后端对接SAN,相应的Cinder-api接口或者命令对应磁阵的操作如下:LUN,逻辑单元号,卷
cinder操作 | SAN上的对应操作 |
---|---|
create_volume | 创建一个LUN,执行命令(createlun –n name –lunsize 1 …) |
delete_volume | 删除一个LUN,执行命令(dellun –lun 5) |
extend_volume | 不同driver实现方式不同,LUN直接扩展或者创建个扩展LUN,然后进行合并 |
create_volume_from_image | 创建一个LUN,将镜像下载到主机侧,将lun挂载给主机,将镜像数据拷贝到LUN,然后解除与主机的关系 |
Initialize_connection | 将LUN和主机进行关联 |
terminate_connection | 解除LUN和主机的关联关系 |
create_snapshot | 创建快照,createsnapshot –lun 5 –n name |
发现iSCSI target
添加一个iSCSI target node
登录iSCSI target
设置iSCSI会话开机自启动
调用多路径的smartscan脚本扫描LUN
在/dev/disk/by-id目录下生成多路径的设备
nova调用libvirt接口将生成的sd设备添加到虚拟机的xml文件中
Libvirt将虚拟机xml中的设备删除
根据libvirt xml中记录的磁盘的wwn,找到对应的sd设备
调用smartdelete脚本,将sd设备删除
删除多路径的wwn软连接
检查iscsi会话是否还有必要存在,如果没有必要,将所有的iscsi会话logout
原文:https://www.cnblogs.com/Skybiubiu/p/14621153.html