目录
OpenStack简介
OpenStack是一个开源的云计算管理平台项目,它是一套用于部署和管理云端计算资源的软件。OpenStack提供了基础设施即服务(IaaS)的应用程序,允许用户和管理员从个人电脑到大型多租户环境部署和管理大量的计算、存储和网络资源池。OpenStack的核心服务包括Nova(计算)、Neutron(网络)、Cinder(块存储)、Swift(对象存储)、Glance(镜像服务)和Keystone(身份验证服务)等。
Openstack中的存储:
虚机对块存储的要求:
一般在我们创建实例,也是虚机的时候会伴随着创建一个卷,他会创建并挂载在我们的虚机上,随之我们可以对卷进行操作等。在我们删除虚机的时候卷也随之删除。
Cinder介绍
Cinder是OpenStack中的块存储服务,主要用于为虚拟机提供持久性块存储设备。它的设计目标是为虚拟机提供一个独立于虚拟机生命周期之外的数据存储,这样即使虚拟机关机了,数据仍然会被保存下来。
主要组件
- cinder-api:提供RESTful API来处理客户端请求,如创建、删除和附加卷等。
- cinder-scheduler:根据策略选择合适的后端存储节点来创建卷。
- cinder-volume:在选定的后端存储上执行实际的卷创建、快照、备份等操作。
- cinder-backup:处理卷的备份与恢复操作。
- cinder的数据库:用于存储状态信息和其他元数据。
- Cinder的开发工作主要集中在scheduler和driver,以便提供更多的调度算法、更多的功能、以及指出更多的后端存储
- Cinder组件之间的RPC靠消息队列(Queue)实现
- Volume元数据和状态保存在Database中,一般是在cinder库中的volume中,我们从cinder list看到的数据都是从中拿取。
Cinder 基本功能
-
卷操作
- 创建卷
- 从已有卷创建卷(克隆)
- 扩展卷
- 删除卷
-
卷-虚机操作
- 挂载卷到虚机
- 分离虚机卷
-
卷-快照操作
- 创建卷的快照
- 从已有卷快照创建卷
- 删除快照
-
卷-镜像操作
- 从镜像创建卷
- 从卷创建镜像
部分截图:
Cinder命令行
通用命令
cinder --version
: 显示Cinder客户端的版本信息。cinder help
: 显示所有可用命令的帮助信息。cinder help <command>
: 获取特定命令的帮助信息。
卷操作
cinder list
: 列出所有的卷。cinder show <volume-id>
: 显示特定卷的详细信息。cinder create <size>
: 创建指定大小的新卷。cinder delete <volume-id>
: 删除指定的卷。- cinder delete --force <volume-id>: 无视状态删除指定的卷
cinder resize <volume-id> <new-size>
: 扩展或缩小卷的大小。cinder extend <volume-id> <new-size>
: 扩展卷的大小。cinder type-create <type-name>
: 创建新的卷类型。cinder type-list
: 列出所有卷类型。cinder type-key <type-name> set <key>=<value>
: 设置卷类型的键值。cinder type-key <type-name> unset <key>
: 移除卷类型的键值。
卷快照操作
cinder snapshot-create <volume-id> [--name <snapshot-name>]
: 为指定的卷创建快照。cinder snapshot-list
: 列出所有的快照。cinder snapshot-show <snapshot-id>
: 显示特定快照的详细信息。cinder snapshot-delete <snapshot-id>
: 删除指定的快照。cinder snapshot-update <snapshot-id> <metadata>
: 更新快照的元数据。cinder snapshot-restore <snapshot-id>
: 从快照恢复卷。
卷备份操作
cinder backup-create <volume-id> [--name <backup-name>]
: 创建卷的备份。cinder backup-restore <backup-id> <volume-id>
: 将备份恢复到指定的卷。cinder backup-list
: 列出所有的备份。cinder backup-show <backup-id>
: 显示特定备份的详细信息。cinder backup-delete <backup-id>
: 删除指定的备份。
卷与实例的操作
cinder attach <volume-id> <instance-id> <device>
: 将卷挂载到实例上的指定设备。cinder detach <volume-id>
: 将卷从实例上分离。cinder initialize-connection <volume-id> <instance-id>
: 初始化卷与实例之间的连接。cinder terminate-connection <volume-id> <instance-id>
: 终止卷与实例之间的连接。
卷迁移
cinder migration-start <volume-id> <host>
: 开始将卷迁移到另一台主机。cinder migration-check <volume-id> <host>
: 检查卷迁移的状态。cinder migration-complete <volume-id>
: 完成卷迁移。cinder migration-cancel <volume-id>
: 取消正在进行的卷迁移。cinder migration-get-progress <volume-id>
: 获取卷迁移进度。
其他
cinder service-list
: 列出所有运行的服务。
Cinder工作流程
- 用户通过cinder-api请求创建一个新的卷。
- cinder-api通过RPC将请求发送给cinder-scheduler。
- cinder-scheduler基于配置的权重算法选择一个最合适的volume节点。
- cinder-volume服务在被选中的节点上创建卷,并将结果返回给cinder-scheduler。
- cinder-scheduler更新请求状态并将结果返回给cinder-api。
- cinder-api最终将结果返回给用户。
Cinder插件
由上图可见,Cinder是多样化的,可以对接多种样式的存储,在我们一般日常使用中lvm是作为我们最简单的测试和开发。
ISCSI简介:
ISCSI(Internet Small Computer System Interface)是一种协议,它允许在IP网络上传输SCSI指令和数据。iSCSI Target则是指接收来自iSCSI Initiator SCSI命令的服务器或设备。简单来说,iSCSI Target就像是一个存储服务器,它提供块级别的数据存储访问给网络上的其他设备。
举个栗子:你有一个磁盘,我想用你的磁盘,我就可以通过一种协议去把你的磁盘挂载到我的本地。这个协议就是ISCSI,其中挂载的细节我在此就不赘述了。大家有兴趣可以自行搜索。
回归Cinder里面的ISCSI机制,在Cinder中Control节点会把lvm卷通过ISCSI挂载给他的计算节点。因为我了解的也不够深刻,我只能理解表面的一层意思是不让让自己的控制节点负载过大。