介绍
ECS实例启动是实例使用的第一步也是关键的一步,这点的重要性已经很明显。在本系列第一篇文章中,已经介绍了我们的一些初期工作,在之前版本的实例启动诊断功能中,我们可以诊断云系统、用户操作系统中:fstab文件/磁盘使用率/磁盘innode的问题。因为绝大多数实例启动的问题都是出现在用户操作系统内,因此在最近的一段时间,阿里云弹性计算团队又扩充了更多的操作系统方面的诊断能力,并将原有的“实例启动异常”功能升级为“实例状态为已停止,无法正常启动”功能,扩展了更多的能力,同时推出“实例状态为运行中,操作系统启动异常”功能,两者相辅相成,共同为实例启动问题进行全面诊断。
使用方式
针对不同状态的实例,我们推出了两种诊断工具,他们的诊断能力有很多不同之处,对于问题的覆盖度形成了互补。
1、针对停止运行的实例
如下图所示,进入阿里云ECS控制台,在功能列表中选择“自助问题排查”,然后选择实例问题排查 > 实例无法连接或启动异常 > 实例状态为已停止,无法正常启动诊断项,然后选择一个需要诊断的停止状态的实例,选择一个诊断时间段,对该ECS实例进行诊断排查。诊断主要诊断实例操作系统和云系统来进行,诊断时间段主要用来选择诊断特定时间范围内云系统的问题,而操作系统问题则是诊断当前时刻的操作系统,与选择的时间段无关。诊断的实例操作系统版本需满足诊断系统支持的版本范围。
需要注意的是,因为实例排查会对实例的操作系统进行诊断,需要对操作系统挂载修复盘(PE盘),在诊断或修复实例之后,需要用户手动将修复盘卸载掉,诊断报告的结果页或实例列表页会提供一键卸载的方法,否则实例会一直以修复模式启动,无法进入用户的操作系统里。
2、针对运行中的实例
如下图所示,进入阿里云ECS控制台,在功能列表中选择“自助问题排查”,然后选择实例问题排查 > 实例无法连接或启动异常 > 实例状态为运行中,操作系统启动异常诊断项,然后选择一个需要诊断的运行中状态的实例,对该ECS实例进行诊断排查。诊断主要针对实例操作系统进行诊断,可以诊断主流版本的Linux和windows操作系统。
我们建议用户在停止状态的实例诊断完成之后,若没有诊断出问题,可以卸载修复盘后,重新启动实例,让实例处于运行中,再次发起对于运行中状态实例的诊断。如果最开始使用的是对运行中状态实例的诊断,没有诊断出问题,则可以将实例以普通模式停机,并发起停止状态实例的诊断。这样两种诊断能力结合,可以最大程度的帮助用户发现问题。
诊断报告
1、针对停止运行的实例
经过几分钟的等待后,即可看到实例的诊断结果报告。
和上一篇文章介绍的类似,如下图所示,报告主要分为3部分:
第一部分是修复盘说明、临时挂载的修复盘对应的root用户以及密码信息。用户可以用该用户和密码信息通过VNC登录挂载了修复盘的ECS实例进行修复。在修复完成后需要手动卸载修复盘。
第二部分是报告的核心内容展示部分,主要是展示诊断出的问题、问题详情解读以及给出解决办法。点击解决方法链接,按照文档说明操作即可修复问题,如果还有问题也可以继续发起人工工单寻求技术支持。以图中例子来看,该实例操作系统的fstab文件第12行出现了格式错误,导致操作系统在启动中无法识别该挂载设备,进而导致启动失败。点击参考链接,即可看到修复方法,按照步骤进行修复后即可去尝试再次启动实例。
第三部分是整体诊断的指标概览。诊断会对云系统问题和实例操作系统问题进行诊断,对于出现问题的诊断项,报告会进行标红。
如果没有发现问题,建议重新启动实例,当实例处于运行中的状态时,发起“实例状态为运行中,操作系统启动异常”的诊断,以便排查其他可能存在的问题。
2、针对运行中的实例
经过几分钟的等待后,即可看到实例的诊断结果报告。
如下图所示,报告主要分为2部分:
第一部分是报告的核心内容展示部分,主要是展示诊断出的问题描述、对应的错误码,以及对应的修复方案链接。点击文档链接,根据错误码即可在文档中找到对应的修复方案。如果还有问题也可以继续发起人工工单寻求技术支持。以图中例子来看,该实例操作系统的Grub引导文件出现了问题,导致实例启动失败。点击参考链接,根据错误码“1662001143”即可找到修复方法,按照步骤进行修复后即可尝试再次启动实例。
第二部分是整体诊断的指标概览。目前主要是针对实例操作系统的截屏诊断。
如果没有发现问题,建议以普通模式停止实例,当实例处于已停止的状态时,发起“实例状态为已停止,无法正常启动”的诊断,以便排查其他可能存在的问题。
第二版诊断系统的诊断项介绍
1、针对停止运行的实例
本次诊断服务新增支持以下的诊断项:
- 实例Linux操作系统
- 缺失系统启动release文件
- 缺失系统启动需要的内核文件
- GRUB配置中内核参数root=配置错误
- 实例在/etc/fstab文件中配置的设备文件系统与设备实际的文件系统不一致
- 实例存在相同UUID的文件系统
- /etc/fstab 中配置了同一个文件系统挂载到不同挂载点
- /etc/fstab 中配置了多个文件系统挂载到同一个挂载点
- 磁盘文件系统未启用project quota特性
- 实例的/etc/fstab文件中配置的某个设备不存在
- 实例中有文件系统的数据布局被破坏
- Linux实例中关键的系统用户不存在
- 系统关键文件属性错误
- SELinux 开启且规则配置不当
2、针对运行中的实例
诊断服务覆盖了以下的诊断项:
- 实例Linux操作系统
- 系统GRUB引导失败
- GRUB 配置文件root UUID 不正确
- GRUB文件配置缺失
- 内核运行崩溃
- fstab 内配置的挂载点不存在
- 文件系统fsck异常
- 系统关键文件缺失
- 实例Windows操作系统
- 引导扇区丢失或者破坏或者驱动文件丢失或者损坏
- BCD配置文件丢失或者损坏
- Bootmgr丢失或者破坏
- Sysprep 未完成
- 驱动出现问题
- 系统文件损坏或丢失
- BCD 损坏
- 用户注册表损坏
- 系统注册表丢失或者破坏
- 磁盘问题
- 操作系统文件丢失或者破坏
- 非正常关机导致问题
每类诊断能力后续都还有其他的诊断项会陆续发布。如果您有比较急迫的其他诊断需求,也可以联系我们。
工作原理
针对停止状态实例的诊断原理可参见第一篇文章的介绍。
针对运行中的实例的诊断原理如下图所示,用户可以发起诊断,诊断系统收到请求后会对实例操作系统进行截图,在拿到截图结果后对图片进行分析,根据分析得到的文本等信息在诊断系统中进行进一步的结果分析处理,完成场景分类和诊断项诊断等工作,最终得到诊断结果,将诊断报告返回给用户。
已开放地域
目前实例启动异常诊断的能力已经通过ECS控制台在阿里云全球所有地域向所有用户开放。