OCI 服务器生命周期与恢复阶梯
把 OCI 实例的创建、加固、运行、故障与恢复方式组织成从低风险到高风险的决策阶梯。
#type / synthesis
#status / growing
#tech / ops
#resource / oracle-cloud
#platform / server
[!abstract] 恢复原则 从信息最多、破坏最小的方式开始。先观察控制台和现有会话,再用 Run Command 或串行控制台,最后才停机并挂载引导卷;不要一遇到 SSH 超时就重装。
OCI 服务器生命周期与恢复阶梯
生命周期
stateDiagram-v2
[*] --> Planned
Planned --> Provisioned: 创建实例
Provisioned --> Reachable: 首次 SSH
Reachable --> Hardened: 安全加固
Hardened --> Operating: 部署与监控
Operating --> Degraded: 告警或连接异常
Degraded --> Operating: 低风险修复
Degraded --> ConsoleRecovery: SSH 不可用
ConsoleRecovery --> Operating: 修复配置
ConsoleRecovery --> VolumeRecovery: 系统无法启动
VolumeRecovery --> Operating: 修复并重挂引导卷
Operating --> Retired: 备份并终止
每次状态转换都应留下验证证据。例如“加固完成”不是命令退出 0,而是新 SSH 会话、sudo、重启和防火墙均验证成功。
故障时的恢复阶梯
0. 停止继续修改
- 保留仍能工作的 SSH 会话;
- 记录刚执行的命令和时间;
- 不反复重启、不删除实例、不清空规则;
- 截取实例状态、IP、VNIC、NSG 和引导卷 OCID。
1. 控制台与指标观察
检查实例运行状态、可访问性指标、控制台历史、Oracle Cloud Agent 插件状态和近期审计事件。先判断是网络、系统还是平台问题。
2. 现有 SSH 会话修复
如果旧会话仍在:
sudo sshd -t
sudo sshd -T | grep -E '^(port|passwordauthentication|permitrootlogin|pubkeyauthentication)'
sudo ss -lntp
sudo ufw status numbered
恢复正确配置后先新建会话,不要先退出旧会话。
3. OCI Run Command
Oracle Cloud Agent 正常且 IAM 权限齐全时,可在没有入站 SSH 的情况下执行非交互脚本。适合恢复防火墙、写回配置或收集诊断。
限制:
- 不在明文命令中传密码、私钥或 token;
- 不停止 Oracle Cloud Agent 或 Run Command 插件;
- 命令应幂等、有超时并输出明确退出码。
4. 串行控制台
系统仍能启动但网络/SSH 配置损坏时,使用 使用控制台连接恢复 OCI 实例。它绕过普通网络入口,但登录系统仍需要可用用户、密码或恢复模式。
5. VNC/启动级恢复
需要观察引导过程、GRUB 或进入单用户模式时使用 VNC 控制台。它比普通串行日志更适合交互式启动修复。
6. 引导卷挂载救援
系统无法正常启动或无法登录时,停机并把引导卷作为数据卷挂到救援实例,按 挂载引导卷修复 OCI 实例 操作。
7. 从备份重建
如果文件系统或信任边界已破坏,修补可能不如重建可靠。使用已验证的引导卷备份、配置清单和数据备份创建新实例,再切换 IP/域名。
变更前的恢复准备
高风险变更前至少准备:
- 一个仍保持连接的 SSH 会话;
- 配置文件时间戳备份;
sshd -t或对应服务的语法检查;- OCI 控制台和 MFA 可用;
- 串行控制台权限;
- 最近的数据和配置备份;
- 明确的回滚命令。
修复还是重建
| 情况 | 优先选择 |
|---|---|
| 只改错 SSH 端口/防火墙 | 原会话、Run Command 或串行控制台修复 |
| 软件升级后服务失败 | 回滚配置/版本,保留数据 |
| 文件系统损坏但数据重要 | 引导卷挂载、只读检查、备份后修复 |
| 私钥泄露或确认入侵 | 隔离、取证、轮换凭据、从可信源重建 |
| 无重要数据且配置可重现 | 重建通常更快、更可信 |
Related notes
- 所属 MOC:甲骨文云服务器 MOC
- SSH 排障:OCI SSH 与端口连通性排查
- 控制台恢复:使用控制台连接恢复 OCI 实例
- 引导卷恢复:挂载引导卷修复 OCI 实例
- 备份:维护与备份 OCI 服务器