Skip to content

為什麼我將 Linux 執行個體變更為 Nitro 型執行個體後無法啟動?

2 分的閱讀內容
0

我將 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體變更為 Nitro 型執行個體,現在它無法啟動。

簡短描述

由於以下原因,將 Linux 執行個體變更為 Nitro 型執行個體後,它可能無法啟動:

  • 您未在執行個體上啟動增強型網路 enaSupport 屬性。
  • 您未在執行個體上安裝彈性網路介面卡 (ENA) 驅動程式。
  • 您未在執行個體上安裝 NVMe 驅動程式。或者,您沒有在執行個體的 initramfs 映像檔中載入 NVMe 模組。
  • 您在啟動時,時於 /etc/fstab 檔案中使用裝置名稱來掛載檔案系統,而不是使用唯一的通用識別碼 (UUID) 或標籤。
    注意:Amazon Elastic Block Store (Amazon EBS) 磁碟區對於 Nitro 型執行個體顯示為 NVMe 裝置。這會改變裝置名稱。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (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 網站上的彈性網路介面卡 (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 官方已更新 1 個月前