Openstack Cinder概念及规划

这里只介绍概念及架构方面,一些具体的操作实战会在后面博客中写。

Cinder介绍

Cinder提供持久化块存储,.一个独立的volume可以灵活的挂载和卸载到不同的VM实例(就好比我们的一块硬盘拔插了)。VM实例可以用cinder volume作为启动盘。Block Storage服务无法提供类似于NFS的共享存储。一个块设备同时只能挂在到一个VM实例。

服务组件

Cinder有如下服务组件:

cinder-api:WSGI应用,接受API请求并发送到cinder-volume处理。

cinder-scheduler:调度器,处理消息队列中的请求,并根据预定策略(Filter Scheduler)选择合适的cinder-volume节点来完成请求。

cinder-volumecinder-volume服务运行在存储节点上,管理块存储设备。该服务会对cinder数据库进行读写操作,通过消息队列与其他服务交互(如cinder-scheduler)。cinder-volume支持多种后端存储。多个存储节点可以组成一个存储资源池。 

cinder-backup:可以将volume备份到多种目标对象(如swift、ceph)。

Messaging queue:在块存储服务之间传递消息,块存储服务和计算节点交互来为VM提供volume。


Cinder其他概念

Back-end Storage Devices.:后端存储设备,默认采用本地LVM VG。此外,Cinder还支持很多种存储。

Users和Tenants (Projects):我的理解是这里也是基于Keystone的权限控制。对于租户而言,cinder quota控制可以做如下限制:创建volume的数量、创建快照的数量、每个租户总空间(volume和快照分享)。用户有权使用哪些volume是通过租户来限制的。控制硬件资源quota是对每个租户启用的,而授予vomle访问权限的key pairs是对单个用户启用的。

Volume Type

Volume Type是一个条件的抽象集合,这个集合用来定义一个特定的服务水平(如惯称的金、银、铜),包含一个key/value pairs列表(可通过cinder extra-specs-list查看)。可以在创建volume时指定volume类型,volume创建后类型是可以修改的。cinder scheduler可以根据volume类型定义来指定存储后端,而且volume类型还可以用来指定存储后端的行为依赖的特殊信息。volume类型名可以任意指定。

当使用cinder-volume节点使用多种后端存储时,必须启用filter_scheduler。scheduler使用 filtering和weighing来选择最优的存储后端。首先,filter scheduler过滤可用的存储后端,默认情况下,AvailabilityZoneFilter,CapacityFilter和CapabilitiesFilter被启用。然后,filter scheduler会通过scheduler weigher权衡先前过滤的存储后端,默认情况下,CapacityWeigheris被启用,此种情况下会优先使用容量较多的存储后端。

Volume类型默认key pairs有:volume_backend_name(在cinder.conf定义的名字)、verdor_name、driver_version、storage_protocol。每个厂商的存储会有自己的Extra Specs。此外,目前cinder还支持Qos,Cinder的Qos主要依赖于frontend(hypervisor)和backend(存储)。

Frontend可以通过吞吐量(total_bytes_sec, read_bytes_sec, write_bytes_sec)、IPOS(total_iops_sec,read_iops_sec,write_iops_sec)来控制。

Backend要依据各厂商实际情况。

为了更好的理解,下面引用netapp的方案图:


Cinder基本功能

  • 创建、删除volume
  • 定义volume "types/extra-specs"
  • 镜像复制到volume或volume复制到镜像
  • 备份volume(到swift、ceph等)
  • 即时点拷贝(volume快照)
  • 从快照创建volume
  • volume QoS
  • 转移volume所有权
  • 基于租户的quato
  • 自定义调度过滤器

架构设计(参考rackspace解决方案)

参考链接:http://www.rackspace.com/blog/laying-cinder-block-volumes-in-openstack-part-2-solutions-design/

scale-out云架构中,性能瓶颈要考虑很多方面。不仅仅要考虑CPU或RAM,存储的负载、带宽和容量需求也很重要。主要有两种解决方案:
1)COTS服务器作为volume节点。
2)第三方存储解决方案。

COTS服务器

存储节点采用COTS服务器作为虚拟存储阵列(VSA)。cinder-volume可以安装在每个存储节点上。推荐配置:

  • 每3TB分配一个core
  • 至少2GB内存,每1TB存储增加250M内存
  • 至少6块物理盘
  • 采用RAID5或RAID 10

推荐采用单独的iSCSI网络。在存储容量需求比较低时,这种方案的成本会比较低,但当需要大容量存储时,就要重新评估了。这种方案的缺点是缺乏冗余,扩展性差,还缺少第三方存储的增值服务:Qos、自动分层、删除功能/压缩、复制等功能。当有多个cinder-volume存储节点时,这些节点实际上是独立的VSA并不共享数据,节点挂掉了后,上面的volume也就用不了。有几种替代方案:

1)  针对实例,在多个存储节点之间对LV做镜像。一个linux VM实例可以通过同时挂载两个存储节点上的volume,然后在这两个volume之间做镜像。这种方法提供了冗余,但是同时损失了50%的容量,相对比较复杂,同时性能也有损失,类似于在实例级别做了软RAID。

2)存储节点使用集群文件系统,这种类似于active-passive工作模式的商业存储。这样造成的性能损失相对少点,也增加了复杂度同时也损失50%的容量。

3)在Cinder项目中未来会增加replication功能,目前存在很多未知数。

第三方商业存储

当采用第三方存储的时候,相对于上面那种方案,会有如下好处:

  • 一个第三方存储提供比单个独立COTS存储节点更大的容量。
  • 第三方存储解决方案可以提供冗余。各个厂商都有相应的方式,还能提供精简配置、分层级基于阵列的快照等。
当使用第三方存储时可以将cinder-volume安装在Openstack控制节点或者专用节点。这种方式不是通过LVM的方式,cinder-volume通过第三方的volume驱动来export一个iSCSI volume。

第三方SDS方案

还有一类解决方案中,cinder的后端存储采用软件定义存储方式,如Ceph、GlusterFS等,这种方式可以使用COTS硬件同时提供商业存储的功能。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值