《企业私有云建设指南》一2.4.2 OpenStack
2.4.2 OpenStack
除了计算资源以外,OpenStack还管理存储资源。OpenStack可以为云服务或云应用提供所需的对象及块存储资源;因对性能及价格有需求,很多组织已经不能满足于传统的企业级存储技术,而OpenStack可以根据用户需要提供可配置的对象存储或块存储功能。
在OpenStack私有云环境中可能存在多种不同类型的存储资源,比如传统的企业级存储和新兴的软件定义存储,按照存储类型可以分为块存储和对象存储等。作为管理数据中心资源的云操作系统,OpenStack通过Cinder和Swift项目来管理这两种存储资源。
如图2-11所示,与Cinder相比,Swift有些不同,它是一个开源对象存储项目,并不提供存储虚拟化功能,因此,本节我们主要讨论Cinder。与Nova项目类似,Cinder服务本身也不提供存储功能,而是通过虚拟化各种后端存储形成虚拟存储池,以供虚拟机和应用使用。
1.虚拟机对块存储的要求
Cinder是一个资源管理系统,负责向虚拟机提供持久块存储资源,它把不同的后端存储进行封装,向外提供统一的API,对卷进行管理并贯穿虚拟机的整个生命周期。如图2-12所示。
Cinder的基本功能:
◆ 创建卷
◆ 从已有卷创建卷(克隆)
◆ 扩展卷
◆ 删除卷
◆ 挂载卷到虚拟机
◆ 从虚拟机上分离卷
◆ 创建卷快照
◆ 从已有卷快照创建卷
◆ 删除卷快照
◆ 从镜像创建卷
◆ 从卷创建镜像
Cinder通过插件式驱动来支持不同的后端存储,如图2-13所示。
2.存储池管理
Cinder-volume服务运行在存储节点上,管理着存储空间。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个虚拟块存储资源池,如图2-17所示。
OpenStack Cinder主要包括如下几个子模块(如图2-18所示):
◆ Cinder-api:提供Cinder REST API。
◆ Cinder-scheduler:将客户端的卷创建请求调度到某个后端存储上,其工作原理类似于Nova-scheduler。
◆ Cinder-volume:调用后端存储的接口进行卷操作。
3.Volume Type和QoS
运行不同应用的虚拟机对存储可能有不同要求,比如,对I/O要求高的虚拟机自然要求使用高I/O的后端存储,对数据加密有要求的虚拟机则要求后端存储支持卷加密功能,有些虚拟机则有QoS要求。一方面,Cinder-volume周期性地将后端存储的功能和容量等信息上报给Cinder-scheduler;另一方面,Cinder通过Volume Type功能来支持这种需求。
Volume Type是定义某个服务级别的标准的集合,它由云管理员定义,用户在创建卷的时候根据需要选择使用某种Volume Type;带有某种Volume Type的卷在被创建后也可以被修改。
举个例子:如图2-19所示,用户需要创建一个SLA为“Silver”、大小为520GB的卷,他输入大小和Volume Type;Cinder-scheduler则会根据该Volume Type中定义的存储能力,找到一个满足条件的后端存储(Cinder backend),再将卷创建请求调度到该后端存储对应的Cinder-volume服务上。
如图2-20所示,Cinder支持两种类型的QoS:
◆ 一种是“front-end”类型,通过QEMU实现。
◆ 一种是“back-end”类型,通过后端存储实现。
用户使用Cinder QoS的通常步骤是:
◆ 创建一个QoS spec:cinder qos-create high_read_low_write consumer= "front-end" read_iops_sec=1000 write_iops_sec=10
◆ 创建一个Volume Type:cinder type-create type1
◆ 将QoS spec和Volume Type关联起来:cinder qos-associate 9476d6a5-8903-4383-bb0a-bdc753843329 ca306ba5-fe9e-4b87-84b1-49823057c528
◆ 创建一个使用上述Volume Type的卷:cinder create --display-name high-read-low-write-volume volume-type type1 100
◆ 将卷挂载到某个虚拟机:nova volume-attach vm-1 high-read-low-write-volume/dev/vdb
- 点赞
- 收藏
- 关注作者
评论(0)