Skip to content

在我嘗試啟動 EC2 Linux 執行個體時,為什麼它會進入緊急模式?

2 分的閱讀內容
0

當我啟動 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體時,執行個體會進入緊急模式,而啟動程序會失敗。然後,執行個體變得無法存取。

簡短描述

執行個體可能會因下列原因而以緊急模式啟動:

  • 執行個體上的核心已損壞,導致出現核心危急錯誤。
  • 由於 /etc/fstab 檔案中的項目不正確,導致自動掛載失敗,進而引發 Dependency failed (相依性失敗) 錯誤。

若要確定錯誤類型,請檢查執行個體的主控台輸出

解決方法

核心危急錯誤

如果核心有問題,那麼您會收到類似於以下範例的錯誤訊息:

"Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)" (「核心危急 - 不同步:VFS:無法在未知區塊 (8,1) 上掛載根檔案系統」)

當 grub 組態或 initramfs 檔案損壞時,就會發生 Kernel panic (核心危急) 錯誤。若要對此問題進行疑難排解,請完成下列步驟:

  1. 將核心還原為先前的穩定核心
  2. 重新啟動執行個體
  3. 修正損壞核心錯誤訊息中列出的問題。

相依性失敗錯誤

/etc/fstab 檔案中的語法錯誤導致自動掛載失敗時,就會發生 Dependency failed (相依性失敗) 錯誤。當檔案中列出的 Amazon Elastic Block Store (Amazon EBS) 磁碟區與執行個體分離時,也會發生此錯誤。您會收到類似以下範例的錯誤訊息:

"[[1;33mDEPEND[0m] Dependency failed for /mnt.

[[1;33mDEPEND[0m] Dependency failed for Local File Systems.

[[1;33mDEPEND[0m]

Dependency failed for Migrate local... structure to the new structure.

[[1;33mDEPEND[0m] Dependency failed for Relabel all filesystems, if necessary.

[[1;33mDEPEND[0m] Dependency failed for Mark the need to relabel after reboot.

[[1;33mDEPEND[0m]

Dependency failed for File System Check on /dev/xvdf." (「[[;33mDEPEND[0m] /mnt 的相依性失敗。[[1;33mDEPEND[0m] 本機檔案系統的相依性失敗。[[1;33mDEPEND[0m] 將本機結構遷移到新結構的相依性失敗。[[1;33mDEPEND[0m] 如有需要,重新標記所有檔案系統的相依性失敗。[[1;33mDEPEND[0m] 重新啟動後標記需要重新標記的相依性失敗。[[1;33mDEPEND[0m] 對 /dev/xvdf 執行檔案系統檢查的相依性失敗。」)

在上述範例中,/mnt 掛載點在啟動過程中掛載失敗。若要確保啟動順序不會因為掛載失敗而進入緊急模式,請將以下組態新增至 /etc/fstab 檔案:

  • 次要分割區的 nofail 選項,例如 /mnt
    **注意:**nofail 選項可確保即使磁碟區或分割區掛載失敗,啟動順序也不會中斷。
  • 作為掛載點檔案中的最後一欄,0 表示關閉檔案系統檢查。

若要更新 /etc/fstab 檔案,請使用 EC2 序列主控台,執行 AWSSupport-ExecuteEC2Rescue 自動化,或使用救援執行個體手動編輯該檔案。

**重要:**在停止和啟動執行個體之前,請執行下列動作:

**注意:**當您停止和啟動執行個體時,該執行個體的公有 IP 位址也會變更。最佳做法是使用彈性 IP 位址而不是公用 IP 位址,將外部流量路由到執行個體。如需詳細資訊,請參閱停止並啟動 Amazon EC2 執行個體

使用 EC2 序列主控台
**重要:**使用 EC2 序列主控台時,無需停止並啟動執行個體。

如果您啟動了適用於 Linux 的 EC2 序列主控台,則可以使用它來對支援的 Nitro 型執行個體類型支援的裸機執行個體問題進行疑難排解。使用 EC2 序列主控台時,您不需要有效連線即可連線至執行個體。連線到 EC2 序列主控台,然後修改 /etc/fstab 檔案。

如果您之前沒有使用過 EC2 序列主控台,請確認您遵守先決條件。如果您的執行個體無法連線,且您尚未設定對序列主控台的存取權,那麼您將無法使用 EC2 序列主控台來修正 /etc/fstab 檔案。

執行 AWSSupport-ExecuteEC2Rescue 自動化文件

**先決條件:**確認您擁有使用 AWSSupport-ExecuteEC2Rescue 所需的 AWS Identity and Access Management (IAM) 權限

執行 AWSSupport-ExecuteEC2Rescue 自動化文件以自動修正啟動問題。如需詳細資訊,請參閱在無法存取的執行個體上執行 EC2Rescue 工具

使用救援執行個體手動編輯檔案

請完成下列步驟:

  1. 開啟 Amazon EC2 console (Amazon EC2 主控台)。

  2. 選擇 Instances (執行個體),然後選擇處於緊急模式的執行個體。

  3. 停止執行個體

  4. 從已停止的執行個體分離 /dev/xvda 或 /dev/sda1 Amazon EBS 根磁碟區

  5. 在與已停止執行個體相同的可用區域中啟動救援執行個體

  6. 將根磁碟區作為次要裝置附加至救援執行個體。
    **注意:**附加次要磁碟區時,您可以使用不同的裝置名稱。

  7. 使用 SSH 連線至您的救援執行個體

  8. 若要為附加到救援執行個體的新磁碟區建立掛載點目錄,請執行下列命令:

    sudo mkdir /mnt/rescue

    **注意:**將 /mnt/rescue 替換為您的掛載點目錄。

  9. 若要識別區塊型儲存設備名稱和分割區,請執行下列命令:

    [root ~]$ lsblk

    輸出範例:

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0    8G  0 disk
    └─xvda1 202:1    0    8G  0 part /
    xvdf    202:80   0  101G  0 disk
    └─xvdf1 202:81   0  101G  0 part
  10. 若要將磁碟區掛載到掛載點目錄,請執行下列命令:

sudo mount -o nouuid /dev/xvdf1 /mnt/rescue

**注意:**將 /dev/xvdf1 替換為您的裝置名稱。 若要開啟 /etc/fstab 檔案,請執行下列命令:

sudo vi /mnt/rescue/etc/fstab
  1. 編輯 /etc/fstab 中的項目。以下範例顯示了兩個使用 UUID 定義的 Amazon EBS 磁碟區。這兩個次要磁碟區都新增了 nofail 選項,並且每個項目的最後一欄為 0
$ cat /etc/fstab
UUID=e75a1891-3463-448b-8f59-5e3353af90ba  /  xfs  defaults,noatime  1  0
UUID=ce917c0c-9e37-4ae9-bb21-f6e5022d5381  /mnt  ext4  defaults,noatime,nofail  1  0  
  1. 儲存檔案,然後執行以下命令卸載該磁碟區:
sudo umount /mnt/rescue
  1. 從救援執行個體中分離磁碟區
  2. 將磁碟區附加到原始執行個體
  3. 若要確認是否可以啟動該執行個體,請啟動執行個體