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 或串行控制台修复
软件升级后服务失败回滚配置/版本,保留数据
文件系统损坏但数据重要引导卷挂载、只读检查、备份后修复
私钥泄露或确认入侵隔离、取证、轮换凭据、从可信源重建
无重要数据且配置可重现重建通常更快、更可信
创建于 2026/7/20 更新于 2026/7/20