一、概述
- cinder是提供块存储的服务。存储的分配和消耗是由块存储驱动器或者多后端配置的驱动器决定的。还有很多驱动程序可以用:NAS/SAN、NFS、CEPH等。一般运行在openstack的控制节点上。其驱动可以运行在控制节点、计算节点或者单独的存储节点上。
二、cinder的作用
- 提供REST API接口,使客户能够查询和管理卷、卷快照以及卷类型
- 协调卷的创建请求,合理优化存储资源的分配
- 通过驱动架构支持多种后端存储方式,包括LVM、NFS、Ceph等
三、cinder架构
以创建卷为例, Cinder的工作流程如下
- 1.用户向 Cinder-API发送创建卷请求:“帮我创建一个卷“
- 2.Cinder-API对请求做一些必要处理后,向消息队列发送一条消息:“让Cinder- Scheduler创建一个卷”;
- 3.Cinder- Scheduler从消息队列获取到消息,然后执行调度算法,从若干存储节点中选出节点A
- 4.Cinder- Scheduler向消息队列发送一条消息:“让存储节点A创建这个卷”;
- 5.存储节点A的 Cinder- Volume从消息队列中获取到消息,然后通过卷提供者的驱动创建卷。
四、cinder主要组件
Cinder-Api
- cinder-api用来接受api请求,并将其路由到cinder-volume执行
Cinder-volume
-
Cinder-Volume用来与块存储服务和 Cinder- Scheduler进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。 Cinder-Volume服务响应送到块存储服务的读写请求来维持状态,它也可以和多种存储提供者在驱动架构下进行交互。
-
当用户请求一个存储资源时,由 Cinder-API负责接受请求, Cinder-Scheduler负责调度资源,而真正执行存储任务的是Cinder-Volume。
-
这样的工作机制使得存储架构非常容易扩展。当存储资源不足时,可以增加存储节点(运行Cinder-Volume)。当客户的请求量太大调度不过来时,可以增加调度(运行Cinder- Scheduler)
Cinder- Scheduler
- Cinder- Scheduler守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。当需要创建卷时,
Cinder- Scheduler根据存储节点的资源使用情况选择一个最合适的节点来创建卷。
Cinder- Backup守护进程
- Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者。就像 Cinder- Volume服务,它与多种存储提供者在驱动架构下进行交互。
消息队列
- 消息队列作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作。
五、cinder常用管理命令
列表类
1 cinder list //列出所有volumes
2 cinder type-list //列出所有volume类型
3 cinder snapshot-list //列出所有快照snapshot
4 cinder backup-list //列出所有备份backup
5 cinder qos-list //列出所有qos
6 cinder service-list //列出所有服务
7 cinder transfer-list //列出所有transfer
8 cinder list-extensions //列出所有扩展extensions
创建类
1 cinder create <size> --dispaly-name --volume-type //创建volume
2 cinder snapshot-create <volume> --dispaly-name //创建快照
3 cinder backup-create <volume> --dispaly-name //创建备份
4 cinder qos-create <name> <key=value> //创建qos
5 cinder type-create <name> //创建类型
6 cinder transfer-create <volume> --dispaly-name //创建传输
显示详细信息
1 cinder show <volume> //显示volume详情
2 cinder metadata-show <volume> //显示volume下元数据
3 cinder backup-show <backup> //显示backup详情
4 cinder qos-show <qos> //显示qos详情
5 cinder snapshot-show <snapshot> //显示快照详情
6 cinder snapshot-metadata-show <snapshot>//显示快照元数据详情
7 cinder transfer-show <transfer> //显示传输详情
8 cinder quota-show <tenant_id> //显示一个租户下面的quota详情
删除类
1 cinder delete <volume> //删除volume
2 cinder force-delete <volume> //强制删除volume
3 cinder backup-delete <backup> //删除备份
4 cinder qos-delete <qos_specs> --force <True|False> //删除qos
5 cinder quota-delete <tenant_id> //删除租户下的quota
6 cinder snapshot-delete <snapshot> //删除快照
7 cinder type-delete <id> //删除类型
8 cinder transfer-delete <transfer> //删除传输
迁移
cinder migrate [--force-host-copy <True|False>]
<volume> <host> //迁移
重命名
cinder rename [--display-description <display-description>]
<volume> [<display-name>] //重命名