开发者学堂课程【高校精品课-长安大学 -基于混合式教学的云计算课程建设:3.2.3存储服务开源 Openstack】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1073/detail/15476
3.2.3 存储服务 开源 Openstack
内容介绍:
一、Openstack 存储服务
二、Cinder 架构
三、Swift 应用场景
一、OpenStack 存储服务
Openstack 的存储服务。Openstack 的存储服务,也是与亚马逊的 AWS 和阿里云相似,它也支持三种类型的持久性存储块存储,文件存储和对象存储。那么持久性存储是指虚拟机这个中止以后持久性存储上的数据?另外要声明一下,Openstack它也支持临时存储,那么如果只部署了nova 服务,则默认分给虚拟机的磁盘是临时的,当虚拟机终止后,存储空间也就会被释放,那么默认情况下,临时存储是以文件的形式放置在其节点的本地次。因为这个 Openstack 的这个文件存储,,目前使用比较少,所以我们这个部分,只介绍存储服务这个块存储服务新的对象,存储符文,Swift 首先重点介绍到这个新的,对 Swift 做一个简单的这个介绍。
1、OpenStack 持久化存储简介
那么来看这个 Openstack 的这个持久化存储,包括块存储,非常存储和文件存储存,储存的新的对象存储的。那么块存储,它的操作对象就是磁盘和直接挂在了主机,一般用于主机的直接存储空间和数据,用 bus 和sin 都可以提供块存储,还有对象存储,它的操作对象是对象 object,那么一个对象名称就是一个域名名称,可以直接通过 rest API 的方式来访问,那么文件存储操作对象就是文件和文件夹。在存储系统上增加了这个文件,系统再通过 FS 和 CS 协议进行访问。
2、OpenStack 在不同场景下的储存选择(讨论)
那么来看一下 Openstack 在不同场景下的一个存储选择,可以看一下场景一,要测试 Openstack 虚拟机的发放功能,测试完删除虚拟机,那么场景二,Openstack 的生长环境中的虚拟机需要保证虚拟机数据能够长期保存。那么场景三,我们存放Openstack 中的 class 的镜像文件,那我们根据前面我们学到的 Openstack 存储,它的持久性存储临时。它的直角形存储中都包括二个存储、对象存储和空间存储。同学们可以根据这种情况来自己做一个选择,看它在它的下面适合选择哪一种存储方式。
二、Cinder 架构
那么首先看它的二部分,这是一个新的的架构,首先它是 Cinder client,它封装了这个新的提供的这个新的 plant 封装了新的提供的 rest 接口,以 client 的形式提供主持,那么新的 API 对外提供 rest 新的 API 对外提供 rest 的 API,对操作需求进行解析。对 API 进行路由,寻找相应的方法,包含卷的增删改查,快照的增删改查,备份的类型管理,下载卸载等等。那么还有一个,就是 cinder-schedule 了,负责收集它的后端的就是它的 backup,上报的容量能的信息,然后根据设定的算法调度选则在合适的主机进行创建等操作。那新的 volume 是新的 volume,它是一个这个多节点部署的,使用不同的配置软件接入不同的后端设备,它由各存储插上插入驱动代码,设备交互完成设备容量和那些信息收集这样的操作,那么新的backup 实现卷的数据备份到其他的介质,那么还有一个就是 data base,它的circle database 提供这个存储卷,快照备份 server 等的数据,支持这个 medical circle 、my circle 等 circle 数据库。
1、Cinder 组件-API
Cinder 组建的 API,新的 API,它对外提供这个 west API,对操作需求进行解析,并调用处理方法说了,它可以实现卷的创建、删除,对快照的创建删除,时代查找,以及卷的这种挂载和卸载。这个卷挂载、卸载是往外调用来的,同时,它还有一些这个其他的这个卷的类型的管理,配额的管理备份。
2、Cinder 组件 – Scheduler
那么 Cinder 组建的 schedule 他负责收集后端上报的容量能力信息,根据设定的算法完成这个卷到指定的新的 volume 的热度,新的 schedule 通过过滤和这个称权筛选出这个合适的后端,这个是他的一个工作过程,列出所有的后端,根据后端的能力进行筛选,根据权重最后端排序返回最合适的后端。
3、Cinder 组件 – Volume
这个 volume,它是一个多节点部署的,它使用不同的配置文件,然后接入不同的后端设备,由各存储厂商这个插入驱动代码与设备进行交互,完成设备容量和能力信息的收集。那么它这个新的插件有这个基于软件的和基于硬件的。基于软件的,里头有基于文件系统的这一块的。那么基于硬件的这个有基于 fever China 的 NFC这个 NFS,那么可以通过添加不同厂家的驱动,它可以支持不同类型和型号的商业存储设备,比如说二维存储 FS,这个分布式文件系统在这个地方,它基于文件系统的,可以支持那个 DFS,这个分布式文件系统的分布式文件系统,这个 Gluster 、FS,还有这个 RPD,RPD 是 safe 的里头的,还有通过这个 FS 支持纳斯存储,那么在这一块的,是主要通过 IBM 支持本地的存储,就是这个新的这个保留。
4、Cinder 创建卷流程
Cinder 创建卷流程,首先将创建卷的类型和创建卷的信息,发到新的 API,那么新的 API 会请求这个 schedule 创建卷新的 schedule 了,在读取调度算法过滤并选择最优的一个 host,然后会将请求发到对应的这个后端,这个到新的 value 们,就请求阵列的后端创建指定的卷就可以创建卷了,那么它是新的 driver 后端的这个驱动,那么另外一个,我们新的 volume 它还可以定期的收集底层后端的这个容量信息容量信息,然后去阵列的信息,然后,并通知这个定期上报通知这个 schedule了,更新内存中的这个后端信息。
5、Cinder 挂载卷流程
下面来看一下 Cinder 挂载卷的一个流程。那么这个挂卷,是通过这个新这个 nova和 cinder 的配合,最终加一个原单的键,原单的卷,挂载到虚拟机所在的这个house 节点上,并最终通过虚拟机管理程序映射到它内部的这个虚拟机中,虚拟机中。那么首先,Nova 会调用这个新的 API 来创建卷,然后,创建卷传递这个主机的信息,比方说主机的名字,还有它的 sgarci 的这个 English 的 name 这些信息,那么新的 API,会将该信息传递给这个新的 value。新的 volume 们,就会通过创建卷时保存的这个主机信息找到对应的这个新的 driver,那么新的 driver,就会通知存储允许该主机访问该卷,并返回该存储的这个连接信息,比如,是 SNC 之后Nova 它就会调用不同存储类型的,这个调用不同的存储类型进行主机识别磁盘的这个代码,那么来实现这个识别磁盘或者文件设备。当这实现这个识别这个文件设备完成以后,那么 nova,就会通知 cinder 已经完成了这个挂载,那么完成以后,那么 nova,会将主机的设备信息传递给 happy weather 来这个实现虚拟机挂载磁盘,那么。这个地方,这就是 SGAS 的 ing 和 XGAS 的 target,通过 SGAS 的协议就可以把卷挂载到它的主机,然后 nova,就会同时 help weather 来实现虚拟机的这个挂载,最后挂载到了这个虚拟机。
下面来看一下这个 Openstack 的这个对象。
三、Swift 应用场景
什么说 Swift,它的应用场景,主要是应用在这个,这一个是做镜像存储的后端,做镜像存储的后端,在 OpenStack 中,它和这个镜像存储 Glance 相结合,为它存储这个镜像文件,还可以做这个静态数据的存储,做这个新的这个备份,此外它还可以存储这个位置文件,做这个数据备份仓库。
1、Swift 的特点
这个 Swift,它这个的一些特点,就是一个是它具有这个极高的这个数据持久性,再一个,它采用完全对称的这种系统架构,那么这就意味着这种的各个节点可以完全对等,所以可以极大的降低系统的一个成本。再一个,它有这个很强的这个可扩展性,那此外,它没有这个单点这个故障点,单个故障点,这些都是它的一些很大的这些所谓这个对象城市的一些特点和优势。
2、Swift 的组件
Swift 的它的一些组件,包括这个 Proxy Server 和 Aount erver 这个代理词,代理服务器,账户服务器,Container Server 容器服务器,对象服务器,还有这个复制器,Replicator、updater、Auditor 这些组件。
3、Swift API
那么 Swift 的这个 API,它也是通过这个 Proxy,它的 Swift API,它是一个就是通过 Proxy server 向外提供基于这个 HTTP 的这个 rest 服务的接口,对账户容器和对象,进行这个 CRUD 的这个操作,那么他的这个 API,他的这个也支持 RESTful 的 API,那么他这个针对不同的这个资源类型,他支持不同的这个API,这个就会有不同的意义,但是对于账户,那么这个 account 实际上是说的 account server,那么容器那么是 container,还有对象是 object,那么它的这个 get 方法就是表示获取容器的列表,那么对于这个容器来说,它就是获取对象的,对于对象来说,它就获取对象,内容和原数据,那么对应的 put 、post 、 delete 和 help 对不同的这个资源类型,账户容器的对象,它都有不同的这个操作含义。
4、Swift 数据模型
那么 Swift,它的这个数据模型是这样的,它设有三层的逻辑结构,就是 account 、continue 和账户中心的对象,它的每层节点数,也没有限制,所以每一层的节点数,它都是可以进行任意扩展的。