openstack-理解cinder服务

https://blog.51cto.com/11555417/2345634

 

  cinder是openstack中提供块存储服务的组件,主要是为虚拟机实例提供虚拟磁盘。

通过某种协议(SAS,SCSI,SAN,iSCSI等)挂接裸硬盘,然后分区、格式化创建的文件,或者直接使用裸硬盘存储数据的方式叫做块存储,每个裸硬盘通常也叫做Volume(卷)。

通过nfs,cifs等协议,需要挂载的远程文件系统,叫做文件系统存储。

一、理解块存储服务

    在openstack中提供对卷从创建到删除整个生命周期的管理,从虚拟机实例的角度来看,挂载的每一个卷都是一块硬盘。openstack提供块存储服务的是cinder,具体功能如下:

 

    提供api使用户能够查询和管理卷、卷快照以及卷类型

    提供scheuler调度卷创建请求,合理优化存储资源的分配

    通过driver架构支持多种后端存储方式

image.png

 

 

1)cinder-api

    接收api请求,调用cinder-volume

 

2)cindere-volume

    管理卷的服务,与volume provider协调工作,管理volume的生命周期,运行cinder-volum的服务的节点被称作为存储节点

 

3)cinder-scheduler

   scheduler通过调度算法选择最合适的存储节点创建卷

 

4)volume provider

数据的存储设备,为volume提供物理存储空间

 

5)Message Queue

cinder 各个子服务通过消息列队实现进程间通信和相互协作

 

6)database

存储cinder一些数据库,一般使用mysql

 

 

 

二、cinder流程

image.png

 

    1)用户 向 API 发送请求

    2)api对请求做一些必要的处理后,向messaging(rabbitmq)发送信息,让scheduler创建一个volume

    3) scheduler从messaging获取到api发送的消息,然后执行调度算法,从若干存储节点选出节点A

    4) scheduler向messaging发送一条消息,让存储节点创建volume

    5)存储节点的volume 从messaging中获取到scheduler发给它的消息,然后通过driver在volume provider上创建volume

 

三、cinder组件详解

    1、cinder-api

cinder-api是整个cinder组件的门户,所有的cinder的请求都首先由nova-api处理,它向外界暴露了若干HTTP REST API接口,在kesystone中可以查询到cinder-api的endpoints.

openstack endpoint list --service cinder

image.png

 客户端可以将请求发送到endponits指定的地址,向cinder-api请求操作,大部分的api请求都可以在dashboard上进行

cinder-api对接收到的http api请求会做如下处理:

检查客户端传入的参数是否合法有效

调用cinder其他子服务的处理客户端请求

将cinder其他子服务返回的结果序列号返回给客户端

 

2、cinder-scheduler

创建volume时,cinder-scheduler会基于容量、volume type等条件选择出最合适的存储节点,然后让其创建volume

(1)filter scheduler

filter scheduler是cinder-schedule默认的调度器

在/etc/cinder/cinder.conf中,cinder通过schedulerdriver,schedulerdefault_filters和scheduler defaultweighers三个参数来配置cinder-scheuler

image.png

scheduler调度过程如下:

通过过滤器(filter)选择满足条件的存储节点

通过权重计算(weighting)选择最优(权重最大)的存储节点

 

(2)filter

当filter scheduler需要执行调度操作时,会让filter对计算节点进行判断,filter返回true或者false

配置文件中schedulerdefaultfilters选项指定filter scheduler使用的filter,默认如下

image.png

filter scheduler将按照列表中顺序依次过滤

<1> AvailabilityZoneFilter

为提高容灾性和提供隔离服务,可以将存储节点和计算节点划分不同Availability zone,创建volume时,需要指定volume所属的availability zone

image.png

在过滤时,会将使用AvailabilityZoneFilter将不属于指定AvailabilityZone的存储节点过滤掉

 

<2>CapacityFilter

创建volume时,用户会指定volume的大小。CapactiyFilter的作用时将存储空间不能满足volume创建需求的存储节点过滤掉

image.png

<3>CapabilitiesFilter

不同的Volume Provider有自己的特性,用户通过创建volume时指定类型所需要的类型。

volume类型可以在管理员-系统-卷菜单中进行管理指定

image.png

 

(3)weighter

Filter  Scheduler通过scheduler_default_weighers指定计算权重的weigher,默认为CapacityWeigher

image.png

 

 

3、cinder-volume

openstack上对volume的操作,最后都是交给cinder-volume来完成的。

cinder-volume自身并不管理整整的存储设备,存储设备是由volume provider管理的,cinder-volume与volume provider一起实现volume生命周期管理,它通过dirver架构支持多种volume provider.

cinder-volume为这些volume provider 定义了统一的接口,volume provider只需要实现这些接口,就可以Driver的形式即插即用到openstack系统中。

 

image.png

 

 

在存储节点的配置文件/etc/cinder/cinder.conf中使用volume_driver选项配置使用的driver

image.png

默认是使用LVM 逻辑卷

 

cinder-volume会定期向cinder报告,从而让cinder确认得知每个存储节点的空闲容量信息

image.png

 

cinder对volume的生命周期管理最终都是通过cinder-volume完成的,包括volume的create,extend,attach,snapshot,delete等

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenStack是一个开源的云计算平台,它由一系列的组件构成,这些组件可以协同工作,提供计算、存储和网络等云计算服务OpenStack最初是由NASA和Rackspace两家公司共同开发,现在由一个全球性的社区来维护和开发。 OpenStack的组件包括但不限于以下几个方面: 1. 计算组件:Nova是OpenStack中的计算组件,它可以创建和管理虚拟机实例,支持多种虚拟化技术,如KVM、Xen和VMware等。 2. 存储组件:CinderOpenStack中的存储组件,它提供块存储服务,可以为虚拟机提供可扩展的存储。 3. 对象存储组件:Swift是OpenStack中的对象存储组件,它提供对象存储服务,可以存储大规模的非结构化数据。 4. 网络组件:Neutron是OpenStack中的网络组件,它提供虚拟网络的创建和管理,支持多种网络模型,如VLAN、GRE和Open vSwitch等。 5. 身份认证和授权组件:Keystone是OpenStack中的身份认证和授权组件,它提供认证和授权服务,为其他组件提供安全的访问。 6. 面板组件:Horizon是OpenStack中的Web界面,它提供了一个易于使用的图形化界面,用于管理OpenStack云环境。 OpenStack的优势在于其开放性和可扩展性。因为它是一个开源项目,任何人都可以查看和修改其源代码,这使得OpenStack可以适应各种不同的需求。此外,OpenStack还支持多种虚拟化技术和多种硬件平台,可以运行在私有云、公有云和混合云等不同的环境中。 总的来说,OpenStack是一个强大而灵活的云计算平台,它可以为用户提供高可用性、可扩展性和安全性的云计算服务

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值