跳至内容

Linux 实例在更改为基于 Nitro 的实例后为什么无法启动?

2 分钟阅读
0

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

简短描述

由于以下原因,Linux 实例在您更改为基于 Nitro 的实例后可能无法启动:

  • 您未在实例上激活增强联网的 enaSupport 属性。
  • 您未在实例上安装弹性网络适配器 (ENA) 驱动程序。
  • 您未在实例上安装 NVMe 驱动程序。或者,您未在实例的 initramfs 镜像中加载 NVMe 模块。
  • 在启动时,您在 /etc/fstab 文件中使用了设备名称而非唯一通用标识符 (UUID) 或标签来挂载文件系统。
    **注意:**对于基于 Nitro 的实例,Amazon Elastic Block Store (Amazon EBS) 卷显示为 NVMe 设备。这会更改设备名称。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

在迁移之前自动检查先决条件

要在将 Xen 实例迁移到 Nitro 时自动检查您的先决条件,请运行 AWSSupport-MigrateXenToNitroLinux AWS Systems Manager Automation 运行手册。

或者,在将实例类型更改为 Nitro 之前,运行 nitro_check_script.sh 脚本来检查先决条件。要访问该脚本,请参阅 GitHub 网站上的 nitro_check_script.sh。有关脚本检查内容的信息,请参阅 GitHub 网站上的 NitroInstanceChecks

要下载 nitro_check_script.sh 脚本,请运行以下命令:

sudo wget https://raw.githubusercontent.com/awslabs/aws-support-tools/refs/heads/master/EC2/NitroInstanceChecks/nitro_check_script.sh -O /tmp/nitro_check_script.sh

要向您的环境授予运行该脚本的权限,请运行以下命令:

sudo chmod +x /tmp/nitro_check_script.sh

要使用根权限运行该脚本,请运行以下命令:

sudo bash /tmp/nitro_check_script.sh

**注意:**必须以根用户身份或使用 sudo 运行该脚本。否则,您将收到“This script must be run as root”错误消息。

要手动检查先决条件,请执行以下操作。

确认您已激活增强联网并安装了 ENA 驱动程序

测试您是否在实例上激活了增强联网。如果您的实例没有 enaSupport 属性,请激活增强联网

要检查您是否安装了 ENA 驱动程序,请运行以下命令:

sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"

如果您未安装 ENA 驱动程序,请为您的 EC2 Windows 实例安装 ENA 驱动程序。要为 Linux 实例安装 ENA 驱动程序,请参阅 GitHub 网站上的 Linux kernel driver for Elastic Network Adapter (ENA) family(弹性网络适配器 (ENA) 系列的 Linux 内核驱动程序)

安装 NVMe 驱动程序

要访问 NVMe 卷,必须安装 NVMe 驱动程序

检查您是否在 /etc/fstab 文件中对挂载点使用了设备名称

要检查您是否使用了 UUID,请运行以下命令:

cat /etc/fstab |grep -iP 'uuid|dev/'

输出示例:

UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1

如果您未使用 UUID,请运行以下命令来检索设备名称的 UUID:

lsblk -f device_name |tail -n 1 |awk '{print $4}'

**注意:**请将 device_name 替换为您的设备名称。

输出示例:

90e29211-2de8-4967-b0fb-16f51a6e464c

在编辑 /etc/fstab 文件之前,最佳做法是运行以下命令以创建该文件的副本:

sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`

运行以下命令打开 /etc/fstab 文件:

cat /etc/fstab

然后,将设备名称替换为 UUID:

/dev/nvme0n1p1 / xfs defaults,noatime 1 1

**注意:**请将 /dev/nvme0n1p1 替换为 UUID。

要验证您是否正确更新了该文件,请重新运行 cat /etc/fstab 命令。输出示例:

UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults,noatime 1 1

确保将所有设备名称替换为 UUID。然后,停止实例将实例更改为基于 Nitro 的实例,然后启动该实例

AWS 官方已更新 6 个月前