【OpenStack】Cinder简介


前言

近期研究OpenStack相关技术,将学习过程中思路形成文字记录下来并进行分享,以便后期查阅。如有错误请不吝指出,我将虚心学习☺️


一、什么是Cinder?

操作系统得到存储空间一般有两种方式:

  • 块存储:挂接裸硬盘,分区,格式化,创建文件系统;或者直接使用裸硬盘存储数据
  • 文件系统存储:通过nfs等方式挂载远程的文件系统
    在块存储中,裸硬盘通常被称为volume(卷)。

理解了块存储,就能很容易的理解cinder。cinder是OpenStack平台中负责提供块存储服务的组件,它的任务就是管理volume从创建到删除的整个生命周期。

cinder的前身是nova中的nova-volume组件,后来被从nova中剥离出来成为一个独立的OpenStack组件。

二、cinder架构

cinder整体由以下主要模块组成:

  • cinder-api
  • cinder-scheduler
  • cinder-volume
  • cinder-backup

cinder-api

cinder-api对外提供REST API、响应请求、调用cinder-volume,是整个cinder组件的门户。具体来说cinder-api的任务就是:

  • 检查客户端传入的参数是否有效
  • 调用cinder其他子组件处理客户端请求
  • 将其他子组件处理的结果返回客户端

cinder-scheduler

当用户向cinder-api发出请求创建一个volume时,有以下两种场景:

  • 如果用户已经指定存储节点,则cinder-api会直接调用cinder-volume去创建volume
  • 当用户没有指定节点时,cinder-api会将请求发送给cinder-scheduler,然后cinder-scheduler会根据调度算法选择最合适的存储节点创建volume

cinder-volume

cinder-volume运行在存储节点上,负责管理具体存储设备的存储空间。每个存储节点都会运行cinder-volume服务,多个存储节点便组成了一个存储资源池。

  • cinder-volume运行在存储节点
    通过OpenStack平台对volume的指令最后都会由cinder-volume完成。
  • 真正的存储设备是volume provider
    cinder-volume与volume provider一起实现了对volume全生命周期的管理。

volume provider有开源的也有商业的,如LVM、Huawei、IBM、Dell等商业块存储解决方案。

cinder简介.png

但是cinder在这里遇见了和neutron同样的问题,市面上有这么多volume provider,是将cinder-volume设计成与volume provider一一对应的形式吗,但这样就要设计很多代码相似度很高的cinder-volume。在这个问题上,cinder也运用了和neutron同样的思路:
通过驱动架构,cinder-volume为volume provider定义了统一的接口,对于volume provider来说,只要实现这些接口就可以以驱动的形式像插件一样插入OpenStack系统中。

cinder-backup

cinder-backup用于将volume备份到其他存储系统上,目前支持的备份存储系统有swift、ceph、IBM Tivoli storage manager(TSM)、glusterFS等,默认是swift。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了cinder的概念,cinder为OpenStack提供了块存储管理能力,后面的文章将就源码做一个简单导读。

参考文档

  1. Cinder详解
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Openstack 从 Folsom 开始使用 Cinder 替换原来的Nova-Volume服务,为 Openstack 云平台提供块存储服务。 Cinder架构                                                  /- ( LDAP )                              [ Auth Manager ] ---                                     |            \- ( DB )                                     |                                     |                    cinderclient     |                   /             \   | [ Web Dashboard ]-               -[ api ] --  -- [ scheduler ] -- [ volume ] -- ( iSCSI )                   \             /   |                    novaclient       |                                     |                                     |                                     |                                   Cinder服务 API service:负责接受和处理Rest请求,并将请求放入RabbitMQ队列。Cinder提供Volume API V2, 我没有找到格式很好的在线文档,大体可以参见Openstack block storage API V1 Scheduler service: 处理任务队列的任务,并根据预定策略选择合适的Volume Service节点来执行任务。目前版本的cinder仅仅提供了一个Simple Scheduler, 该调度器选择卷数量最少的一个活跃节点来创建卷。 Volume service: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储,当前版本的Cinder为Volume Service如下drivers。当然在Cinder的blueprints当中还有一些其它的drivers,以后的版本可能会添加进来。 本地存储:LVM, Sheepdog 网络存储: NFS, RBD (RADOS) IBM: XIV, Storwize V7000, SVC storage systems Netapp: NFS存储;ISCSI存储则需要OnCommand 5.0和Data ONTAP 7-mode storage systems with installed iSCSI licenses EMC: VNX, VMAX/VMAXe Solidfire: Solidfire cluster Cinder服务的部署 上述的Cinder服务都可以独立部署,cinder同时也提供了一些典型的部署命令: cinder-all: 用于部署all-in-one节点,即API, Scheduler, Volume服务部署在该节点上。 cinder-scheduler: 用于将scheduler服务部署在该节点上。 cinder-api: 用于将api服务部署在该节点上。 cinder-volume: 用于将volume服务部署在该节点上。 Cinder如何支持典型存储 从目前的实现来看,Cinder对本地存储和NAS的支持比较不错,可以提供完整的Cinder API V2支持,而对于其它类型的存储设备,Cinder的支持会或多或少的受到限制,下面是Rackspace对于Private Cloud存储给出的典型配置: 1. 本地存储 对于本地存储,cinder-volume可以使用lvm驱动,该驱动当前的实现需要在主机上事先用lvm命令创建一个cinder- volumes的vg, 当该主机接受到创建卷请求的时候,cinder-volume在该vg上创建一个LV, 并且用openiscsi将这个卷当作一个iscsi tgt给export. 当然还可以将若干主机的本地存储用sheepdog虚拟成一个共享存储,然后使用sheepdog驱动。 2. EMC 3. Netapp Cinder在IT环境中的主要问题 目前版本的Cinder在IT私有云场景中,从硬件兼容性,高性能,高可靠性,水平扩展能力,应用兼容性等维度来看,Cinder还存在不少问题需要解决。Cinder依然任重道远。 1. 对共享存储的支持有限 不支持FC SAN; 支持的存储设备有限,即使对于EMC, IBM这样的的主流存储厂商,也只能支持寥寥几款存储; 2. 对存储设备的使用不够高效 Cinder卷管理的基本原则是在共享存储上创建一个lun, 然后把这个lun作为一个block device给attach到一个虚拟机上。但是对于当前主流的存储,能够支持的最大lun数量非常有限,比如我们经常使用的Huawei S3900, 最多能支持288个lun,如果一个VM平均3个卷,不管这些VM是offline还是online, 这个存储最多只能支持90个VM。 3. 存储管理带来的性能损耗 比如Cinder Volume的LVM驱动使用iSCSI export一个逻辑卷,从管理的角度来看是解决了存储共享的问题,从而能够支持比如迁移这样的功能,但是这样的设计势必会导致较大的性能损耗,和直接访 问相比,通常iSCSI export会增加30%以上的IO延迟。 4. 数据如何迁移 企业IT环境中大量的数据,一般都是存放在SAN甚至是磁带设备上的,这些数据如何无损,安全的接入到Cloud呢?VMware因此提供了RDM, KVM和XEN也支持PVSCSI, 但是Cinder没有考虑这个。 5. Cinder的调度器不完善 Cinder提供的simple scheduler基本没有实用价值,  cinder-scheduler仅能在初始放置时保证系统负载均衡,但是如果是发生了运行时负载严重不平衡,cinder就没法处理了。 6. Cinder服务的可靠性问题 cinder-api和cinder-scheduler是系统的单点,cinder并没有提供这两个服务提供任何HA和load balance设计,所以整个系统可靠性还是扩展性会比较受限制。 cinder-db如果发生不可恢复的故障,能够保证用户数据能恢复吗? 介绍内容出处:http://blog.csdn.net/luo_brian/article/details/8592692 标签:OpenStack
Cinder是一个开源项目,它提供了一个用于管理和提供持久块存储的服务。在分布式环境中,Cinder可以通过将存储资源分解为多个存储节点来提供更高的可靠性和可扩展性。 在Cinder的分布式架构中,存储资源可以由不同的存储节点提供。每个存储节点可以是物理存储设备、存储服务器或存储阵列等。这些存储节点通过网络连接在一起,形成一个分布式存储系统。 Cinder使用了一些关键的技术来实现分布式存储。其中一个关键技术是数据复制和数据迁移。当存储节点故障或发生网络故障时,Cinder能够将数据从故障的节点复制到其他可用节点,从而确保数据的可用性。另外,当存储需求增加或发生负载不平衡时,Cinder能够自动迁移数据到其他节点上,以实现负载均衡。 另一个关键技术是数据块的映射和路由。Cinder通过数据映射和路由来确定应该将数据存储在哪个节点上,并在需要访问数据时将请求路由到正确的节点上。这样可以提高数据的访问速度和响应性能。 在使用Cinder分布式存储时,用户可以通过Cinder API访问和管理存储资源。用户可以创建、删除和扩展存储卷,将卷附加到虚拟机上并进行数据操作。Cinder还提供了诸如快照、克隆和迁移等高级功能,以满足不同的存储需求。 总之,Cinder分布式存储提供了一个可靠、高性能和可扩展的块存储服务。它通过将存储资源分解为多个存储节点,并使用数据复制、数据迁移和数据映射等技术来提高存储系统的可用性和性能。用户可以通过Cinder API方便地管理存储资源,并满足不同的存储需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值