---
url: >-
  /courses/cloud-platform-build-management/11-openstack-alibaba-resource-mapping/index.md
---
# 第十一次课：OpenStack 与阿里云资源映射

## 进入本课环境

* `[Windows PowerShell] wsl ~`：打开本机默认的 WSL2 Ubuntu；本课在 WSL 和阿里云控制台或官方文档中完成资源映射，不需要 SSH 登录 ECS。

上一课认识了 OpenStack 的身份、计算、镜像、网络和存储服务。本次课依据这些职责，在阿里云产品中寻找相近对象，帮助你看懂控制台里分散的资源。

先记住一句话：

::: tip 关键提醒
职责相近不等于产品一一对应。OpenStack 是开源项目组合，阿里云是商业公有云产品体系；映射只用于迁移已有概念，不能拿来推断内部实现完全相同。
:::

学完这一课，你可以：

1. 把 Nova、Glance、Neutron、Cinder、Swift 等职责映射到相近的阿里云产品。
2. 沿 ECS 实例找到镜像、VPC、交换机、安全组和云盘。
3. 区分云盘、快照和 OSS 的数据模型与恢复用途。
4. 对安全组变更先写范围、影响与回退，不扩大公网暴露。

## 11.1 带着职责去找资源

不要从产品名称开始背。打开控制台或官方资料后，依次寻找计算、镜像、网络、访问控制、块存储、快照和对象存储，再记录它们与 OpenStack 概念的相近点和差异。

没有本人控制台权限时，只使用官方资料完成映射，并把证据类型标成“产品文档”。不要借用他人账号，也不要把官方页面写成个人资源状态。

## 11.2 先找职责，再找产品名

下表适合作为第一次检索的对照地图：

| OpenStack 服务或对象 | 阿里云相近产品或对象 | 核心职责映射 | 必须保留的本质差异 |
|---|---|---|---|
| Nova Server | ECS 实例 | 创建和管理虚拟服务器 | ECS 底层控制面由阿里云全托管，租户感知不到 Nova 类似组件 |
| Nova Flavor | ECS 实例规格 | 描述 vCPU、内存与性能上限 | 规格族分类、库存分配与计费规则由各厂商独自制定 |
| Glance Image | ECS 镜像 | 提供操作系统启动模板 | 镜像格式、共享机制与版本生命周期规则不同 |
| Neutron Network/Subnet | VPC / 交换机 | 提供隔离网络与私网 IP 范围 | 阿里云将网络能力分散拆解在 VPC、交换机、路由等独立产品里 |
| Neutron Port | 弹性网卡 ENI | 连接计算实例与网络 | 字段属性、动态绑定机制与在控制台的可见状态不同 |
| Neutron Security Group | ECS 安全组 | 过滤实例出入站流量 | 规则匹配优先级、类型、默认动作与具体功能细节不同 |
| Cinder Volume | 云盘 | 为实例提供持久化块存储 | 存储类型、性能等级（PL）、可用区部署与计费模式不同 |
| Cinder Snapshot | ECS 云盘快照 | 备份云盘时间点的数据 | 底层快照链实现、保留策略、跨地域复制与收费不同 |
| Swift Object | OSS 对象存储 | 以 Key-Value 对象方式存取海量数据 | API 协议、权限访问模型、存储分级与数据一致性设计不同 |
| Keystone | RAM / STS 权限体系 | 身份鉴权、临时 Token 与访问控制 | 阿里云统一账号体系无法直接替换为 Keystone 实例 |
| Horizon | 阿里云控制台 | 提供图形化 Web 操作入口 | 阿里云控制台贯穿所有云产品，不代表单一后端服务 |
| Heat | ROS（资源编排）；亦可对比 Terraform | 通过声明式模板创建管理云资源 | 模板语法 DSL、状态追踪机制与覆盖的产品范围不同 |

{{guided-demo:lesson-11-resource-mapping}}

摸索一项陌生的云服务时，不必死记硬背缩写。试着先问自己三个问题：“它管的是什么、改了它会影响谁、证据去哪里查”，理解自然就顺了。

## 11.3 ECS 实例不是一组孤立的 CPU 和内存

阿里云官方文档将 ECS 定义为 IaaS 核心云服务器，其架构图清晰包含了实例、镜像、块存储、快照、安全组与网络联通。简单来说，一台 ECS 就是多项云资源组合后的成品。

如果在控制台有操作权限，建议至少记录以下只读字段：

| 字段名 | 观察用途 | 敏感信息保护规则 |
|---|---|---|
| 地域与可用区 | 确认物理位置与高可用范围 | 通用地域名无需掩码 |
| 实例规格 | 确认 vCPU、内存与性能能力 | 无需粘贴具体订单与价格详情 |
| 镜像与系统 | 确认操作系统类型与版本 | 绝不粘贴镜像自带的密码或密钥 |
| VPC / 交换机 | 确认私网网段与子网归属 | 资源 ID 建议隐藏中间字符（如 `vpc-****9c3d`） |
| 安全组 | 确认入站出站访问控制规则 | 绝不暴露完整公网 IP |
| 系统盘与数据盘 | 确认挂载的块存储关系 | 绝不提交业务数据内容或快照链信息 |

报告中用 `i-****7a2b`、`vpc-****9c3d` 这种遮掩形式，既能证明“这个资源确实存在并已绑定”，又保证了账号隐私安全。

## 11.4 VPC、交换机和安全组分别回答什么

**VPC**（在云上构建的逻辑隔离私有网络环境） 划定私网网段与路由边界；**交换机**（VPC 内用于承载云资源并分配私网地址的子网对象） 决定资源所在的可用区；**安全组**（作用于 ECS 实例弹性网卡的虚拟防火墙） 过滤端口与 IP 流量。

三者的分工非常明确：

```txt
VPC：资源属于哪一个隔离网络？
交换机：资源落在哪个可用区和子网？
安全组：哪些来源、协议和端口允许进出？
```

安全组既不是 Nginx 代理配置，也不是系统内部的 `ufw`。一次 SSH 连接失败，可能卡在安全组、系统防火墙、SSH 守护进程或密钥匹配的任意一环。

根据阿里云安全组文档，规则作用于 ECS 的弹性网卡，创建实例时必须挂载至少一个安全组。多个安全组叠在一起，共同决定某条流量是否放行。

检查一条入方向规则时，按同一行阅读：

| 字段 | 要回答的问题 | 教学示例 |
|---|---|---|
| 方向 | 控制进入还是离开实例的流量？ | 入方向 |
| 协议 | 使用 TCP、UDP 还是 ICMP？ | TCP |
| 端口 | 哪个目标服务需要访问？ | 22 |
| 来源 | 允许谁发起连接？ | 本人当前出口地址或课程指定出口 |
| 策略/优先级 | 是允许还是拒绝，冲突时怎样排序？ | 按控制台实际字段记录 |
| 描述 | 为什么存在、谁维护、何时复核？ | 第 11 次课 SSH 最小访问 |

::: warning 安全边界
不要把 SSH、数据库或课程临时端口的来源改为全网，也不要删除当前仍在使用的规则。任何变更必须先记录原值、目标值、影响对象、验证方法和回退值；没有自己的控制台权限时只做评审，不执行变更。
:::

## 11.5 云盘、快照和 OSS 不是三种“文件夹”

**云盘**（向 ECS 提供块设备的持久化存储资源）。Linux 会在块设备上创建文件系统并挂载到目录，应用才看到文件。

**快照**（云盘在某个时间点的数据副本，用于回滚、克隆和备份场景）。它依赖源云盘的数据块关系，不是学生可以下载后打开的普通压缩包。

**OSS**（用 Bucket、Object Key、数据与元数据管理对象的云存储服务）。Object Key 中可以带 `/` 来模拟目录，但 OSS 不是传统层级文件系统，也不是直接附加到 ECS 的普通云盘。

| 对象 | 典型访问方式 | 适合做什么 | 不能直接替代 |
|---|---|---|---|
| 云盘 | ECS 内块设备、文件系统和挂载点 | 系统盘、数据库数据、在线文件 | 独立异地备份 |
| 云盘快照 | ECS 控制台或 API | 时间点回滚、克隆云盘、变更前保护 | 文件级版本管理和恢复演练 |
| OSS | API、SDK、`ossutil`、控制台 | 备份包、图片、静态资源、大对象 | 数据库在线块设备 |

阿里云快照概述明确提醒：ECS 不会自动备份云盘数据，需要按业务要求创建和保留快照。

## 11.6 资源寻宝：从实例反向找到依赖

本课实训有两条等价路线：

* **有本人控制台权限**：只读查看自己的 ECS，记录脱敏字段。
* **没有控制台权限**：使用本课三张官方文档和链接，填写“产品定义与待核查字段”，不编造实例或资源 ID。

进入 **WSL**：

```bash
[WSL] cd ~/cloud-course/lab-11
```

切换到本课目录。用 `pwd` 确认当前路径。

```bash
[WSL] mkdir -p answers
```

创建答题目录；目录已存在时，`-p` 不会报错。

```bash
[WSL] cp starter/openstack-alibaba-map.tsv answers/openstack-alibaba-map.tsv
```

复制资源映射模板。每一行必须同时填写相近点和至少一个差异。

```bash
[WSL] cp starter/resource-audit.tsv answers/resource-audit.tsv
```

复制资源核查模板。有控制台权限时填脱敏实值；无权限时把状态填写为 `document-only`，并记录官方页面和待核查字段。

```bash
[WSL] cp starter/security-change-review.tsv answers/security-change-review.tsv
```

复制安全组变更评审模板。默认只完成评审；只有获得明确批准且对象属于本人实例时，才执行不扩大来源和端口范围的变更。

完整步骤见[实训 11：云资源映射与配置核查](./lab-11.md)。

## 11.7 安全组变更使用“前—中—后”记录

变更前：

```txt
实例（脱敏）：
安全组（脱敏）：
现有方向/协议/端口/来源：
目标值：
业务理由：
是否扩大公网面：否
回退值：
```

执行中只修改经过确认的一项字段，不顺手删除、合并或新增其他规则。

变更后沿原路径验证：

```bash
[WSL] ssh -o ConnectTimeout=8 <本人账号>@<本人ECS地址>
```

这条命令只用于已获授权的本人实例，并设置 8 秒连接超时。报告必须遮盖账号和完整地址。

如果本课没有批准任何变更，就在报告中写明“仅完成变更评审，未执行”。不执行未经授权的操作同样是合格的运维决策。

{{chat-lab:lesson-11-resource-evidence}}

## 11.8 自动验收与人工复核

```bash
[WSL] bash verify.sh
```

脚本检查三张 TSV 是否存在、表头是否正确、必需映射是否齐全、控制台证据是否标记 `console` 或 `document-only`，以及安全组评审是否填写“不扩大公网面”。它不会读取云账号，也不会连接阿里云 API。

人工复核继续检查：

* 每个映射是否有差异说明；
* 实例、VPC、交换机、安全组和云盘关系是否来自同一地域与本人资源；
* 文档路线是否明确标记为文档证据；
* 安全组方案是否最小化来源、协议和端口；
* 完整资源 ID、公网地址、账号、订单和余额是否已遮盖。

## 11.9 清理与提交

本课默认没有创建资源或后台服务。有控制台权限的学生只要确认：

* 没有新建付费实例、云盘、快照或 OSS；
* 没有留下临时宽放的安全组规则；
* 经批准的规则修改已验证并记录，失败时已恢复原值。

提交文件：

```txt
班级_学号_姓名_第11次课_云资源映射核查报告.docx
```

只提交一个 Word 到智慧职教“第11次课”，不上传控制台导出文件、账单、日志全集或凭据。

{{reflection-checkpoint:lesson-11-resource-ready}}

## 11.10 第十一次课小测

{{assessment:lesson-11-check}}

## 11.11 小结

* 资源映射从相近职责出发，必须同时记录差异。
* ECS 实例与镜像、VPC、交换机、安全组和云盘共同构成可用资源。
* VPC 定义隔离网络，交换机承载子网资源，安全组控制实例流量。
* 云盘提供块存储，快照保存时间点副本，OSS 管理对象。
* 没有控制台权限时使用官方资料并标明限制，不能编造资源证据。
* 安全组变更必须有原值、目标、最小范围、验证和回退。

下一次课将围绕这些对象，学习 ECS 的启停、释放、磁盘恢复、监控，以及流量和费用提醒。

## 11.12 资料来源

以下资料在 2026-07-28 核对：

* [阿里云：什么是云服务器 ECS](https://help.aliyun.com/zh/ecs/user-guide/what-is-ecs)
* [阿里云：实例概述](https://help.aliyun.com/zh/ecs/user-guide/overview-52)
* [阿里云：什么是专有网络 VPC](https://help.aliyun.com/zh/vpc/what-is-vpc)
* [阿里云：安全组概述](https://help.aliyun.com/zh/ecs/user-guide/overview-44)
* [阿里云：安全组规则](https://help.aliyun.com/zh/ecs/user-guide/security-group-rules/)
* [阿里云：快照概述](https://help.aliyun.com/zh/ecs/user-guide/snapshot-overview/)
* [阿里云：什么是对象存储 OSS](https://help.aliyun.com/zh/oss/user-guide/what-is-oss/)

{{assistant-invite:lesson-11-finish}}
