OpenStack Cinder 全解:块存储架构、调度过滤器与卷管理实战指南
OpenStack管理摘要本文全面介绍了OpenStack块存储服务Cinder的核心概念与架构。Cinder作为OpenStack的块存储组件在虚拟机与物理存储设备之间提供逻辑存储卷的抽象层支持多种后端存储技术如LVM、SAN、Ceph等。文章详细解析了Cinder的架构组成包括Cinder API、Scheduler、Volume和Backup等核心服务并通过实际配置示例展示了AvailabilityZoneFilter、CapacityFilter、CapabilitiesFilter等调度过滤器的原理与应用。同时文章还涵盖了Cinder的部署模式、存储类型、持久化存储机制以及卷挂载流程为OpenStack存储管理提供了完整的实践指导。OpenStack块存储管理-cindercinder的配置文件位置/etc/cindercinder的日志文件位置/var/log/cidneropenstack存储类型OpenStack持久化存储简介Cinder作用Cinder在虚拟机与具体存储设备之间引入了一层“逻辑存储卷”的抽象Cinder本身不是一种存储技术并没有实现对块设备的实际管理和服务Cinder只是提供了一个中间的抽象层为后端不同的存储技术提供了统一的接口不同的块设备服务厂商在Cinder中以驱动的形式实现上述接口与OpenStack进行整合Cinder架构•Cinder Client封装Cinder提供的rest接口以CLI形式供用户使用。•Cinder API对外提供rest API对操作需求进行解析对API进行路由寻找相应的处理方法。包含卷的增删改查包括从源卷、镜像、快照创建、快照增删改查、备份、volume type管理、挂载/卸载Nova调用等。•Cinder Scheduler负责收集backend上报的容量、能力信息根据设定的算法完成卷到指定cinder-volume的调度。•Cinder Volume多节点部署使用不同的配置文件、接入不同的backend设备由各存储厂商插入driver代码与设备交互完成设备容量和能力信息收集、卷操作。•Cinder Backup实现将卷的数据备份到其他存储介质目前SWIFT/Ceph/TSM提供了驱动。•SQL DB提供存储卷、快照、备份、service等数据支持MySQL、PG、MSSQL等SQL数据库。查看控制节点cinder进程[rootcontroller ~]# ps -e | grep cinder1746? 00:00:03 cinder-schedule1748? 00:00:04 cinder-api1772? 00:00:03 cinder-backup1791? 00:00:04 cinder-volume2812? 00:00:00 cinder-backup2931? 00:00:00 cinder-volume2959? 00:00:00 cinder-api2961? 00:00:00 cinder-api2964? 00:00:00 cinder-api2967? 00:00:00 cinder-api查看cinder-volume默认支持的存储设备[rootcontroller ~]# cd /usr/lib/python3.6/site-packages/cinder/volume/drivers/[rootcontroller drivers]# lsdatera huawei lenovo nfs.py rbd.py storpool.py windows dell_emc ibm linstordrv.py nimble.py remotefs.py stx zadara.py fujitsu infinidat.py lvm.py prophetstor rsd.py synology fusionstorage infortrend macrosan pure.py san veritas_access hedvig __init__.py nec __pycache__ sandstone veritas_cnfs.py hitachi inspur netapp qnap.py solidfire.py vmware hpe kaminario nexenta quobyte.py spdk.py vzstorage.pyCinder架构说明•Cinder默认使用LVMLogical Volume Manager作为后端存储Backend Storage而LVM通过在操作系统与物理存储资源之间引入逻辑卷Logical Volume的抽象来解决传统磁盘分区管理工具的问题。•LVM将众多不同的物理存储资源物理卷、Physical Volume如磁盘分区组成卷组。LVM从卷组中创建一个逻辑卷然后将ext3、ReiserFS等文件系统安装在这个逻辑卷上。•除了LVM目前Cinder已经以驱动的形式支持众多存储技术或存储厂商的设备作为后端存储如SANStorage Area Network、Ceph、Sheepdog以及EMC、华为等厂商的设备。实验环境后端存储就是LVM(安装时决定的)[rootcontroller ~]# vim answers.txt536CONFIG_CINDER_BACKENDlvm544CONFIG_CINDER_VOLUMES_CREATEy547CONFIG_CINDER_VOLUME_NAMEcinder-volumes554CONFIG_CINDER_VOLUMES_SIZE20G实验环境查看[rootcontroller ~]# vgdisplay cinder-volumes--- Volume group --- VG Name cinder-volumes System ID Format lvm2 Metadata Areas1Metadata Sequence No8VG Access read/write VG Status resizable MAX LV0Cur LV1Open LV0Max PV0Cur PV1Act PV1VG Size20.60GiB PE Size4.00MiB Total PE5273Alloc PE / Size5020/19.61GiB Free PE / Size253/1012.00MiB VG UUID ODOHA8-u2MO-RAtc-y43r-1r1u-PIn8-XOFuhiCinder架构部署以SAN存储为例Cinder-apiCinder-SchedulerCinder-Volume可以选择部署到一个节点上也可以分别部署API采用AA模式HAproxy作为LB分发请求到多个Cinder APIScheduler也采用AA模式由rabbitmq以负载均衡模式向3个节点分发任务并同时从rabbitmq收取Cinder volume上报的能力信息调度时scheduler通过在DB中预留资源从而保证数据一致性Cinder Volume也采用AA模式同时上报同一个backend容量和能力信息并同时接受请求进行处理RabbitMQ支持主备或集群MySQL支持主备或集群Cinder-apiCinder API检查参数合法性用户输入权限资源是否存在等准备创建的参数字典预留和提交配额在数据库中创建对应的数据记录通过消息队列将请求和参数发送到Scheduler查看cinder API服务状态[rootcontroller ~]# systemctl status openstack-cinder-api.service● openstack-cinder-api.service - OpenStack Cinder API Server Loaded: loaded(/usr/lib/systemd/system/openstack-cinder-api.service;enabled;vendor preset: disabled)Active: active(running)since Fri2024-09-27 09:44:47 CST;1h 7min ago Main PID:1748(cinder-api)Tasks:5(limit:100416)Memory:501.2M CGroup: /system.slice/openstack-cinder-api.service ├─1748 /usr/bin/python3 /usr/bin/cinder-api --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf--logfile/├─2959 /usr/bin/python3 /usr/bin/cinder-api --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf--logfile/├─2961 /usr/bin/python3 /usr/bin/cinder-api --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf--logfile/├─2964 /usr/bin/python3 /usr/bin/cinder-api --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf--logfile/└─2967 /usr/bin/python3 /usr/bin/cinder-api --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf--logfile/Sep2709:44:47 controller systemd[1]: Started OpenStack Cinder API Server.Cinder-scheduler•和Nova Scheduler类似Cinder Scheduler也是经过Filter筛选符合条件的后端然后使用Weigher计算后端进行权重排序最终选择出最合适的后端存储。Cinder Scheduler服务提取接收到的请求参数通过配置的filter和输入参数对后端进行过滤Availability_zone_filterCapacity_filterCapabilities_filterAffinity_filterSameBackendFilter/DifferentBackendFilter……Weigher计算后端进行权重CapacityWeigher/AllocatedCapacityWeigherChanceWeigherGoodnessWeigher……选取最优的Backend并通过消息队列将请求发送到指定的后端查看配置文件[rootcontroller ~]# cd /etc/cinder/[rootcontroller cinder]# lsapi-paste.ini cinder.conf resource_filters.json rootwrap.conf rootwrap.d volumes[rootcontroller cinder]# vim cinder.conf592#scheduler_default_filters AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter593595#scheduler_default_weighers CapacityWeigher596601# Default scheduler driver to use (string value)602#scheduler_driver cinder.scheduler.filter_scheduler.FilterSchedulerAvailabilityZoneFilter为提高容灾性和提供隔离服务可以将存储节点和计算节点划分到不同的 Availability Zone 中。例如把一个机架上的机器划分在一个 Availability Zone 中。OpenStack 默认有一个命名为“nova”的 Availability Zone所有的节点初始都是放在“nova”中。用户可以根据需要创建自己的 Availability Zone。创建 Volume 时用户会指定 Volume 的大小。CapacityFilter 的作用是将存储空间不能满足 Volume 创建需求的存储节点过滤掉。配置cinder配置文件cinder.conf[rootcontroller ~]# cd /etc/cinder/[rootcontroller cinder]# lsapi-paste.ini cinder.conf resource_filters.json rootwrap.conf rootwrap.d volumes[rootcontroller cinder]# vim cinder.conf592scheduler_default_filtersAvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter#该配置文件的节点的AZ设置为az1395storage_availability_zoneaz1#创建卷时不指定az默认使用nova AZ401default_availability_zonenova[rootcontroller cinder]# systemctl restart openstack-cinder*验证AZ实验#cinder.conf配置文件配置401 default_availability_zonenova创建卷时不指定AZ则使用nova AZ而该节点属于az1 AZ,创建失败[rootcontroller ~]# source keystonerc_admin[rootcontroller ~(keystone_admin)]# openstack volume create --size 1 volume1Availability zonenovais invalid.(HTTP400)(Request-ID: req-c4e2d4d1-d299-4267-b2a1-22fcd676a6ea)#cinder配置文件配置395 storage_availability_zoneaz1该节点属于AZ az1节点创建AZ az2卷被AvailabilityZoneFilter过滤[rootcontroller ~(keystone_admin)]# openstack volume create --size 1 --availability-zone az2 volume1Availability zoneaz2is invalid.(HTTP400)(Request-ID: req-749dad9d-d5fb-4122-95aa-ab03d0c5a955)#cinder配置文件配置395 storage_availability_zoneaz1该节点属于AZ az1节点创建AZ az1卷创建成功[rootcontroller ~(keystone_admin)]# openstack volume create --size 1 --availability-zone az1 volume1-----------------------------------------------------------|Field|Value|-----------------------------------------------------------|attachments|[]||availability_zone|az1||bootable|false||consistencygroup_id|None||created_at|2024-09-27T06:02:35.368543||description|None||encrypted|False||id|43746d03-a0c5-4232-8f1b-6023ffe83545||migration_status|None||multiattach|False||name|volume1||properties|||replication_status|None||size|1||snapshot_id|None||source_volid|None||status|creating||type|iscsi||updated_at|None||user_id|7ef9147a8abe485889ece90dce340ab1|-----------------------------------------------------------CapacityFilter创建 Volume 时用户会指定 Volume 的大小。CapacityFilter 的作用是将存储空间不能满足 Volume 创建需求的存储节点过滤掉。CapabilitiesFilter不同的 Volume Provider 有自己的特性Capabilities比如是否支持 thin provision 等。Cinder 允许用户创建 Volume 时通过 Volume Type 指定需要的 Capabilities。创建卷的时候卷类型指定为iscsi那么后端使用的是LVM,为何由卷类型扩展规格决定接下来查看配置文件[rootcontroller ~(keystone_admin)]# vim /etc/cinder/cinder.conf5261[lvm]5262volume_backend_namelvm5263volume_drivercinder.volume.drivers.lvm.LVMVolumeDriver5264target_ip_address192.168.108.105265target_helperlioadm5266volume_groupcinder-volumes5267volumes_dir/var/lib/cinder/volumesCinder-volumeCinder Volume服务提取接收到的请求参数调用对应的Driver在后端创建实际的卷使用Driver返回的模型更新数据库中的记录Cinder挂载流程挂卷流程 挂卷是通过Nova和Cinder的配合最终将远端的卷连接到虚拟机所在的Host节点上并最终通过虚拟机管理程序映射到内部的虚拟机中•Nova调用Cinder API创建卷传递主机的信息如hostnameiSCSI initiator nameFC WWPNs。•Cinder API将该信息传递给Cinder Volume。•Cinder Volume通过创建卷时保存的host信息找到对应的Cinder Driver。•Cinder Driver通知存储允许该主机访问该卷并返回该存储的连接信息如iSCSI iqnportalFC Target WWPNNFS path等。•Nova调用针对于不同存储类型进行主机识别磁盘的代码 Cinder 提供了brick模块用于参考实现识别磁盘或者文件设备。•Nova通知Cinder已经进行了挂载。•Nova将主机的设备信息传递给hypervisor来实现虚拟机挂载磁盘。

相关新闻

Windows XP系统下Python 3.4科学计算环境搭建全攻略

Windows XP系统下Python 3.4科学计算环境搭建全攻略

1. 项目概述:在XP上搭建Python科学计算环境的挑战与价值 看到这个标题,很多年轻开发者可能会觉得有点“复古”甚至“头铁”。在Windows 10/11和macOS大行其道的今天,为什么还要折腾一个早已停止官方支持的Windows XP系统,去安装一…

2026/8/5 10:32:44 阅读更多 →
Docker部署实战:从零到一构建Spring Boot应用容器化部署全流程

Docker部署实战:从零到一构建Spring Boot应用容器化部署全流程

1. 项目概述:为什么选择Docker部署? 如果你是一名开发者或者运维,大概率已经不止一次听过Docker的大名。但真正要把一个项目,比如一个Spring Boot应用、一个Node.js服务,或者一个Python脚本,从你的开发机搬…

2026/8/6 10:39:20 阅读更多 →
零基础入门:MelonLoader模组加载器完整使用指南

零基础入门:MelonLoader模组加载器完整使用指南

零基础入门:MelonLoader模组加载器完整使用指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 想要为心爱的Unity游…

2026/8/5 10:31:43 阅读更多 →

最新新闻

移动云主机性能实测与架构解析

移动云主机性能实测与架构解析

1. 移动云云主机产品概述移动云作为国内主流云服务商之一,其云主机产品在政企市场中具有较高占有率。根据实际测试数据,其单核云主机的UnixBench跑分可达1200分以上,网络延迟控制在5ms以内,基础性能已达到行业主流水平。产品线覆盖…

2026/8/6 13:04:19 阅读更多 →
SteamCleaner:终极游戏缓存清理工具,3步轻松释放100GB硬盘空间

SteamCleaner:终极游戏缓存清理工具,3步轻松释放100GB硬盘空间

SteamCleaner:终极游戏缓存清理工具,3步轻松释放100GB硬盘空间 【免费下载链接】SteamCleaner :us: A PC utility for restoring disk space from various game clients like Origin, Steam, Uplay, Battle.net, GoG and Nexon :us: 项目地址: https:/…

2026/8/6 13:04:19 阅读更多 →
Windows热键冲突终极解决方案:5步快速定位被占用快捷键的热键侦探工具

Windows热键冲突终极解决方案:5步快速定位被占用快捷键的热键侦探工具

Windows热键冲突终极解决方案:5步快速定位被占用快捷键的热键侦探工具 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detectiv…

2026/8/6 13:04:19 阅读更多 →
InnoDB 事务启动探秘:从 BEGIN 到第一个 SQL,MySQL 到底在忙什么?

InnoDB 事务启动探秘:从 BEGIN 到第一个 SQL,MySQL 到底在忙什么?

InnoDB 事务启动探秘:从 BEGIN 到第一个 SQL,MySQL 到底在忙什么?本文基于 MySQL 8.0.44 源码,存储引擎为 InnoDB。目录为什么需要搞清楚 BEGIN 的行为BEGIN 语句的语法变体与解析器逻辑BEGIN 的执行入口:trans_begin …

2026/8/6 13:04:19 阅读更多 →
Wand-Enhancer终极指南:5分钟解锁WeMod专业版所有功能

Wand-Enhancer终极指南:5分钟解锁WeMod专业版所有功能

Wand-Enhancer终极指南:5分钟解锁WeMod专业版所有功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 你是否厌倦了WeMod专业版的功能限…

2026/8/6 13:04:19 阅读更多 →
Java期末高效复习:从选择题入手构建核心知识体系与避坑指南

Java期末高效复习:从选择题入手构建核心知识体系与避坑指南

1. 项目概述:为什么选择题是Java期末复习的“定盘星”? 又到期末了,Java这门课是不是让你感觉知识点又多又杂,面对厚厚的教材和一堆实验代码,复习起来毫无头绪?很多同学一上来就抱着大题、编程题猛啃&#…

2026/8/6 13:03:19 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →