能力边界
云盘、本地盘、弹性临时盘;系统盘/数据盘;ZRS/LRS;NVMe 设备名;实例规格与盘规格的组合上限。
定位
目标不是提前掌握内部实现,而是进入团队后能迅速用同一套语言讨论问题:资源对象、控制面 API、性能水位、数据保护、恢复边界、监控证据和发布风险。
云盘、本地盘、弹性临时盘;系统盘/数据盘;ZRS/LRS;NVMe 设备名;实例规格与盘规格的组合上限。
普通快照、快照一致性组、应用一致性快照、自动快照策略、原盘回滚、新盘恢复、异步复制与容灾切换。
IOPS、吞吐量、时延、I/O 大小公式;分钟级监控、秒级 CloudLens、Burst IO、inode、风险事件。
OpenAPI Explorer、SDK 示例、Create/Describe/Attach/Detach/Resize/Snapshot/Replication 一组控制面调用。
Plan
每天只追求一个可交付结果。最后你会得到 4 页入职资料:能力边界图、API 路径图、故障排查树、前三月学习计划。
通读块存储概述、云盘类型、NVMe 概述、ESSD AutoPL。画出“控制面—云盘—实例 OS—监控—快照—复制”的边界图。
把 IOPS × I/O 大小 = 吞吐量吃透。用 fio 跑 4 类负载,并用 iostat 对照观察。
区分普通快照、一致性组、应用一致性快照、回滚原盘、快照建新盘;用一个决策树说明什么时候该选哪个。
设计 10 个关键指标、5 条告警思路。重点覆盖 IOPS/BPS 水位线、时延、容量、inode、Burst、IO Hang、规格不匹配。
整理 DescribeDisks、CreateDisk、AttachDisk、DetachDisk、ResizeDisk、CreateSnapshot、CreateSnapshotGroup 的调用链。
优先读 alibaba-cloud-csi-driver。目标不是替代内部代码,而是形成 create / attach / expand / snapshot 的生命周期直觉。
把所有内容压缩成入职当天能讲清楚的 4 页材料,并准备第一周要问导师、QA、SRE、PM 的问题。
Modules
按“解决什么问题 → 失效时怎么定位”来学,不按名词表死背。
你要先知道系统暴露了哪些对象:云盘、本地盘、弹性临时盘、系统盘、数据盘、挂载关系、快照链、复制对、自动快照策略、监控指标和风险事件。
先看工作负载形态,再看指标:小随机 I/O 通常更关注 IOPS 与时延,大顺序 I/O 更关注吞吐量,容量还要同时看云盘空间、inode、实例规格上限和快照保留。
快照是恢复入口,不是万能备份。单盘普通快照、多盘一致性组、数据库应用一致性、自动快照策略、异步复制,各自解决的问题不同。
先用分钟级单盘监控判断趋势,再用 CloudLens 秒级指标、Burst 详情、风险事件做收敛。大规模治理要能从“单盘视角”切到“资源群组视角”。
管控组非常需要 API 直觉。先会在 OpenAPI Explorer 调接口,再谈 SDK 封装和内部服务。
一遇到慢,不要直接怪平台。按层拆:控制面对象 → 实例规格 → 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 虚拟机或测试机上执行,不要对生产盘直接压测。
用 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
整理普通快照、一致性组、应用一致性、原盘回滚、新盘恢复、异步复制的选择条件。
设计 10 个指标与 5 条告警规则,例如 IOPS 水位线、BPS 水位线、p95 延迟、容量使用率、inode 使用率、Burst IO。
读 alibaba-cloud-csi-driver 的 README 和 disk plugin 入口,输出 create / attach / expand / snapshot 的时序图。
Code reading
入职前拿不到内部仓库,所以阅读公开代码的目标是训练动作:先对象模型,再生命周期,再性能路径,再失败路径。不要把开源实现冒充成内部实现。
| 优先级 | 仓库/文档 | 为什么读 | 阅读顺序 | 自测问题 |
|---|---|---|---|---|
| 高 | alibaba-cloud-csi-driver | 公开世界里最接近阿里云云盘控制生命周期的入口。 | README → deploy → disk plugin → expand/snapshot/topology | provision、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.c | block 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 -f、df -h、mount、cat /etc/fstab | 修正挂载目录和 UUID,避免两盘挂同一目录。 |
| 云盘规格高但跑不满 | 实例规格上限低于盘能力 | 查实例规格、盘规格、IOPS/BPS 水位线 | 调整实例规格或盘组合。 |
| NVMe 盘设备名变化 | 镜像/实例/云盘 NVMe 条件,旧设备名假设 | lsblk、fdisk -l、blkid | 使用 UUID 挂载,不依赖 /dev/vdX。 |
| 扩容后 OS 未生效 | 只扩了块设备,分区/文件系统未扩 | lsblk、fdisk -l、df -h | 继续做分区和文件系统扩容。 |
| 空间没满但写不进 | inode 耗尽、小文件过多 | df -i、日志目录巡检 | 清理小文件,优化日志轮转。 |
| 恢复后数据不一致 | 多盘没用一致性组、数据库没应用一致性 | 查快照类型、应用日志、恢复方式 | 多盘用一致性组,数据库用应用一致性快照。 |
Pocket checklist
画清楚控制面、云盘、实例 OS、快照、复制、CloudLens、风险事件。
从创建、查询、挂载、扩容、快照,到复制与告警治理。
按对象、规格、OS、文件系统、性能、应用层分层定位。
前 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 天的成功标准是什么?
告警分级、事故升级、低风险/高风险处理边界、值班 runbook 在哪里?
这个季度最重要的 3 个目标是什么?性能、成本、可用性、客户诉求谁排第一?
存储类改动最看重哪些测试证据?一致性、故障注入、回归、兼容性分别怎么要求?
变更窗口、灰度策略、回滚标准、演练频率是什么?
哪些日志、指标、截图、客户信息不能带出内网?哪些场景必须脱敏?
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 Direct Upload。当前包里已经包含 _headers、_redirects 和 Wrangler 配置。
aliyun-ebs-p6-course。<PROJECT_NAME>.pages.dev。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