Cinder(一):架构

 

复制代码
Block Storage(块存储)和文件系统存储;cinder(Block Storage Service)的功能
=====================================================================
操作系统获得存储空间的方式一般有两种:
    1.Block Storage(块存储):
        通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据(数据库)
        每个裸硬盘通常也称作 Volume(卷)
    2.文件系统存储:
        通过 NFS、CIFS 等 协议,mount 远程的文件系统
        NAS 和 NFS 服务器,以及各种分布式文件系统提供的都是这种存储。
简单来说:块存储就是类似真实服务器挂接硬盘;文件系统存储则是通过各种协议,mount远程的文件系统
    也可以这么理解:块存储一定和nova-compute部署在同一台物理机;文件系统存储和nova-compute不一定在同一台物理机

----------------------------------------------------------------------------------
Block Storage Service提供对 volume 从创建到删除整个生命周期的管理。从 instance 的角度看,挂载的每一个 Volume 都是一块硬盘。OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是:
    1.提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type
    2.提供 scheduler 调度 volume 创建请求,合理优化存储资源的分配
    3.通过 driver 架构支持多种 back-end(后端)存储方式,包括 LVM,NFS,Ceph 和其他诸如 EMC、IBM 等商业存储产品和方案
Block Storage(块存储)和文件系统存储;cinder(Block Storage Service)的功能
复制代码

 cinder逻辑架构图

 

复制代码
Cinder组件:cinder-api、cinder-volume、cinder-scheduler、volume provider、Message Queue、Database Cinder
================================================================================================
Cinder 包含如下几个组件:
    cinder-api:接收 API 请求,调用 cinder-volume 。
    cinder-volume:管理 volume 的服务,与 volume provider 协调工作,管理 volume 的生命周期。运行 cinder-volume 服务的节点被称作为存储节点。
    cinder-scheduler:scheduler 通过调度算法选择最合适的存储节点创建 volume。
    volume provider:数据的存储设备,为 volume 提供物理存储空间。 cinder-volume 支持多种 volume provider,每种 volume provider 通过自己的 driver 与cinder-volume 协调工作。
    Message Queue:Cinder 各个子服务通过消息队列实现进程间通信和相互协作。因为有了消息队列,子服务之间实现了解耦,这种松散的结构也是分布式系统的重要特征。
    Database Cinder :有一些数据需要存放到数据库中,一般使用 MySQL。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为“cinder”的数据库。
Cinder组件:cinder-api、cinder-volume、cinder-scheduler、volume provider、Message Queue、Database Cinder
复制代码

 

复制代码
volume创建流程,cinder子服务协同工作过程:
    1.客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(cinder-api)发送请求:“帮我创建一个 volume”
    2.API 对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个 volume”
    3.Scheduler(cinder-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计存储点中选出节点 A
    4.Scheduler 向 Messaging 发送了一条消息:“让存储节点 A 创建这个 volume”
    5.存储节点 A 的 Volume(cinder-volume)从 Messaging 中获取到 Scheduler 发给它的消息,然后通过 driver 在 volume provider 上创建 volume。

Cinder 延续了 Nova 的以及其他组件的设计思想。所以看到volume的创建流程和nova的创建instance流程非常相似
volume创建流程,cinder子服务协同工作过程
复制代码

 

 

 

 

 

 

 

 

 

111111111111111

posted @   雲淡風輕333  阅读(187)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示