OpenStack Cinder 架构

Cinder 是 OpenStack 的 块存储 (Block Storage) 服务,其核心功能是为虚拟机实例提供持久化的块存储设备(即云硬盘 Volume)。这些云硬盘可以被挂载到虚拟机实例上,就像给物理服务器插上一块新的硬盘一样,用于扩展实例的存储空间或持久化保存数据,即使实例本身被终止,数据也不会丢失。

1、架构

plaintext 复制代码
+---------------------------------------+
|           API 客户端                  |  (Horizon, Nova, CLI)
+-------------------+-------------------+
                    |
                    | REST API (cinder-api)
                    |
+-------------------v-------------------+
|             cinder-api                |  (接收和路由API请求)
+-------------------+-------------------+
                    |
                    | AMQP (消息队列)
                    |
+-------------------+-------------------+
|          cinder-scheduler             |  (卷创建调度决策)
+-------------------+-------------------+
                    |
                    | AMQP (消息队列)
                    |
+-------------------+-------------------+
|           cinder-volume               |  (与存储后端交互)
+-------------------+-------------------+
                    |
                    | 驱动协议 (iSCSI, Fibre Channel, RBD, NFS, etc.)
                    |
+---------+---------+---------+---------+
|  LVM    |  Ceph   |  NetApp |  EMC    |  (多种存储后端)
| Driver  | Driver  | Driver  | Driver  |  
+---------+---------+---------+---------+

2、核心组件/服务 (Services)

Cinder 也由多个协同工作的服务进程组成

2.1 cinder-api

API 端点和请求入口

  • 接收和处理所有外部的 RESTful API 请求(例如来自 Horizon dashboard、CLI 工具 openstack volume、或 Nova 服务的请求)。
  • 对用户请求进行认证、授权和参数验证。
  • 将合法的请求通过消息队列(如 RabbitMQ)路由给相应的后台服务(主要是 cinder-volume)。

2.2 cinder-scheduler

决定卷创建请求应该由哪个后端的哪个存储节点来处理。

  • 从消息队列中接收创建卷的请求。
  • 根据请求中的属性(如卷类型 volume_type、容量 size、可用域 availability_zone)和系统当前的状态,通过过滤器调度器(Filter Scheduler) 机制,从所有可用的存储后端中筛选出最合适的一个。
  • 其调度机制与 Nova Scheduler 非常相似,也使用过滤器(Filters) 和权重(Weighers)。
  • 常见过滤器:CapacityFilter(容量过滤),AvailabilityZoneFilter(可用域过滤),CapabilitiesFilter(根据卷类型中的额外规格 extra_specs 匹配后端的能力)。

配置示例cinder.conf

ini 复制代码
[scheduler]
enabled_filters = CapacityFilter,AvailabilityZoneFilter,CapabilitiesFilter
enabled_weighters = CapacityWeigher
capacity_weight_multiplier = 1.0  # 容量权重乘数

2.3 cinder-volume

存储节点上的核心工作进程,一个存储节点上运行一个 cinder-volume 实例。

  • 是真正与底层存储后端(如 LVM, Ceph, 商业阵列)交互、管理卷生命周期的组件。
  • 接收来自消息队列的操作指令(如创建、删除、挂载卷)。
  • 通过配置的 驱动程序(Driver) 调用底层存储系统的 API 或命令来执行具体操作。
  • 向 cinder-scheduler 报告当前后端的状态和容量信息

2.4 cinder-backup

备份服务。

  • 负责将卷(Volume)备份到其他存储系统中(例如,将一个基于 LVM 的卷备份到 Ceph Object Storage 或 Swift 中)。
  • 支持增量备份,可以有效节省备份空间和时间。
相关推荐
感哥4 小时前
OpenStack Nova Scheduler 计算节点选择机制
openstack
感哥3 天前
OpenStack Nova 创建虚拟机
openstack
感哥3 天前
OpenStack Glance(镜像)
openstack
感哥3 天前
OpenStack Keystone详解
openstack
安全菜鸟12 天前
传统方式部署OpenStack具体教程
openstack
哈里谢顿2 个月前
Ironic 中 Clean/deploy Step 延迟执行的原因分析
openstack
哈里谢顿2 个月前
ironic中为什么 IPMI Hardware Type 必须支持 IPMIManagement
openstack
哈里谢顿2 个月前
Ironic 中各个接口的作用详解
openstack
CZIDC2 个月前
博客摘录「 华为云平台-FusionSphere OpenStack 8.2.1 系统加固」2025年7月15日
linux·服务器·笔记·华为云·openstack