共用方式為


針對 Linux VM 因為 fstab 錯誤導致的啟動問題進行疑難排解

適用於:✔️ Linux VM

注意事項

本文所參考的 CentOS 是一種 Linux 發行版,且將到達生命周期結束(EOL)。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

Linux 檔系統數據表 fstab 是一個組態表,其設計目的是在系統開機程式期間,以有序的方式設定偵測並掛接特定文件系統的規則。

本文討論錯誤 fstab 設定會導致開機問題並提供疑難解答指引的多個條件。

以下是一些常見的原因,可能會導致虛擬機 (VM) 開機問題,因為 fstab 設定錯誤:

  • 使用傳統的檔案系統名稱,而不是文件系統的通用唯一標識碼 (UUID)。
  • 使用不正確的 UUID。
  • 未連結裝置的專案存在於 fstab 組態內沒有 nofail 選項的未連結裝置。
  • fstab 組態中的項目不正確。

識別 fstab 問題

在 Azure 入口網站 的開機診斷刀鋒視窗中,檢查序列記錄檔中 VM 的目前開機狀態。 VM 將會處於緊急模式。 您會看到類似下列範例的記錄項目,導致緊急模式狀態:

[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.
[[1;33mDEPEND[0m] Dependency failed for /data.
[[1;33mDEPEND[0m] Dependency failed for Local File Systems.
…
Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode.
Give root password for maintenance
(or type Control-D to continue)

注意事項

/data 是使用的裝入點範例。 檔系統裝入點的相依性失敗會根據所使用的名稱而有所不同。

解決方案

有兩種方法可以解決此問題:

在線修復 VM

使用序列主控台

  1. 從 Azure 入口網站 連線到 VM 的序列主控台
  2. 需要手動存取單一使用者模式,才能重新設定 fstab。 這些步驟可能會因使用的LinuxOS類型及根帳戶的存取權而有所不同。 請遵循單一使用者模式檔,針對每個支援的Linux合作夥伴映像存取單一使用者模式。
Fstab 疑難解答步驟
  1. VM 開機進入單一使用者模式之後。 使用您慣用的文字編輯器開啟 fstab 檔案。

    vi /etc/fstab
    
  2. 檢閱 中 /etc/fstab所列的文件系統。 fstab 檔案中的每個行都會指出 VM 啟動時所掛接的文件系統。 如需 fstab 檔案語法的詳細資訊,請執行 man fstab 命令。 若要針對開機失敗進行疑難解答,請檢閱無法掛接之文件系統的專案。 最好檢閱每一行,以確保結構與內容都正確無誤。 要考慮正確管理 fstab 檔案的幾點如下:

    • 每一行上的欄位會以製表元或空格分隔。 空白行會遭到忽略。 具有數字元號 (#) 做為第一個字元的行是批注。 批注行可以保留在 fstab 檔案中,但不會進行處理。 建議您將不確定的 fstab 行批注,而不是移除這幾行。

    • 使用文件系統磁碟分區的 UUID,在 Azure VM 上掛接數據磁碟。 若要判斷文件系統的 UUID,請執行 blkid 命令。 如需語法的詳細資訊,請執行 man blkid 命令。 fstab 檔案中 UUID 專案的範例:

      UUID=<UUID number here>  /data      xfs    defaults,nofail 0  0
      
    • nofail使用文件系統專案 (資料磁碟) 中的 選項,即使在對應專案的數據分割發生錯誤之後,也能夠繼續啟動。 此選項 nofail 有助於確保即使文件系統已損毀,或 VM 不存在於啟動時也一樣啟動。

  3. 儲存 fstab 檔案的變更。

  4. 在變更 fstab 項目之後,請使用 mount -a 作為最佳做法。 這會重新執行 fstab 組態,並通知使用者任何現有的語法或項目錯誤。

  5. 驗證語法和項目之後,請使用下列命令重新啟動 VM:

    reboot -f
    
  6. 如果專案批註或修正成功,系統應該會在入口網站中觸達 bash 提示字元。 檢查您是否可以連線到 VM。

    注意事項

    您也可以使用 ctrl+x 也會重新啟動 VM 的命令。

離線修復 VM

如果 VM 序列控制台存取無法使用,替代解決方案是離線修復 VM。 有兩種方式可以採取脫機方法:

使用 Azure Linux 自動修復 (ALAR)

Azure Linux 自動修復 (ALAR) 腳本是使用 Azure Linux 自動修復 (ALAR) 來修正 Linux VM 中所述 VM 修復延伸模組的一部分。 ALAR 涵蓋多個修復案例的自動化,包括 /etc/fstab 問題。

ALAR 腳本會使用修復延伸模組 repair-button ,藉由指定 --button-command fstab來修正 fstab 問題。 此參數會觸發自動復原。 實作下列步驟,透過離線 ALAR 方法將 fstab 錯誤自動化:

az extension add -n vm-repair
az extension update -n vm-repair
az vm repair repair-button --button-command 'fstab' --verbose --resource-group $RGNAME --name $VMNAME

注意事項

請據以取代資源組名 $RGTEST 和 VM 名稱 $VMNAME

  • 修復 VM 腳本會與 ALAR 腳本一起使用,暫時建立資源群組、修復 VM,以及受影響 VM OS 磁碟的複本。 它會備份源檔 /etc/fstab ,並藉由移除或批註化不需要開機系統的數據檔系統專案來修改它。
  • 成功啟動 OS 之後,請檢閱和編輯 /etc/fstab 檔案,以修正任何可能導致重新啟動錯誤的錯誤。
  • 最後, repair-button 腳本會自動刪除包含修復 VM 的資源群組。

使用手動方法

如果序列主控台和 ALAR 方法都不可能或失敗,則必須手動執行修復。 請遵循這裡的步驟,將 OS 磁碟手動連結至復原 VM,並將 OS 磁碟交換回原始 VM:

成功將OS磁碟連結至復原 VM 之後,請遵循詳細的 chroot 指示 ,將和 chroot 掛接至所連結 OS 磁碟的文件系統。 然後,實作 fstab 疑難解答步驟 ,對有問題的 OS 磁碟的 fstab 檔案進行適當的變更。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。