P6 · 阿里云 EBS 管控组 · 入职前 1 周

把公开产品模型,变成你的工作语言。

这不是“分布式存储大全”,而是一套按工作面组织的课程:对象模型、性能模型、快照与一致性、监控与风险事件、OpenAPI 自动化、Linux I/O 排障、公开代码阅读,以及入职第一周该问的问题。

定位

这一周最该准备什么

目标不是提前掌握内部实现,而是进入团队后能迅速用同一套语言讨论问题:资源对象、控制面 API、性能水位、数据保护、恢复边界、监控证据和发布风险。

能力边界

云盘、本地盘、弹性临时盘;系统盘/数据盘;ZRS/LRS;NVMe 设备名;实例规格与盘规格的组合上限。

保护路径

普通快照、快照一致性组、应用一致性快照、自动快照策略、原盘回滚、新盘恢复、异步复制与容灾切换。

性能与观测

IOPS、吞吐量、时延、I/O 大小公式;分钟级监控、秒级 CloudLens、Burst IO、inode、风险事件。

自动化入口

OpenAPI Explorer、SDK 示例、Create/Describe/Attach/Detach/Resize/Snapshot/Replication 一组控制面调用。

Plan

7 天学习路线

每天只追求一个可交付结果。最后你会得到 4 页入职资料:能力边界图、API 路径图、故障排查树、前三月学习计划。

D1

对象模型与公开能力边界

通读块存储概述、云盘类型、NVMe 概述、ESSD AutoPL。画出“控制面—云盘—实例 OS—监控—快照—复制”的边界图。

D2

性能模型:IOPS / 吞吐 / 时延

把 IOPS × I/O 大小 = 吞吐量吃透。用 fio 跑 4 类负载,并用 iostat 对照观察。

D3

快照、恢复与一致性

区分普通快照、一致性组、应用一致性快照、回滚原盘、快照建新盘;用一个决策树说明什么时候该选哪个。

D4

监控、CloudLens 与风险事件

设计 10 个关键指标、5 条告警思路。重点覆盖 IOPS/BPS 水位线、时延、容量、inode、Burst、IO Hang、规格不匹配。

D5

OpenAPI 与 SDK 自动化路径

整理 DescribeDisks、CreateDisk、AttachDisk、DetachDisk、ResizeDisk、CreateSnapshot、CreateSnapshotGroup 的调用链。

D6

公开代码阅读:CSI / blk-mq / QEMU

优先读 alibaba-cloud-csi-driver。目标不是替代内部代码,而是形成 create / attach / expand / snapshot 的生命周期直觉。

D7

口袋清单与入职问题

把所有内容压缩成入职当天能讲清楚的 4 页材料,并准备第一周要问导师、QA、SRE、PM 的问题。

Modules

课程模块

按“解决什么问题 → 失效时怎么定位”来学,不按名词表死背。

01 EBS 对象模型与控制面视角

你要先知道系统暴露了哪些对象:云盘、本地盘、弹性临时盘、系统盘、数据盘、挂载关系、快照链、复制对、自动快照策略、监控指标和风险事件。

  • 能解释为什么系统盘和数据盘生命周期不同。
  • 能解释为什么“盘规格高”不等于“业务一定能跑满”。
  • 能把资源状态拆成:控制面对象、实例状态、OS 设备、文件系统、业务负载。
02 性能模型与容量规划

先看工作负载形态,再看指标:小随机 I/O 通常更关注 IOPS 与时延,大顺序 I/O 更关注吞吐量,容量还要同时看云盘空间、inode、实例规格上限和快照保留。

吞吐量 ≈ IOPS × I/O 大小
  • AutoPL = 基准性能 + 预配置性能 + 性能突发。
  • 告警不要只看“已满”,也要看“快满”和“正在接近性能上限”。
  • 规格不匹配是典型误判来源:实例上限可能低于云盘组合上限。
03 快照、恢复、一致性与容灾

快照是恢复入口,不是万能备份。单盘普通快照、多盘一致性组、数据库应用一致性、自动快照策略、异步复制,各自解决的问题不同。

  • 普通快照:适合单盘时间点恢复。
  • 一致性组:适合多盘同一时间点状态。
  • 应用一致性:适合数据库等存在内存未落盘数据的场景。
  • 异步复制:适合跨可用区/跨地域容灾,关注 RPO/RTO。
04 监控、CloudLens 与风险事件

先用分钟级单盘监控判断趋势,再用 CloudLens 秒级指标、Burst 详情、风险事件做收敛。大规模治理要能从“单盘视角”切到“资源群组视角”。

  • 基础监控:IOPS、吞吐、时延、容量、inode。
  • CloudLens:秒级性能数据、资源概览、云盘分析、Burst 详情。
  • 风险事件:保护缺失、规格不匹配、成本异常、IO Hang 等。
05 OpenAPI / SDK 自动化

管控组非常需要 API 直觉。先会在 OpenAPI Explorer 调接口,再谈 SDK 封装和内部服务。

CreateDiskDescribeDisksAttachDiskResizeDiskCreateSnapshot
  • 关注幂等、异步状态、重试、配额、权限和错误码。
  • 先理解 API 对象,再读控制面代码。
06 Linux I/O 与故障分层

一遇到慢,不要直接怪平台。按层拆:控制面对象 → 实例规格 → OS 设备 → 分区/文件系统 → 性能指标 → 应用调用模式。

  • lsblk / fdisk / blkid:设备与文件系统。
  • df -h / df -i:容量与 inode。
  • iostat -x 1:设备层负载。
  • strace / perf:应用到内核路径。

Toolchain

工具链与实验环境

这部分的目标不是“会背工具参数”,而是看到故障后能快速收窄边界:设备层、文件系统层、系统调用层、CPU/调度层、监控层。

工具/入口最低熟练度你应该会做什么建议产出
fio会写 4 类 job模拟 4k 随机读写、64k 顺序读写,把业务模型映射成可复现实验。benchmark 参数 + 结果解释
iostat会读基础字段判断设备是否真的忙,观察利用率、等待、读写吞吐与请求形态。1 页字段速查
blktrace / blkparse知道何时使用当 iostat 只能说明“慢了”,进一步查看块层请求队列细节。1 次 10 秒 trace 记录
perf会做粗粒度 profile当 CPU 栈、锁竞争或调度抖动影响 I/O 路径时,看采样热点。1 张热点截图/记录
strace会跟踪单进程 I/O把“应用慢”拆成系统调用慢、阻塞、重试、调用模式错误。1 个应用慢调用样例
GDB会抓 core、看 backtrace对崩溃、死锁、异常等待链有基本定位能力。backtrace 练习笔记
Prometheus会写简单规则按 IOPS、吞吐、延迟、容量、inode、水位线设计基础告警。5 条 alert 草案
Grafana会做一个 dashboard把单盘指标、聚合指标、日志、告警串到一张图上。dashboard 草图
QEMU / libvirt知道虚拟块设备位置建立宿主机虚拟化、block backend、hotplug、domain XML 直觉。attach/detach 心智图
containerd / Docker / CSI理解容器卷生命周期分清容器运行时、PV/PVC、CSI Driver、底层云盘生命周期。CSI create/attach 时序图

Labs

一周内可完成的小型项目

只做最有复利的练习。所有命令都建议在本地 Linux 虚拟机或测试机上执行,不要对生产盘直接压测。

4h高优先级

本地 I/O 压测画像

用 fio 生成四类负载,再用 iostat / strace / perf 观察。

mkdir -p ~/ebs-lab/fio && cd ~/ebs-lab/fio
fio --name=prepare --filename=./fio.img --size=4G --rw=write --bs=1M --direct=1
fio --name=randread4k --filename=./fio.img --rw=randread --bs=4k --iodepth=32 --numjobs=4 --ioengine=libaio --direct=1 --time_based --runtime=60 --group_reporting
iostat -x 1
3h高优先级

快照恢复决策树

整理普通快照、一致性组、应用一致性、原盘回滚、新盘恢复、异步复制的选择条件。

单盘?多盘?数据库?跨 AZ/Region?恢复到原盘?
3h高优先级

监控面最小原型

设计 10 个指标与 5 条告警规则,例如 IOPS 水位线、BPS 水位线、p95 延迟、容量使用率、inode 使用率、Burst IO。

  • 指标命名要包含维度:region / zone / disk_type / instance_id / disk_id。
  • 规则要区分 warning 与 critical。
  • 告警描述要写清“下一步排查动作”。
4h高优先级

CSI 驱动时序笔记

读 alibaba-cloud-csi-driver 的 README 和 disk plugin 入口,输出 create / attach / expand / snapshot 的时序图。

PVCProvisionerCSI ControllerEBS APINode Publish

Code reading

代码与架构阅读路线

入职前拿不到内部仓库,所以阅读公开代码的目标是训练动作:先对象模型,再生命周期,再性能路径,再失败路径。不要把开源实现冒充成内部实现。

优先级仓库/文档为什么读阅读顺序自测问题
alibaba-cloud-csi-driver公开世界里最接近阿里云云盘控制生命周期的入口。README → deploy → disk plugin → expand/snapshot/topologyprovision、attach、resize、snapshot 分别落在哪些对象?
Linux blk-mq / I/O statistics理解现代块层并行队列与统计指标。blk-mq → iostats → iostat 输出哪些指标更接近“设备忙”,哪些只是业务体感慢?
QEMU补 ECS 运行时心智,理解虚拟块设备、I/O 线程、block backend。README → block.c → blockdev.c → iothread.cblock device 配置和 I/O 线程在代码中怎样分层?
libvirt / virsh把设备热插拔、域配置、虚拟化 API 变得具体。概览 → domain XML → virsh云盘 attach/detach 在虚拟机层面可能映射成什么配置变更?
Ceph Architecture / RBD补分布式块存储集群视图、复制、块对象映射直觉。Architecture → RBD → monitor/OSD 概念为什么 client 拿到 cluster map 后能减少中心瓶颈?
SPDK补 NVMe、用户态存储栈、极致性能路径直觉。What is SPDK → User Space Drivers → NVMe Driver用户态驱动、轮询、零拷贝各自省了什么开销?
Longhorn / OpenEBS学习云原生存储控制器、副本、备份、快照如何暴露。Concepts → manager/engine → backup/snapshot控制器做什么,底层存储引擎做什么?
etcd补强一致元数据层语言。overview → guarantees → lease/election为什么元数据层偏强一致,而数据层优化点不同?

Runbook

排障第一反应模板

先分层,再跑命令。下面这棵树适合贴在你的笔记首页。

症状优先怀疑排查动作修复方向
数据盘有数据但业务读不到没挂载、挂错目录、fstab 错、挂错实例lsblk -fdf -hmountcat /etc/fstab修正挂载目录和 UUID,避免两盘挂同一目录。
云盘规格高但跑不满实例规格上限低于盘能力查实例规格、盘规格、IOPS/BPS 水位线调整实例规格或盘组合。
NVMe 盘设备名变化镜像/实例/云盘 NVMe 条件,旧设备名假设lsblkfdisk -lblkid使用 UUID 挂载,不依赖 /dev/vdX
扩容后 OS 未生效只扩了块设备,分区/文件系统未扩lsblkfdisk -ldf -h继续做分区和文件系统扩容。
空间没满但写不进inode 耗尽、小文件过多df -i、日志目录巡检清理小文件,优化日志轮转。
恢复后数据不一致多盘没用一致性组、数据库没应用一致性查快照类型、应用日志、恢复方式多盘用一致性组,数据库用应用一致性快照。

Pocket checklist

入职当天带走的 4 页口袋清单

1. 公开能力边界图

画清楚控制面、云盘、实例 OS、快照、复制、CloudLens、风险事件。

2. API 路径图

从创建、查询、挂载、扩容、快照,到复制与告警治理。

3. 故障排查树

按对象、规格、OS、文件系统、性能、应用层分层定位。

4. 前三月学习计划

前 30 天熟悉工作面,60 天参与排障,90 天独立做低风险输出。

30 / 60 / 90 days

首月与前三月按周目标

入职后的衡量标准要从“看了多少资料”逐步切到“能否解释故障、参与排障、独立完成低风险输出”。

周次目标可量化产出优先级
第 1 周建立公开能力边界图高优先级文档;8–12 页笔记;1 张能力边界图
第 2 周建立性能观测直觉fio 4 类负载;iostat/strace/perf 各 1 次;2 页结果对照
第 3 周建立数据保护直觉快照—一致性组—应用一致性—回滚—新盘恢复决策树
第 4 周建立监控与告警直觉10 个关键指标;5 条阈值思路;CloudLens 心智图
第 5 周进入控制面代码阅读CSI create/attach/snapshot/expand 时序图
第 6 周补 Linux 块层与虚拟化心智blk-mq、QEMU、libvirt 公开资料;10 个自测问题
第 7 周建立内部环境映射把公开模型映射到内部服务、仓库、监控、发布、值班入口
第 8 周建立故障分类法按挂载、性能、快照、复制、规格、文件系统六类做 taxonomy 图
第 9 周产出第一个低风险改进runbook、告警规则或小工具优化项,独立完成并过评审
第 10 周参与一次真实排障复盘“指标—命令—结论—修复”链路
第 11 周独立承担一个小需求或缺陷明确验收标准、回滚方案、测试证据
第 12 周形成 EBS 管控工作手册雏形5–8 页内部工作手册:入口、故障、指标、升级路径

Onboarding

入职第一周要问的问题

问导师

这个组负责资源控制、策略编排、可观测、容灾,还是某一条子链路?我前 30 天的成功标准是什么?

问 Oncall owner

告警分级、事故升级、低风险/高风险处理边界、值班 runbook 在哪里?

问 PM

这个季度最重要的 3 个目标是什么?性能、成本、可用性、客户诉求谁排第一?

问 QA

存储类改动最看重哪些测试证据?一致性、故障注入、回归、兼容性分别怎么要求?

问 SRE/发布

变更窗口、灰度策略、回滚标准、演练频率是什么?

问安全/合规

哪些日志、指标、截图、客户信息不能带出内网?哪些场景必须脱敏?

Resources

资料库

优先读官方中文文档;开源资料用于建立心智模型,不要把它当作阿里云内部实现。

优先级资料你要看什么预计
块存储概述云盘/本地盘/弹性临时盘,系统盘/数据盘,冗余类型。0.5h
块存储性能IOPS、吞吐量、访问时延和 I/O 大小关系。1.5h
快照原理块级最小粒度、全量/增量快照、快照链。1h
快照一致性组多盘同一时间点、崩溃一致性与时序一致性。0.5h
创建应用一致性快照数据库、内存未落盘、文件系统一致性与应用一致性差别。0.5h
查看云盘监控信息分钟级监控、OS 指标、容量与 inode、Burst IO。1h
CloudLens for EBS 概述资源概览、云盘分析、秒级性能数据、云盘事件。0.5h
ECS API 概览CreateDisk、DescribeDisks、AttachDisk、DetachDisk、ResizeDisk。1h
OpenAPI Explorer / SDK 示例在线调试接口,生成 Java/Python/Node.js 等 SDK 示例。0.5h
NVMe 协议概述实例、镜像、云盘限制;设备名与 UUID 挂载。0.75h
ESSD AutoPL 云盘基准性能、预配置性能、性能突发与计费意识。1h
修改 AutoPL 性能配置调整 IOPS 后吞吐同步变化;两次调整间隔。0.5h
开启云盘自动快照策略默认保护意识、误操作/攻击/应用故障/硬件故障风险。0.5h
云盘容灾概述异步复制、主从盘、故障切换、反向复制、一致性复制组。0.75h
初始化 EBS 实验室环境如果有测试账号,体验现成实验场景并注意资源释放。1h
alibaba-cloud-csi-driver公开代码中最接近云盘 create/attach/resize/snapshot 控制生命周期的入口。3h
Linux blk-mq / I/O statistics现代块层队列和 /proc/diskstats 字段。2h
Kubernetes CSI 文档Volume expansion、snapshot、topology 的基本对象。1h
QEMU / Ceph 架构 / SPDK虚拟化块设备、分布式存储心智、用户态高性能 I/O。4h+
fio / iostat / strace本地 I/O 压测与应用到系统调用层排障。4h
Prometheus / Grafana设计指标、规则、dashboard 与告警描述。2.5h
libvirt / virsh虚拟机设备配置、热插拔与 domain XML。1h
Longhorn / OpenEBS控制器、副本、备份、快照在云原生形态下如何暴露。2h
etcd强一致元数据、配置、分布式协调、leader election 语言。1h

Deploy

部署到 Cloudflare Pages

这个页面是纯静态站点,可用 Cloudflare Pages Direct Upload。当前包里已经包含 _headers_redirects 和 Wrangler 配置。

方式 A:网页拖拽上传

  1. 进入 Cloudflare Dashboard → Workers & Pages。
  2. Create application → Get started → Drag and drop your files。
  3. 上传 aliyun-ebs-p6-course-deploy.zip
  4. 项目名建议:aliyun-ebs-p6-course
  5. 部署成功后访问 <PROJECT_NAME>.pages.dev

方式 B:Wrangler CLI

cd aliyun-ebs-p6-course-project/public
npx wrangler login
npx wrangler pages project create aliyun-ebs-p6-course --production-branch main
npx wrangler pages deploy . --project-name aliyun-ebs-p6-course