Cinder服务的基本使用

发布时间:2026/9/15 15:56:56

Cinder服务的基本使用 1. Cinder概述OpenStack早期版本是使用nova-volume为云平台提供持久性块存储服务。从Folsom版本后就把作为Nova组成部分的nova-volume分离出来形成了独立的Cinder组件。Cinder本身并不直接提供块存储设备实际的管理和服务而是在虚拟机和具体的存储设备之间引入一个抽象的“逻辑存储卷”。Cinder与Neutron类似也是通过Plugins-Agent的方式添加了不同厂家的DRIVE来整合多种厂家的后端存储设备并通过提供统一API接口的方式为云平台提供持久性块设备存储服务类似于Amazon的EBSElastic Block Storage。Cinder服务的实现在OpenStack众多服务中只依赖Keystone服务提供认证。可能有些人觉得Cinder提供的Volume作为云主机的云磁盘因此Cinder与Nova也有依赖关系。其实这是一种错误的理解Cinder-Volume创建的“逻辑存储卷”不仅可以用于云主机的云磁盘也可以用于其他场景其创建卷的过程与Nova创建的云主机的状态并没有直接关联。或者换个角度来看Nova创建的云主机也可以不用挂载Cinder创建的Volume而正常运行。2. Cinder架构在OpenStack中块存储服务Cinder为Nova项目虚拟机实例提供了数据持久性的存储服务。此外块存储还提供了Volumes管理的基础架构同时还负责Volumes的快照和类型管理。从功能层面来看Cinder以插件架构的形式为各种存储后端提供了统一API访问接口的抽象层实现使得存储客户端可以通过统一的API访问不同的存储资源而不用担心底层各式各样的存储驱动。Cinder提供的块存储通常以存储卷的形式挂载到虚拟机后才能使用目前一个Volume同时只能挂载到一个虚拟机但是不同的时刻可以挂载到不同的虚拟机因此Cinder块存储与AWS的EBS不同不能像EBS一样提供共享存储解决方案。除了挂载到虚拟机作为块存储使用外用户还可以将系统镜像写入块存储并从有加载镜像的Volume启动系统SAN BOOT。Cinder的逻辑架构如图3-1所示除了cinder-client外其余均是Cinder服务的核心组件共有4个cinder-api、cinder-scheduler、cinder-volume和cinder-backup。而cinder-client其实就是封装了Cinder提供REST接口的CLI工具。图3-1 cinder逻辑架构图1cinder-api对外提供REST API对操作需求进行解析对API进行路由并寻找相应的处理方法包含卷的CRUD快照的CRUD、备份、Volume Type的管理、卷的挂载/卸载等操作。Cinder API本质上其实是一个WSGI App启动Cinder API服务相当于启动一个名为osapi_volume的WSGI服务去监听Client的HTTP请求。OpenStack定义了两种类型的Cinder资源包括核心资源Core Resoure和扩展资源Extension Resoure。而核心资源及其API路由器分为V1及V2两个版本分别放在V1和V2两个目录下其中API路由器目录中的router.py负责把HTTP请求分发到其管理的核心资源中去V1的核心资源则包括卷Volume、卷类型Volume Type、快照Snapshot的操作管理比如创建和删除一个卷或为某个卷做一个快照等V2的核心资源增加了Qos、limit及备份的操作管理H版本以后。2Cinder-scheduler负责收集后端存储Backends上报的容量、能力信息。根据指定的算法完成卷到cinder-volume的映射。在Folsom版本中cinder-scheduler服务只是实现了简单调度Simple Scheduler算法和随机调度Chancer Scheduler算法。简单调度算法就是获取活动卷的服务节点按剩余容量从小到大排列选择剩余容量最多的Host节点随机调度算法就是在满足条件的节点中随机挑选出一个Host节点。在G版本后有了类似nova-scheduler的基于过滤和权重的新调度策略FilterScheduler。3Cinder-volume多节点部署使用不同的配置文件、接入不同的backend设备由各存储厂商插入driver代码与设备交互完成设备容量和能力信息收集、卷操作。每个存储节点都会运行一个cinder-volume服务若干个这样的存储节点联合起来可以构成一个存储资源池。4Cinder-backup实现卷的数据备份到其他介质。目前支持的有以Ceph、Swift和IBM TSMTivoli Storage Manager为后端存储的备份存储系统其中默认的是采用Swift备份存储系统。与Cinder-volume类似Cinder-backup也通过Driver插件架构的形式与不同的存储备份后端交互。5Cinder-db提供存储卷、快照、备份、service等数据支持Mysql、PG、MSSQL等SQL数据库。3. 块存储服务1查看服务状态使用“openstack volume service list”命令查询块存储服务状态命令代码如下所示[rootcontroller ~]# openstack volume service list --------------------------------------------------------------------------------- | Binary | Host | Zone | Status | State | Updated At | --------------------------------------------------------------------------------- | cinder-scheduler | controller | nova | enabled | up | 2024-06-24T06:31:16.000000 | | cinder-volume | computelvm | nova | enabled | up | 2024-06-24T06:31:09.000000 | ---------------------------------------------------------------------------------2创建块存储通过使用命令“openstack volume create”创建块存储命令格式如下[rootcontroller ~]# openstack help volume create usage: openstack volume create [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--max-width ] [--fit-width] [--print-empty] [--noindent] [--prefix PREFIX] [--size ] [--type ] [--image | --snapshot | --source | --source-replicated ] [--description ] [--user ] [--project ] [--availability-zone ] [--consistency-group consistency-group] [--property ] [--hint ] [--multi-attach] [--bootable | --non-bootable] [--read-only | --read-write]通过命令创建块存储大小为2G名称为“volume”。命令如下所示[rootcontroller ~]# openstack volume create --size 2 volume ----------------------------------------------------------- | Field | Value | ----------------------------------------------------------- | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2024-06-25T07:06:37.000000 | | description | None | | encrypted | False | | id | 17f43dd4-8724-49ce-9149-3b3fafc71201 | | migration_status | None | | multiattach | False | | name | volume | | properties | | | replication_status | None | | size | 2 | | snapshot_id | None | | source_volid | None | | status | creating | | type | __DEFAULT__ | | updated_at | None | | user_id | 6df4273959974bd98b12b75b931373eb | -----------------------------------------------------------3查看块存储使用“openstack volume list”命令查看块存储列表信息。命令如下[rootcontroller ~]# openstack volume list ---------------------------------------------------------------------------- | ID | Name | Status | Size | Attached to | ---------------------------------------------------------------------------- | 17f43dd4-8724-49ce-9149-3b3fafc71201 | volume | available | 2 | | ----------------------------------------------------------------------------通过openstack命令查看某一块存储的详细信息。命令如下[rootcontroller ~]# openstack volume show volume ---------------------------------------------------------------------- | Field | Value | ---------------------------------------------------------------------- | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2024-06-25T07:06:37.000000 | | description | None | | encrypted | False | | id | 17f43dd4-8724-49ce-9149-3b3fafc71201 | | migration_status | None | | multiattach | False | | name | volume | | os-vol-host-attr:host | computelvm#LVM | | os-vol-mig-status-attr:migstat | None | | os-vol-mig-status-attr:name_id | None | | os-vol-tenant-attr:tenant_id | b0895efd70784108b94740a6bdfee44c | | properties | | | replication_status | None | | size | 2 | | snapshot_id | None | | source_volid | None | | status | available | | type | __DEFAULT__ | | updated_at | 2024-06-25T07:06:40.000000 | | user_id | 6df4273959974bd98b12b75b931373eb | ----------------------------------------------------------------------4挂载云硬盘块存储设备创建成功后可以在OpenStack上将该设备挂载至云主机上可以作为一块云硬盘来进行使用。给云主机添加一块磁盘。将块存储挂载至云主机的命令为“openstack server add volume”其命令格式为[rootcontroller ~]# openstack help server add volume usage: openstack server add volume [-h] [--device ] Add volume to server positional arguments: Server (name or ID) Volume to add (name or ID)使用命令将创建的“volume”块存储添加至云主机“test”上。命令如下[rootcontroller ~]# openstack server add volume test volume使用命令查看块存储的列表信息命令代码如下所示[rootcontroller ~]# openstack volume list ------------------------------------------------------------------------------------------- | ID | Name | Status | Size | Attached to | ------------------------------------------------------------------------------------------- | 17f43dd4-8724-49ce-9149-3b3fafc71201 | volume | in-use | 2 | Attached to test on /dev/vdb | -------------------------------------------------------------------------------------------4. 扩展卷1扩展卷大小创建完卷后可能因为需求的变更需要对已有的卷进行扩容操作这时需要用到“openstack volume set”命令修改卷的信息。命令格式如下[rootcontroller ~]# openstack help volume set usage: openstack volume set [-h] [--name ] [--size ] [--description ] [--no-property] [--property ] [--image-property ] [--state ] [--type ] [--retype-policy ] [--bootable | --non-bootable] [--read-only | --read-write]通过命令将 “volume” 卷大小从2G扩容至3G使用–size参数可修改已创建好的卷大小。命令操作如下所示[rootcontroller ~]# openstack volume list ------------------------------------------------------------------------------------------- | ID | Name | Status | Size | Attached to | ------------------------------------------------------------------------------------------- | 17f43dd4-8724-49ce-9149-3b3fafc71201 | volume | in-use | 2 | Attached to test on /dev/vdb | ------------------------------------------------------------------------------------------- [rootcontroller ~]# openstack volume set --size 3 volume [rootcontroller ~]# openstack volume list ---------------------------------------------------------------------------- | ID | Name | Status | Size | Attached to | ---------------------------------------------------------------------------- | 17f43dd4-8724-49ce-9149-3b3fafc71201 | volume | available | 3 | | ----------------------------------------------------------------------------2验证卷大小将扩容后的卷“volume”挂载至云主机“test”上操作命令如下所示[rootcontroller ~]# openstack server add volume test volume [rootcontroller ~]# openstack volume list ------------------------------------------------------------------------------------------- | ID | Name | Status | Size | Attached to | ------------------------------------------------------------------------------------------- | 17f43dd4-8724-49ce-9149-3b3fafc71201 | volume | in-use | 3 | Attached to test on /dev/vdb | -------------------------------------------------------------------------------------------可以看到卷“volume”挂载至云主机“test”上盘符的名称为/dev/vdb使用dashboard的控制台界面输入命令“lsblk”查看云硬盘大小是否为3G。命令操作如下所示可以看到显示盘符“vdb”大小为3G。此时云硬盘已经扩展完成。
延伸阅读

更多相关文章

2026/9/15 9:59:09

CEPH 系统盘挂了,如何使用数据盘恢复

硬盘损坏是早晚的时,CEHP数据盘坏了,使用CEPH的基本都轻车熟路了,如果系统盘坏了呢?不知道的可能会采取整个系统盘全做的方式 前提条件:使用cephadm搭建集群 如果换服务器,请确保CEPH数据盘放到其它服务器上…

2026/9/15 15:56:38

基于微信小程序的社区疾病防控系统设计与实现

背景随着信息技术的快速发展和移动互联网的普及,微信小程序作为一种轻量级应用形式,凭借其无需下载安装、即用即走的特点,在多个领域展现出广泛的应用潜力。在公共卫生领域,社区疾病防控是保障居民健康的重要环节,尤其…

2026/9/14 7:49:00

TPIC7710EVM评估模块:汽车电子EPB系统软硬件协同验证实战指南

1. 项目概述与核心价值在汽车电子开发领域,尤其是涉及车身控制、执行器驱动这类高可靠性要求的场景,工程师面临的最大挑战往往不是芯片本身的功能,而是如何快速、准确地将一颗复杂的专用集成电路(ASIC)集成到真实的系统…

2026/9/15 15:52:50

vectorbt向量化回测实战:从环境踩坑到千策并发

1. 为什么“一晚跑上千个策略”听起来很爽,但很多人装上vectorbt后连第一个回测都跑不起来?vectorbt 这个名字在量化圈子里最近两年确实火得有点突然。你刷技术社区、看知乎问答、甚至翻 GitHub Trending,总能看到它被冠以“向量化回测天花板…

2026/9/15 15:52:50

Python行为驱动开发(BDD)实战:BEHAVE框架核心原理与CI集成

1. BEHAVE不是“行为”,是BDD在Python世界的落地锚点很多人第一次看到BEHAVE,下意识会念成“be-have”(有行为),甚至以为是个描述运行时状态的动词——其实它读作 /bɪˈhɑːv/,和“behave”同音&#xff…

2026/9/15 15:52:50

基于Dask的本地化蔬菜价格预测大数据实践

简介:本资源是一份面向高校计算机与数据科学专业学生的高分课程设计项目,聚焦蔬菜价格预测这一典型大数据分析场景,适用于期末大作业、课程设计及数据分析实践学习。项目基于Python构建完整预测流程,涵盖数据采集、清洗、特征工程…

2026/9/15 15:52:50

iii http worker 实战:3 分钟把函数发布成 REST 端点

iii http worker 实战:3 分钟把函数发布成 REST 端点 【免费下载链接】iii Effortlessly compose, extend, and observe every service in real-time for the first time ever. 项目地址: https://gitcode.com/GitHub_Trending/mo/iii 本文带你用 iii 的 htt…

2026/9/15 15:47:50

MobileNetV3核心实战解析:从设计原理到PyTorch复现与量化部署

做端侧模型选型这几年,我绕不开的一个名字就是 MobileNetV3。不管是给安卓应用塞一个人脸检测模型,还是在 RK3588 上跑实时分割,最后工程化落地的方案里总能看到它的影子。这篇笔记不是官方的论文翻译,而是我结合项目实战重新整理…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码