APP下载

支持不同存储方式的 OpenStack 云平台设计与实现

2016-06-13冯伟斌张云勇王志军

电信科学 2016年4期
关键词:网络通信硬盘分布式

冯伟斌,张云勇,王志军

(中国联合网络通信有限公司研究院,北京 100032)

支持不同存储方式的 OpenStack 云平台设计与实现

冯伟斌,张云勇,王志军

(中国联合网络通信有限公司研究院,北京 100032)

随着云计算的发展,用开源软件实现云平台的搭建日益便捷,目前云平台通常采用本地硬盘或共享存储两种方式来存储虚拟机文件,针对两种存储方式存在的缺点 ,提出了一种支持两种存储方式的 OpenStack 云平台搭建方法,搭建的云平台有效实现了对两种存储方式的支持。 用户通过指定不同的参数,创建相应存储方式的虚拟机,从而灵活满足了不同业务的存储需求。 所提方法解决了云平台对不同存储方式的支持,有效促进了现网系统向 OpenStack 云平台的迁移,对业务平台云化具有重要的推动作用。

云计算;虚拟机;OpenStack;本地硬盘;共享存储

1 引言

OpenStack 是 目 前 业 内 最 流 行 的 开 源 云 平 台[1],能 够 快速 帮 助 用 户 实 现 类 似 于 Amazon EC2 和 S3 的 云 基 础 设 施服 务 。OpenStack 最 新 版 本 Kilo 已 经 于 2015 年 4 月 30 日正 式 发 布 ,这 是 OpenStack 的 第 11 个 版 本[2]。与 OpenStack云平台的虚拟机存储架构不同,虚拟机可以创建在 PC服务器的本地硬盘上,也可以创建在基于 PC服务器搭建的分布式共享存储上,两者各有优缺点。 本地硬盘虚拟机的性能更为稳定,但不支持实时迁移。共享存储虚拟机支持实时迁移,但性能受到网络带宽的限制。

本文充分考虑了基于本地硬盘或共享存储的虚拟机的优缺点,基于 OpenStack 实现了一种能够在本地硬盘或共享存储上创建虚拟机的云平台。用户通过指定不同参数,就可以创建相应存储方式的虚拟机,从而灵活满足业务的不同需求。

2 OpenStack 组件简介

目前 OpenStack 主 要 包 括 8 个 核 心 组 件 ,分 别 是 用 户界 面 (Horizon)、计 算 (Nova)、认 证 (Keystone)、网 络(Neutron)、监 控 (Ceilometer)、 镜 像 (Glance)、 块 存 储(Cinder)、对 象 存 储 (Swift) ,如 图 1 所 示 。每 个 组 件 都 是 多个服务的集合,一个服务意味着运行着的一个进程。

(1)用户界面

为所有 OpenStack 服务提供一个模块化的基于 Django 的界面,通过这个界面,不论是最终用户还是运维人员都可以完成大多数的操作,如启动虚拟机、分配 IP 地址、动态迁移等。

(2)计算

类似 于 Amazon 的 EC2 服务,为 用 户 提 供 虚 拟 机 的 增 、删、改、查服务,如虚拟机的创建、重启、销毁、迁移等。

(3)认证

为所 有 OpenStack 服 务 提 供 身 份验 证 和 授 权功 能 ,跟踪用户权限,提供一个可用服务及 API列表。

(4)网络

提供云计算环境下的虚拟网络功能,允许用户创建自己的虚拟网络并连接各种网络设备接口。

(5)监控

将 OpenStack 内 部 发 生 的 几 乎 所 有 的 事 件 都 收 集 起来,然后为计费和监控以及其他服务提供数据支撑。

(6)镜像

提供虚拟机镜像的存储、查询和检索服务,通过提供一 个 虚 拟 磁 盘 映 像 的 目 录 和 存 储 库 ,为 Nova 虚 拟 机 提 供镜像服务。

(7)块存储

类 似 于 Amazon 的 EBS 服 务 ,为 用 户 提 供 块 存 储 服务,能够创建数据卷,并挂载到虚拟机上。

(8)对象

存储类似于 Amazon 的 S3 服 务 ,为 用 户 提 供 对 象 存 储服务,能够以低成本的方式管理大量无结构数据。

图1 OpenStack 主要组件架构

3 OpenStack 云平台存储架构

与虚拟机存 储 直 接相关的 OpenStack 组 件 包括 Nova、Glance、Cinder,如 图 2 所 示 ,目 前 OpenStack 已 经 支 持 三 者在 Ceph、GlusterFS 等分布式共享存储上的统一存储。其 中Nova 负 责 虚拟 机 整 个 生 命 周 期 的 管 理 ,例 如 创 建 、重 启 、关 机 、销 毁 等 ,虚 拟 机 自 身的 磁 盘 文 件 由 Nova 负 责 生成 ,属于本地易失性存储,即当虚拟机销毁后,相应的磁盘文件 也 会 被 销 毁 ;Glance 提 供 虚 拟 机 镜 像 服 务 ,负 责 虚 拟 机镜像文件的存储、查询和检索;Cinder为虚拟机提供持久块存储服务,虚拟机创建完成后,可以通过 Cinder挂载块设备 ,并 具 备 快 照 、备 份 等 功 能 ,类 似 于 AWS 的 EBS 服 务[3]。

图2 OpenStack 云平台的虚拟机存 储 架 构

(1)本地硬盘虚拟机即虚拟机本身的文件位于 PC 服务器的本地硬盘上

主 要 优 点 在 于 服 务 器 硬 盘 通 过 做 RAID (redundant arrays of independent disk),除 非 发 生 硬 件 故 障 ,否 则 不 会 出现软件问题,因此,虚拟机性能更稳定。同时,由于磁盘 I/O 不涉及网络流量交换,性能也更为高效。主要缺点在于虚拟机在不同服务器之间迁移时,需要将虚拟机文件从一台服务器通过网络复制到另外一台服务器,导致不支持实时迁移,同时还需对虚拟机文件做额外备份。

(2)共享存储虚拟机即虚拟机本身的文件位于分布式共享存储上

目 前 业 内 流 行 基 于 Ceph 或 GlusterFS 开 源 软 件 实 现[4]。由于所有计算服务器都可以访问共享存储,因此,自然支持虚拟机的实时迁移,同时分布式共享存储自带对文件进行多个备份,可靠性更高。主要缺点在于虚拟机进行读写操作 时 ,涉 及 整 个 云 平 台 中 的 网 络 流 量 交 换 ,因 此 ,磁 盘 I/O会受到网络带宽的限制,同时分布式共享存储在软件实现层面较为复杂,与服务器硬盘相比,稳定性略差。

4 OpenStack 云平台的设计实现

OpenStack 云 平 台 中 虚 拟 机 的 创 建 由 Nova 组 件 负 责 ,整个服务调用过程如图 3所示,每个服务都是单独的进程实 例 ,之 间 通 过 RPC 相 互 调 用[5]。其 中 Nova-API 负 责 验 证和 处 理 HTTP 请 求 信 息 ,对 外 提 供 REST API供 用 户 调 用 ;Nova-conductor负 责 与 数 据 库 交 互 ,提 高 数 据 库 访 问 的 安全 性 ;Nova-scheduler 负 责 服 务 调 度 ,决 定 虚 拟 机 实 例 创 建在 哪 个 服 务 器 上 ;Nova-compute 作 为 虚 拟 机 管 理 程 序 ,具体完成虚拟机的创建和控制。

用 户 调 用 OpenStack 云平台的 Keystone 服 务 得 到 认 证token 后 ,通 过 调 用 REST API, 向 Nova-API 服 务 发 送 创 建虚拟机的 HTTP 请求。 虚拟机创建的函数调用过程见算法1,算 法 1 为 OpenStack 虚 拟 机 创 建 的 函 数 调 用 过 程 的 伪代 码 ,OpenStack 最 终 调 用 nova/virt/libvirt/driver.py 中 的_create_image 和 _create_domain_and_network 函 数 具 体 创建虚拟机实例,表示控制虚拟机文件存储位置的是_create_image 函 数 。

算法1 虚拟机创建的函数调用过程

因 此 ,通 过 修 改 _create_image 函 数 可 以 支 持 不 同 的 存储方式,伪代 码简单 实现 见算法 2,其中,当 stor_type=1 时,创 建 本 地 硬 盘 的 虚 拟 机 ;当 stor_type=2 时 ,创 建 共 享 存 储 的虚拟机。同样在虚拟机迁移或快照函数里,也需要配置以下代码。如果云平台想继续增加对不同共享存储系统的支持,只需简单增加 stor_type参数的值即可。

图3 不同存储方式的虚拟机创建流程

算法2 伪代码简单实现

本文充分考虑基于本地硬盘或共享存储的虚拟机的优 缺 点 , 通 过 分 析 和 修 改 OpenStack 源 码 ,设 计 和 实 现 了一种能够同时在本地硬盘或共享存储上创建虚拟机的云平台。前台通过指定不同参数,可以使后台创建相应存储形态的虚拟机,具体设计流程如图 4所示。

具体创建步骤如下所述:

·前台通过参数输入模块指定虚拟机创建的具体参数;

·触发请求模块向后台系统发出虚拟机创建请求;

· 服务调度模块根据虚拟机创建的具体参数,将虚拟机创建请求调度到1台具体的物理服务器上;

·虚拟机创建模块调用路径转换模块,根据前台指定的参数,得到本地磁盘和共享存储对应的路径,然后调用资源配置模块,在物理服务器上配置硬件资源;

· 资源配置完成后,虚拟机创建模块在相应的存储路径上创建出虚拟机。

5 OpenStack 云平台验证环境

目 前 OpenStack 云 平 台 支 持 GlusterFS、Ceph 等 多 种 共享存储系统,本文通过搭建 OpenStack 实 验 室 环 境 ,采 用GlusterFS 分 布 式 文 件 存 储 系 统[6],对 以 上 想 法 进 行 了 验 证 。如 图 5 所 示 ,nn20 为 OpenStack 云 平 台 的 一 个 计 算 节 点 ,其 中 /var/lib/nova/instances_local为 本 地 硬 盘 的 挂 载 点 ,/var/lib/nova/instances 为 GlusterFS 共 享 存 储 系 统 的 挂 载 点 ,虚拟机自身的磁盘文件会分别存储在两个挂载点下的private_dev_sdz 目 录 。

通 过 在 虚 拟 机 创 建 脚 本 中 指 定 不 同 的 stor_type 值 ,如图 6所示,就可以创建不同存储方式的虚拟机。

图4 不同存储方式的虚拟机创建流程

图5 OpenStack 云平台中本地硬盘和 共 享 存 储 的 挂载点

图6 OpenStack 云平台中的虚 拟 机 创 建 脚 本

如 图 7 所 示 ,当 stor_type=1 时 ,虚 拟 机 test0-nn20 所 在的 目 录 instance-00000971 位 于/var/lib/nova/instances_local/private_dev_sdz/目 录 下 ,属 于 本 地 硬 盘 ;当 stor_type=2 时 ,虚 拟 机 test1-nn20 所 在 的 目 录 instance-0000096f位 于 /var/lib/nova/instances/private_dev_sdz/目 录 下 ,属 于 GlusterFS 共享存储。

最 后 test0-nn20 和 test1-nn20 两 台 虚 拟 机 分 别 向 计 算节 点 nn22 进行实时迁移,结 果 如 图 8 所 示 。对本地硬盘虚拟 机 test0-nn20 执 行 nova live-migration 命 令 后 ,系 统 提 示不 支 持 迁 移 , 对 共 享 存 储 虚 拟 机 test1-nn20 执 行 Nova live-migration 命 令 后 ,则 成 功 迁 移 到 计 算 节 点 nn22。

图7 OpenStack 云平台中虚拟机文件所在目录

图8 不同存储方式的虚拟机迁移结果

6 结束语

云平台通常采用本地硬盘或共享存储来存储虚拟机自身文件,两种存储方式各自存在优缺点。本文基于OpenStack 开源软件,实现了云平台 对两种存 储 方 式的同时支持。用户通过指定不同参数,就可以创建相应存储方式的虚拟机,从而灵活满足业务的不同需求。本文能够促进 现 网 系 统 向 OpenStack 云 平 台 进 行 迁 移 ,对 业 务 平 台 云化具有重要的推动作用。

[1] Open source cloud computing technology options [J].Silicon Valley,2012(1):66.

[2] OpenStack community website [EB/OL]. [2015-10-01].http://www.openstack.org/.

[3] Amazon EBS website[EB/OL]. [2015-10-01].https:/aws.amazon. com/cn/ebs/.

[4] GlusterFS and Ceph performance test report [EB/OL].[2015-10-01].http://www.openstack.cn/?p=2215.

[5] A OpenStack access request between the components of the call process[EB/OL]. [2015-10-01].http:/www.infoq.com/cn/articles/openstack-access-request-calling-process.

[6] Gluster community website [EB/OL]. [2015-10-01].http:/www. gluster.org/.

Design and implementation of OpenStack cloud platform for different storage modes

FENG Weibin,ZHANG Yunyong,WANG Zhijun
Research Institute of China United Network Communications Group Co.,Ltd.,Beijing 100032,China

With the development of cloud computing,it is more convenient to implement cloud platform by using open source software,cloud platforms usually use local hard disk or shared storage to store virtual machine file.In view of the advantages and disadvantages of these two kinds of storage modes,a method supporting two kinds of storage modes in cloud platform building based on OpenStack was presented.Users specified different parameters to create virtual machine in a corresponding storage mode,so as to meet the needs of different storage business.The method solved the support of cloud platform for different storage modes,promoted the existing network system to migrate to OpenStack cloud platform and played an important role in cloud service platform.

cloud computing,virtual machine,OpenStack,local disk,shared storage

TP393

:A

10.11959/j.issn.1000-0801.2016097

冯伟斌(1982-),男,中国联合网络通信有限公司研究院工程师,主要研究方向为云计算、智慧城市、行业信息化等。

张云勇(1976-),男,博士后,中国联合网络通信有限公司研究院高级工程师,中国通信学会、电子学会、计算机学会高级会员,主要研究方向为下一代网络、网络融合、云计算、大数据等。 曾作为主要研究人员主持和参与总装备部项目、教育部博士点基金项目、“863”计划、“973”计划、国家自然科学基金项目、国家重大专项项目。

王志军(1976-),男,中国联合网络通信有限公司研究院高级工程师,平台与产品实验室、云计算实验室主任,主要研究方向为业务平台及支撑系统体系架构、面向移动互联网的开放平台、新业务及下一代网络等。

2015-12-08;

2016-03-09

猜你喜欢

网络通信硬盘分布式
HiFi级4K硬盘播放机 亿格瑞A15
Egreat(亿格瑞)A10二代 4K硬盘播放机
基于网络通信的智能照明系统设计
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
分布式光伏热钱汹涌
谈计算机网络通信常见问题及技术发展
分布式光伏:爆发还是徘徊
我区电视台对硬盘播出系统的应用
基于DDS的分布式三维协同仿真研究