跳至內容

為什麼我的 Amazon EC2 Linux 執行個體在變更為 Nitro 型執行個體後無法啟動?

2 分的閱讀內容
0

我將 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體變更為以 AWS Nitro System 為基礎的執行個體。但是,現在執行個體無法啟動。

簡短說明

當您將 EC2 Linux 執行個體變更為 Nitro 型執行個體 後,執行個體可能因以下原因而無法啟動:

  • 您未在執行個體上啟用 enaSupport 增強型網路屬性。
  • 您未在執行個體上安裝 Elastic Network Adapter (ENA) 驅動程式。
  • 您未在執行個體上安裝 NVMe 驅動程式。或者,您未在執行個體的 initramfs 映像中載入 NVMe 模組。
  • 您在啟動時,使用裝置名稱而非 UUID 來掛載 /etc/fstab 檔案中的檔案系統。<br id=hardline_break/> **注意:**對 Nitro 型執行個體而言,Amazon Elastic Block Store (Amazon EBS) 磁碟區會顯示為 NVMe 裝置。此組態會變更裝置名稱。

若要解決啟動問題,請將執行個體類型變更回 Xen 執行個體。然後,使用 AWSSupport-MigrateXenToNitroLinux 執行手冊來自動為遷移準備您的執行個體。或者,手動檢查並修正缺失的先決條件。最後,將執行個體類型變更為 Nitro 執行個體。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

將執行個體類型變更回 Xen

**重要:**若要變更執行個體類型,您必須先停止再啟動執行個體。

為停止和啟動設定您的執行個體

**注意:**當您停止並啟動執行個體時,執行個體的公共 IP 位址會變更。最佳實務是使用彈性 IP 位址將外部流量路由至您的執行個體,而非使用公共 IP 位址。如果您使用 Amazon Route 53,則在公共 IP 位址變更時,您可能需要更新 Route 53 DNS 記錄

在停止並啟動執行個體之前,請採取以下動作:

變更執行個體類型

將執行個體變更回 Xen 執行個體類型,以確保執行個體可以啟動。

自動為遷移準備您的執行個體

若要自動更新您的執行個體,使其符合遷移至 Nitro 的先決條件,請執行 AWSSupport-MigrateXenToNitroLinux 執行手冊。

在遷移前檢查先決條件

在將執行個體類型變更為 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 驅動程式

測試您是否在執行個體上啟用了增強型網路。如果未啟用增強型網路,請啟用增強型網路

若要檢查您是否已安裝 ENA 驅動程式,請執行以下命令:

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

如果您未安裝 ENA 驅動程式,請安裝最新的驅動程式。如需指示,請參閱 GitHub 網站上的彈性網路介面卡 (ENA) 系列的 Linux 核心驅動程式

安裝 NVMe 驅動程式

若要存取 NVMe 磁碟區,您必須安裝 NVMe 驅動程式

檢查您是否在 /etc/fstab 檔案中為掛載點使用裝置名稱

請完成以下步驟:

  1. 若要檢查您是否使用了 UUID,請執行以下命令:

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

    範例輸出:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    **注意:**範例輸出使用的是裝置名稱而非 UUID。

  2. 如果您未使用 UUID,請執行以下命令來擷取該裝置名稱的 UUID:

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

    **注意:**將 device_name 替換為您的裝置名稱。

  3. (選用) 最佳實務是在編輯 /etc/fstab 檔案之前,執行以下命令來製作該檔案的副本:

    sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`
  4. 執行以下命令以開啟 /etc/fstab 檔案:

    cat /etc/fstab
  5. 在檔案中,將裝置名稱替換為 UUID。<br id=hardline_break/> 檔案範例:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    **注意:**將 /dev/nvme0n1p1 替換為 UUID。請確保將 /etc/fstab 檔案中所有的裝置名稱都替換為 UUID。

  6. 若要確認您是否已正確更新檔案,請重新執行以下命令:

    cat /etc/fstab

    在輸出中,檢查 UUID 是否顯示該 UUID。<br id=hardline_break/> 範例輸出:

    UUID=123456-1234-1234-acbd-1234abc1234 / xfs defaults,noatime 1 1

將執行個體類型變更回 Nitro

將執行個體變更為 Nitro 型執行個體

**注意:**如果您升級至最新的 Nitro 執行個體並使用過時的核心或驅動程式,執行個體可能無法通過其狀態檢查。因此,您會遇到啟動失敗和「kernel panic」錯誤,或者您的執行個體變得無法連線。若要對此問題進行疑難排解,請參閱如何解決 EC2 執行個體中的「Kernel panic - not syncing」錯誤?

AWS 官方已更新 4 個月前