为何我的 Linux 实例在我将其类型更改为基于 Nitro 的实例类型后未启动?

2 分钟阅读
0

我将我的 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例更改为基于 Nitro的实例类型,但现在它无法启动。

简短描述

以下是 Linux 实例在您更改为基于 Nitro 的类型后可能无法启动的一些常见原因:

  • 实例的弹性网络适配器(ENA)enaSupport 属性已被禁用。
  • 实例上未安装 ENA 模块。
  • NVMe 模块未安装在实例上,或者,如果已安装,则未在实例的 initramfs 映像中加载 NVMe 模块。
  • 您正在尝试在启动时使用设备名称将文件系统挂载到“/etc/fstab”文件中。Amazon Elastic Block Store(Amazon EBS)卷会作为 NVMe 设备向这些实例类型公开,并且设备名称会更改。为了避免这种情况,请使用 UUID/Label 挂载文件系统。有关更多信息,请参阅 Linux 实例上的 Amazon EBS 和 NVMe

要解决这些问题,请确认 ENA 已启用,并且您的 Linux 实例符合基于 Nitro 的实例模块和文件系统挂载要求。

您也可以运行 AWSSupport-MigrateXenToNitroLinux Systems Manager Automation 运行手册。本运行手册无需手动配置即可迁移 Amazon EC2 Linux Xen。有关更多信息,请参阅 AWSSupport-MigrateXenToNitroLinux

解决方法

确保 ENA 已启用

1.    要确认 ENA 已启用,请参阅测试增强联网是否已启用,然后按照**实例属性(enaSupport)**下的说明进行操作。

2.    如果 ENA 未启用,请运行 modify-instance-attribute 操作。有关更多信息,请参阅在 Amazon Linux AMI 上启用增强联网功能

运行 NitroInstanceChecks 脚本

NitroInstanceChecks 脚本会检查您的实例,并提供以下要求的通过/失败状态:

  • 验证您的实例上是否安装了 NVMe 模块。如果已安装该模块,脚本会验证该模块是否已加载到 initramfs 镜像中。
  • 验证您的实例上是否安装了 ENA 模块。
  • 分析 /etc/fstab 并查找使用设备名称挂载的块设备。

以下操作系统版本支持此脚本:

  • Red Hat 衍生品: Red Hat Linux、Red Hat Enterprise Linux、CentOS
  • Amazon Linux、Amazon Linux 2 和 Amazon Linux 2023
  • Debian 衍生品: Debian、Ubuntu

注意: 有关 Red Hat ENA 驱动程序的更多信息,请参阅如何在运行 Red Hat 6/7 的 Amazon EC2 实例上安装并激活最新的 ENA 驱动程序,以便获得增强型网络支持?

要运行 NitroInstanceChecks 脚本,请执行以下操作:

1.    在进行任何更改之前,请先拍摄卷快照创建实例的亚马逊机器映像(AMI),以便进行备份。

2.    将您的实例类型更改为其原始类型。

3.    将脚本从 GitHub 下载到您的实例,并使其可运行:

# chmod +x nitro_check_script.sh

4.    以根用户或 sudo 的身份运行脚本:

# sudo ./nitro_check_script.sh

5.    在提示符下,键入 yn(或 No): 键入 y 让脚本重新生成和修改 /etc/fstab 文件,然后将每个分区的设备名称替换为其 UUID。原始 fstab 文件保存为 /etc/fstab.backup.$(date +%F-%H:%M:%S)。例如,/etc/fstab.backup.2019-09-01-22:06:05。键入 nNo 可在输出中打印正确的 /etc/fstab 文件,但不能将其替换。

成功的输出如下所示:

------------------------------------------------
OK  NVMe Module is installed and available on your instance
OK  ENA Module is installed and available on your instance
OK  fstab file looks fine and does not contain any device names.
------------------------------------------------

6.    满足所有要求后,将实例更改为基于 Nitro 的实例类型。

AWS 官方
AWS 官方已更新 1 年前