在我嘗試啟動 EC2 Linux 執行個體時,為什麼它會進入緊急模式?
當我啟動 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 (核心危急) 錯誤。若要對此問題進行疑難排解,請完成下列步驟:
- 將核心還原為先前的穩定核心。
- 重新啟動執行個體。
- 修正損壞核心錯誤訊息中列出的問題。
相依性失敗錯誤
當 /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 自動化,或使用救援執行個體手動編輯該檔案。
**重要:**在停止和啟動執行個體之前,請執行下列動作:
- 建立 EBS 磁碟區的備份。
**注意:**如果您的執行個體是執行個體儲存體備份,或具有包含資料的執行個體儲存體磁碟區,則當您停止執行個體時,Amazon EC2 會刪除該資料。 - 將執行個體關閉行為設定為停止,以確保執行個體在您停止時不會終止。
**注意:**當您停止和啟動執行個體時,該執行個體的公有 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 工具。
使用救援執行個體手動編輯檔案
請完成下列步驟:
-
開啟 Amazon EC2 console (Amazon EC2 主控台)。
-
選擇 Instances (執行個體),然後選擇處於緊急模式的執行個體。
-
從已停止的執行個體分離 /dev/xvda 或 /dev/sda1 Amazon EBS 根磁碟區。
-
在與已停止執行個體相同的可用區域中啟動救援執行個體。
-
將根磁碟區作為次要裝置附加至救援執行個體。
**注意:**附加次要磁碟區時,您可以使用不同的裝置名稱。 -
若要為附加到救援執行個體的新磁碟區建立掛載點目錄,請執行下列命令:
sudo mkdir /mnt/rescue
**注意:**將 /mnt/rescue 替換為您的掛載點目錄。
-
若要識別區塊型儲存設備名稱和分割區,請執行下列命令:
[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
-
若要將磁碟區掛載到掛載點目錄,請執行下列命令:
sudo mount -o nouuid /dev/xvdf1 /mnt/rescue
**注意:**將 /dev/xvdf1 替換為您的裝置名稱。 若要開啟 /etc/fstab 檔案,請執行下列命令:
sudo vi /mnt/rescue/etc/fstab
- 編輯 /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
- 儲存檔案,然後執行以下命令卸載該磁碟區:
sudo umount /mnt/rescue
- 從救援執行個體中分離磁碟區。
- 將磁碟區附加到原始執行個體。
- 若要確認是否可以啟動該執行個體,請啟動執行個體。
- 語言
- 中文 (繁體)

相關內容
- 已提問 7 個月前
- 已提問 9 個月前
- 已提問 2 年前
- 已提問 2 年前
- AWS 官方已更新 2 個月前