OpenStack 每日学习课程
日期: 2026年4月7日
主题: Cinder — 块存储服务
一、核心概念:云端的"移动硬盘"
想象你的电脑硬盘不够用了,你会怎么办?买个移动硬盘插上,数据就有了新家。
Cinder 就是 OpenStack 云里的"移动硬盘管理员"。
它不关心硬盘里存什么文件,只负责:
- 给虚拟机"插上"一块新硬盘(创建卷)
- 把硬盘从一台虚拟机拔下来插到另一台(卷迁移)
- 给硬盘做个快照备份
- 管理不同"品牌"的硬盘(后端存储驱动)
类比:Cinder 像公司的设备管理员,你申请"我要一个 500G 硬盘",他给你办好手续、插到你的工位上。至于你存什么文件,他不管。
二、工作原理:谁在协作?
用户请求 → Cinder-API → Cinder-Scheduler → Cinder-Volume → 存储后端
↓
数据库(记录卷信息)
关键组件:
| 组件 | 职责 |
|---|---|
| cinder-api | 接收 REST 请求,像"前台接待" |
| cinder-scheduler | 选择最优存储节点,像"调度员" |
| cinder-volume | 与存储后端交互,真正的"干活者" |
| cinder-backup | 备份卷到备份存储(如 Swift) |
创建卷的流程:
- 用户调用 API:"我要一个 100G 的卷"
- Scheduler 根据容量、可用区选择后端
- Volume 驱动调用存储后端(LVM/Ceph/NFS/商业存储)创建
- 数据库记录卷的元数据
- 用户将卷 attach 到虚拟机,变成
/dev/vdb
三、实际应用场景
场景 1:数据库持久化存储
MySQL 跑在虚拟机上,虚拟机删除后数据怎么办?
→ 把数据库目录挂载到 Cinder 卷上,数据与虚拟机生命周期解耦。
场景 2:快照与回滚
测试环境要测危险操作,怕搞坏环境?
→ 操作前对卷打快照,出问题直接从快照恢复,秒级回滚。
场景 3:跨虚拟机共享数据
A 虚拟机处理完数据,B 虚拟机要继续处理?
→ 卷 detach from A,attach to B,数据无缝流转。
四、动手练习
创建一个 1G 的卷:
openstack volume create --size 1 my-first-volume查看卷列表:
openstack volume list将卷挂载到虚拟机:
openstack server add volume my-vm my-first-volume思考题: 如果 Cinder 后端同时有 SSD 和 HDD,如何让用户选择"我要高性能存储"?
五、今日总结
| 维度 | 内容 |
|---|---|
| 是什么 | 块存储服务,为虚拟机提供持久化卷 |
| 核心能力 | 创建/删除/挂载/快照/迁移/备份 |
| 关键组件 | api、scheduler、volume、backup |
| 后端支持 | LVM、Ceph、NFS、商业存储(NetApp、EMC 等) |
| 与 Nova 关系 | Nova 管虚拟机,Cinder 管硬盘,两者协作 attach/detach |
| 与 Swift 区别 | Cinder 是块存储(像硬盘),Swift 是对象存储(像网盘) |
明日预告: Heat — 编排服务,用模板一键部署整套云资源。