暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

细说OpenStack块存储服务Cinder

爱数 2015-10-12
704

从国内外趋势来看,公有云、私有云、混合云在内的云计算正在逐步扩大整个IT产业份额已成为共识。各行业积极参与到这股虚拟化浪潮中,其中作为开放性的云平台, OpenStack是各大厂商和客户竞相追逐的对象。

OpenStack到底为何物?

OpenStack是当前最为活跃的为公有云及私有云的建设和管理提供软件的开源项目,提供了完整的IaaS(基础设施即为服务)解决方案。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。

OpenStack由于其开放性,得到了全球大量的组织支持,大量开发人员参与,发展迅速。国际上已经有很多使用OpenStack搭建的公有云、私有云、混合云,而在国内OpenStack的热度也在逐渐升温,华为、中兴、爱数等传统厂商等都对OpenStack产生了浓厚的兴趣并参与其中。OpenStack很可能在未来的基础设施即服务(IaaS)资源管理方面占据领导位置,成为公有云、私有云及混合云管理的“云操作系统”标准。

OpenStack由三大核心组件构成:

Nova(计算)、Cinder(块存储)和Neutron(网络)

今天我们要重点介绍的主角就是Cinder

Cinder子项目是从Nova项目中的持久化块存储功能分离出来的,用于管理块存储设备并为Nova实例提供块存储。Cinder整体框架有着良好的设计,每个服务都可以单独运行,支持无限横向扩展,各个服务之间的通信是基于RPC(Remote Procedure Call)的方式。

首先我们来看看Cinder的结构,包括如下三部分:

  • cinder-api:提供了块存储服务与外界交互的接口,接收并转发API请求

  • cinder-scheduler:用于调度创建卷请求到最优的cinder-volume节点执行

  • cinder-volume:处理外部请求并直接与块存储设备进行交互

cinder整体架构及处理流程如下:

1、当客户端发送给一个创建卷的HTTP请求时,请求会被cinder-api接收,cinder-api收到消息后会把HTTP请求转化成RPC的消息格式,并把消息发送MQ消息队列服务器。

2、MQ消息队列服务器把消息发送到cinder-scheduler服务,收到消息后,根据相应的调度策略选择一台cinder-volume,并把消息发送MQ消息队列服务器。

3、MQ消息队列服务器把消息发送到cinder-volume,收到消息后,再调用后端存储的驱动程序与块存储设备交互,并在块存储设备创建一个真正的虚拟卷。

Cinder有如下几个特点:

  • 存储系统通过ScaleOut可以达到PB级别的扩展空间

  • API兼容Amazon EC2

  • 开发标准,支持多种存储后端

  • 组件化的架构

  • 统一管理界面

虽然Cinder已经经过几个版本的迭代,功能得到极大完善,稳定性也大大地提高,但是Cinder仍然存在一些问题:

  • Cinder提供的调度策略比较简单,无法满足一些负载严重不均衡的情况

  • Cinder卷管理的基本原则是在共享存储上创建一个lun, 然后把这个lun作为一个block device给attach到一个虚拟机上。但是对于当前主流的存储,能够支持的最大lun数量非常有限,比如我们常见的存储, 最多能支持288个lun,如果一个VM平均3个卷,不管这些VM是offline还是online, 这个存储最多只能支持90个VM。

  • Cinder目前在管理方面(如命令行和web界面)虽然提供了诸如创建快照和克隆等功能,但是对于快照回滚等操作,还是需要到存储设备上去做,无法做到真正的统一管理。

目前,主流的存储厂商都积极对Cinder提供了驱动支持。爱数的AnyStorage存储系统也对Cinder提供了完整的驱动支持,可以直接在OpenStack管理爱数的存储,支持创建卷、删除卷,以及创建快照和克隆等高级功能。

OpenStack新加入的项目众多,OpenStack整体日益庞大。据统计OpenStack整体的代码量已经超过四千多万行,对于如此庞大的一个项目,稳定性及测试工作也是显得越来越重要。

文章转载自爱数,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论