Hetzner Cloud 实例状态显示 stopped 却无法启动,通常是因为集群资源不足、镜像配置错误或账户欠费导致。建议先在控制台查看事件日志,确认是否有资源分配失败的报错。
先说结论:实例无法启动多数是底层资源调度失败或引导配置异常,需按账户、资源、镜像顺序排查。
- 先确认账户账单状态和项目配额是否充足
- 先处理服务器所在位置的资源拥挤或镜像兼容性问题
- 再验证控制台事件日志和系统启动日志
快速处理思路
大部分启动失败问题可以通过控制台操作解决,无需立即使用 API。
- 登录 Hetzner Cloud Console,进入 Project 视图检查 Billing 状态。
- 在 Servers 列表点击故障实例,查看 Power 按钮是否可用。
- 尝试切换启动位置(Change Location)或重建实例(Rebuild)。
为什么会这样
实例无法启动的核心原因是 hypervisor 无法完成资源分配或引导加载程序失败。
Hetzner Cloud 底层依赖物理集群调度,当特定机房(Location)资源紧张时,即使实例状态为 stopped,也可能无法分配 CPU 或内存资源导致启动请求被拒绝。此外,自定义 ISO 镜像损坏、网络配置冲突或账户因欠费被暂停服务,都会阻止实例进入 running 状态。
分步处理
按以下顺序操作,每一步操作后观察状态变化,避免同时执行多个动作导致日志混乱。
1. 检查账户与配额
确认账户没有欠费停机,且项目内服务器数量未达上限。
操作动作:点击左上角账户名,查看 Billing 页面是否有红色警告;检查 Project 设置中的 Resource Quotas。
风险边界:欠费补缴后可能需要几分钟同步状态,不要频繁点击启动按钮。
2. 变更服务器位置
如果当前机房资源不足,迁移到同区域其他机房可能恢复启动。
操作动作:在实例详情页选择 Change Location,选择同一城市不同机房(如 Falkenstein 1 改为 Falkenstein 3)。
风险边界:变更位置通常保留磁盘数据,但建议先创建快照(Snapshot)以防万一。
3. 使用 Rescue 模式排查
如果系统引导损坏,进入 Rescue 模式可以修复引导加载程序。
操作动作:点击 Rescue 标签页,启用 Rescue 系统,重置 root 密码,重启实例。
风险边界:Rescue 模式是临时系统,重启回正常模式前需修复原系统引导,否则依然无法启动。
怎么验证是否生效
验证标准是实例状态稳定为 running 且网络可达。
- 状态检查:控制台 Instances 列表状态显示为绿色 running,且不再自动跳回 stopped。
- 网络检查:本地终端执行
ping 实例 IP能收到回复,SSH 连接成功。 - 日志检查:控制台 Console 标签页能看到系统登录提示符,无 Kernel Panic 报错。
常见坑
- 频繁点击启动:API 有速率限制,短时间内多次触发 Start 动作可能导致请求被临时封锁。
- 自定义镜像兼容:上传的 ISO 或 Image 如果不支持 VirtIO 驱动,实例会启动后立即停止。
- 防火墙规则:虽然不影响启动状态,但错误的 Firewall 规则会导致启动后无法 SSH,容易被误判为启动失败。
常见问题
实例启动后马上又变成 stopped 是怎么回事
通常是系统引导崩溃或内核 panic 导致自我保护停机。
需要进入 Rescue 模式检查 dmesg 日志,确认是否缺少驱动或文件系统损坏。
变更位置会丢失数据吗
Hetzner Cloud 官方说明变更位置通常保留磁盘数据,但存在底层迁移失败风险。
操作前务必创建快照(Snapshot),不要依赖迁移过程的数据安全性。
账户欠费补缴后多久能启动
公开资料中没有看到可靠的量化数据,通常系统在检测到支付成功后自动解除限制。
如果补缴后 10 分钟仍无法启动,需提交 Support Ticket 联系客服刷新状态。
参考来源
- Hetzner Cloud Documentation - Servers Overview: https://docs.hetzner.com/cloud/servers/overview/
- Hetzner Cloud Documentation - Troubleshooting: https://docs.hetzner.com/cloud/general/troubleshooting/