openstack-cinder
cinder
概念
cinder 是 OpenStack 块存储服务,它的主要功能包括:
-
卷管理:cinder可以创建,删除,扩容和缩小卷。管理员可以通过api或者命令行接口创建卷,指定卷的大小,类型,名称和描述等信息。当需要扩容或缩小卷时,管理员可以通过api或者命令行接口进行操作。
-
卷快照:cinder支持卷的快照,即对现有卷的某个时刻的状态进行备份,可以用于数据的保护和还原。管理员可以通过api或命令行接口创建,删除和还原卷快照。
-
卷的迁移和复制:cinder支持卷的迁移和复制,可以将卷从一个存储后端迁移到另一个存储后端,或者在同一个存储后端中复制卷。管理员可以通过api或命令行接口进行卷的迁移和复制。
-
备份和还原:cinder支持卷的备份和还原,可以将卷的数据备份到其他地方进行保护。管理员可以通过api或者命令行接口创建,删除和还原卷的备份。
-
存储后端支持:cinder支持多种存储后端,包括本地存储,ISCSI,NFS,CEPH,GLUSTERFS等,管理员可以根据需求选择和配置不同的存储后端。
-
多租户支持:cinder支持多租户,可以为不同的租户提供独立的块存储服务,并且可以限制不同租户的配额和权限。
-
高可用性和容错性:cinder具有高可用性和容错性,可以保存存储服务的可用性和数据的安全性。cinder支持多副本和数据荣誉,同时还支持故障转移和自动恢复。
-
网络互通性:cinder可以与其它openstack组件进行交互,如nova,glance等,同时还支持api和命令行接口,可以方便地与其他系统进行集成。
总结
cinder是opensatck平台中的一个重要组件,为云计算环境中虚拟机提供持久化的块存储服务,支持多种存储后端和多租户,并具有高可用性和容错性。cinder的主要优势在于其可扩展性和灵活性,可以根据需要选择不用的存储后端,并且可以通过api和命令行接口和管理。
存储
文件存储
文件存储依靠文件系统来存储文件。文件直接存储在文件系统上,通过ftp,网络文件系统等服务进行访问。特点是使用简单,兼容性好,但响应速度和存储容量一般。
块存储
块存储中的块是值得是存储系统采用的一整块的存储设备,如同一块硬盘。块存储技术通常是指将裸磁盘空间整个映射给主机时使用的技术。因此,块存储可以虚拟出整块硬盘给云主机使用,对云主机的操作系统来说,这就是挂载的物理硬盘。他的特点是响应速度极其快,同时具有高稳定性和可靠性,但受硬件容量限制,其容量不大。
对象存储
对象存储以对象(封装)的形式管理数据。对象和文件最大的不同就是对象在文件基础之上增加了元数据。对象数据可以分为两部分:
- 数据,存储在对象存储服务器中
- 对应的元数据,存储在元数据服务器中
总结
数据通常都是无结构的书,如图片、视频等。元数据值得是对数据的相关描述,例如图片的大小,数据存储的位置信息等。当需要访问某个对象时,先查询元数据服务器获得具体位置信息,再从对象存储服务器中获得具体数据。对象存储主要用于分布式存储,其存储容量巨大,但速度较慢。
文件存储就是存储的文件,文件自己有数据和元数据,对象存储只要被存储了就不可更改,只能下载,修改,在上传。
cinder架构
在块存储中,裸硬盘统称为卷,cinder的任务就是管理卷,包括卷的创建,删除等操作。
cinder的主要模块和功能
cinder-api
接收api请求,调用cinder-volume模块。是整个cinder组件的门户,所有cinder的请求都首先由cinder-api处理。cinder-api向外界暴露若干http rest api接口。在keystone中我们可以查询cinder-api的 endponits。
cinder-volume
数据的存储设备,为volume提供物理存储空间。cinder-colume支持多种volume provider,每种volume provider通过自己的driver与cinder-colume协调工作。
cinder-scheduler
schduler通过调度算法选择最合适的存储节点创建volume。创建volume时,cinder-scheduler会基于容量,volumetype等条件选择出最合适的存储节点,然后让其创建volume
Message Queue
cinder各个子服务通过消息队列实现进程间的通信和相互协作。因为有了消息队列,子服务之间实现了解耦,这种松散的结构也是分布式系统的重要特征
Database Cinder
有一些数据需要存放在数据库中,一般使用mysql。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为"cinder"的数据库
cinder-backup
cinder-backup用于将volume备份到其他存储系统上,目前支持的备份存储系统有swift,ceph,ibmTivoli storage manager(TSM)、glusterFS等,默认是swift。
基本工作流程
cinder组件的主要功能就是对卷进行创建与管理
- cinder-api接收到用户通过管理界面或命令行发起的卷创建请求后,完成必要处理后将其发送到消息队列中
- cinder-scheduler从消息队列中获得请求和数据后,从若干存储节点选出一个能存放改卷的节点,并将消息发送给消息队列
- cinder-volume从消息队列中获得请求后,通过volume-provider调用具体的卷管理系统在存储设备上创建卷
安装完成之后的验证
[root@controller ~]# openstack volume service list
+------------------+----------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+----------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled | up | 2024-09-21T02:59:17.000000 |
| cinder-volume | controller@lvm | nova | enabled | up | 2024-09-21T02:59:17.000000 |
| cinder-backup | controller | nova | enabled | up | 2024-09-21T02:59:15.000000 |
+------------------+----------------+------+---------+-------+----------------------------+
[root@controller ~]#