存储那些事儿(三):OpenStack的块存储Cinder与商业存储的融合
OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算软件,以Apache许可证授权,并且是一个自由软件和开放源代码项目。OpenStack是IaaS(基础设施即服务)软件,让任何人都可以自行建立和提供云端运算服务。此外,OpenStack也用作建立防火墙内的“私有云”(Private
Cloud),提供机构或企业内各部门共享资源。
Cinder提供了OpenStack的Block Service(块服务)。类似于 Amazon 的 EBS 块存储服务,OpenStack 中的实例是不能持久化的,需要挂载 volume,在 volume 中实现持久化。Cinder 就是提供对 volume 实际需要的存储块单元的实现管理功能。这个project是从Nova里分出来的。它的前身是Nova-Volume。虽然Nova变得越来越复杂,而块服务又那么重要,在Folsom版本中,Cinder就从Nova中分离出来了。因为可以和商业存储相结合,所以存储厂商都很积极。
下图是OpenStack的内部架构:
下图是Cinder的架构:
要说的一点是其实它的Component之间也是通过AMPQ进行通信的。如果想了解更多可以移步我的专栏:RabbitMQ从入门到精通
这个设计还是比较简单的(当然Cinder现在的功能还是比较简单的,毕竟项目开始不久):
cinder-api:负责接受和处理 Rest 请求,并将请求放入 RabbitMQ队列。
cinder-scheduler: 处理任务队列的任务,并根据预定策略选择合适的 cinder-volume 节点来执行任务。目前版本的 cinder 仅仅提供了一个 Simple Scheduler, 该调度器选择卷数量最少的一个活跃节点来创建卷。
cinder-volume: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个 Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储,当前版本的 Cinder 为 Volume Service 添加如下 drivers。当然在 Cinder 的 blueprints 当中还有一些其它的 drivers,以后的版本可能会添加进来。
- Coraid (AoE)
- EMC VMAX/VNX (iSCSI)
- GlusterFS (GlusterFS)
- HP 3PAR (iSCSI/FC)
- HP LeftHand (iSCSI)
- Huawei T-series/Dorado (iSCSI)
- IBM Storwize family/SVC (iSCSI/FC)
- IBM XIV (iSCSI), LVM (iSCSI)
- NetApp (iSCSI/NFS)
- Nexenta (iSCSI)
- NFS (NFS)
- RBD (Ceph)
- Scality SOFS (scality)
- Sheepdog (sheepdog)
- Solaris (iSCSI)
- SolidFire (iSCSI)
- Windows Server 2012 (iSCSI)
- Zadara (iSCSI)
在Havana Release中新增加的Driver如下:
- IBM GPFS
- IBM zVM
- EMC Isilon (iSCSI)
- Local disk partitions
- Hitachi HUS (DF850) (iSCSI)
- Dell Equalogic
- Violin Memory v6000 (iSCSI)
接下来看一下在OpenStack中的数据控制流图:
唯一一点要说明的是iSCSI只是一个实例,支持的Protocol还有FC, NFC等。
下面我们通过SMIS来看一下EMC的设备是如何整合到OpenStack中去的:
如果深入了解一下SMIS是如何实现存储的管理的,请移步我之前的一篇文章: 存储那些事儿(一):异构虚拟化一种实现SMIS
如果疑问请留言讨论。
尊重原创,转载请注明出处 anzhsoft: http://blog.csdn.net/anzhsoft/article/details/20472033
参考资料:
1. https://wiki.openstack.org/w/images/3/3b/Cinder-grizzly-deep-dive-pub.pdf
2. https://wiki.openstack.org/wiki/Cinder
3. http://www.ibm.com/developerworks/cn/cloud/library/1402_chenhy_openstackstorage/
最新文章
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 角色权限的配置页面改进优化
- windows 7 语言切换 Vistalizator
- ios 学习 广告图片轮播器
- HDU 1711 (裸KMP) Number Sequence
- Android 如何添加一种锁屏方式
- 现代的新语言--Swift初探
- Linux Kernel系列一:开篇和Kernel启动概要
- C# 语言规范_版本5.0 (第16章 异常)
- 关于Cookie的知识的总结
- React-关于react的思考
- 修改vim的颜色主题 及显示行号
- 杭电ACM1007
- VS2015环境下的提示语法错误:编号的预期结尾后有多余文本(extra text after expected end of number)
- Java学习笔记(二十四):单例设计模式singleton
- MyCP -tx -xt 功能的Java实现
- [Scala] [Coursera]
- C++面试基础知识
- STL_string.ZC
- python3.5学习第一章
- 强化学习3-蒙特卡罗MC
热门文章
- js 数字前面自动补零
- # electron-vue 尝试做个网易云音乐
- Django笔记--视图
- 如何恢复Initial commit之前的源文件
- Ruby 2.x 命名参数特性简介
- 让你的代码量减少3倍!使用kotlin开发Android(四) kotlin bean背后的秘密
- 亲密接触Redis-第三天(Redis的Load Balance)
- Redis之(二)数据类型及存储结构
- Sublime text 添加lua
- [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel