共用方式為


使用 Azure Linux 自動修復 (ALAR) 來修正 Linux VM

適用於:✔️ Linux VM

下次您必須在 Azure Linux 虛擬機 (VM) 上執行修復時,您可以將 Azure Linux 自動修復 (ALAR) 腳本放入您的工作自動化。 您不再需要手動執行作業。 這些腳本會簡化復原程式,並讓甚至沒有經驗的用戶輕鬆地復原其Linux VM。

ALAR 會使用 Azure 虛擬機修復命令修復 Linux VM 中所述 的 VM 修復擴充功能

ALAR 涵蓋下列修復案例:

  • 無開機情境
    • 格式不正確的 /etc/fstab
      • 語法錯誤
      • 缺少磁碟
    • /boot/grub/grub.cfg 中的 initrd 損壞或 initrd 行遺失
    • 上次安裝的核心無法開機
    • GRUB/EFI 安裝或設定損毀
    • 磁碟空間/auditd 強制關機
  • 設定問題
    • 序列主控台和 GRUB 序列設定不正確或遺失
    • Sudo 配置錯誤

如何使用 ALAR

ALAR 腳本會使用 az vm repair 延伸模組、 run 命令及其 --run-id 選項。 自動復原--run-id的選項值為 linux-alar2 。 若要使用 ALAR 腳本修正 Linux VM,請遵循下列步驟:

注意

VM 參與者角色不提供足夠的許可權來執行這些腳本作業,因為它們需要讀取、寫入和刪除包含目標 VM 的資源群組中資源的許可權。 因此,需要在資源群組層級內擔任「參與者」或「擁有者」等角色。

  1. 建立救援 VM:

    az vm repair create --verbose --resource-group <RG-NAME> --name <VM-NAME>
    
    • 目前有三個參數會要求輸入值,如果指令行中未提供值。 將這些參數和值新增至命令,以進行非互動式執行
      • --repair-username <RESCUE-USERNAME>
      • --repair-password <RESCUE-PASS>
      • --associate-public-ip
    • 請參閱 az vm repair 檔,以取得可用來控制修復 VM 建立的更多選項
  2. 執行 linux-alar2 指令碼,並在救援虛擬機器上附帶執行一個或多個 ALAR 動作的參數:

    az vm repair run --verbose --resource-group <RG-NAME> --name <VM-NAME> --run-id linux-alar2 --parameters <action1,action2,...> --run-on-repair
    

    如需有效的動作名稱,請參閱下列內容。

  3. 將 OS 磁碟的複本交換回原始 VM,並刪除暫存資源:

    az vm repair restore --verbose --resource-group <RG-NAME> --name <VM-NAME> 
    

    注意

    在此階段期間 restore 不會刪除原始和新磁碟。

在所有範例命令中,顯示的參數如下:

  • RG-NAME:包含中斷 VM 的資源群組名稱。
  • VM-NAME:中斷的 VM 名稱。
  • RESCUE-USERNAME:在修復 VM 上建立以進行登入的使用者。 這相當於在 Azure 入口網站 中新 VM 上建立的使用者。
  • RESCUE-PASS:的密碼 RESCUE-USERNAME,以單引弧括住。 例如: 'password!234'
  • action1,action2等:一個或多個已定義的動作可套用至故障VM。 請參閱下列內容以及 ALAR GitHub ReadMe,以獲得動作的完整清單。 您可以傳遞一或多個連續執行的動作。 對於多個操作,請使用不帶空格的逗號來描述它們,例如 fstab,sudo

ALAR 動作

fstab

此動作會從 /etc/fstab 檔案中不需要開機系統的任何行移除。 首先,會建立源文件的複本以供參考。 操作系統啟動時,系統管理員可以編輯 fstab,以更正之前不允許重新啟動系統的任何錯誤。

如需格式不正確 /etc/fstab 檔案問題的詳細資訊,請參閱 針對Linux VM啟動問題進行疑難解答,因為 fstab 錯誤

efifix

此動作可用來重新安裝必要的軟體,以從 GEN2 VM 開機。 grub.cfg 檔案也會重新產生。

grubfix

此動作可用來重新安裝 GRUB 並重新產生 grub.cfg 檔案。

initrd

此動作可用來修正損毀或不正確建立的 initrd 或 initramfs。

若要正確建立 initrd 或 initramfs,請將模組 hv_vmbushv_netvschv_storvsc 新增至映像。

Initrd 相關的啟動問題可能會顯示為下列記錄的徵兆。

未同步處理 VFS 找不到工作 init

在這兩種情況下,會在記錄錯誤專案之前記錄下列資訊。

解壓縮失敗

核心

此操作通過將默認/損壞的核心替換為以前安裝的版本來更改默認內核。

如需可能針對核心相關啟動事件登入序列控制台之訊息的詳細資訊,請參閱 如何從核心相關的開機問題復原 Azure Linux 虛擬機。

serialconsole

此動作會更正 Linux 核心或 GRUB 不正確或格式錯誤的序列主控台設定。 建議您在下列情況下執行此動作:

  • VM 啟動時不會顯示任何 GRUB 功能表。
  • 沒有作業系統相關信息會寫入序列主控台。

sudo

sudo 動作會將 /etc/sudoers 檔案及 /etc/sudoers.d 中所有檔案的許可權重設為必要的 0440 模式,並檢查其他最佳作法。 執行基本檢查,以偵測並報告重複的使用者項目,若發現 /etc/sudoers.d/waagent 檔案與其他檔案衝突,將僅移動該檔案。

auditd

如果您的 VM 因為稽核精靈設定而立即關閉,請使用此動作。 此動作會將針對任何參數HALT設定的值變更為 ,以修改action稽核精靈組態(在 SYSLOG 檔案中),這樣不會強制系統關閉。 在邏輯磁碟區管理員 (LVM) 環境中,如果包含稽核記錄的邏輯磁碟區已滿,且磁碟區群組中有可用空間,則邏輯磁碟區可以擴充目前大小的 10%。 但是,如果您沒有使用 LVM 環境或沒有可用空間,則只有配置文件 auditd 會被更改。

重要

此動作會變更稽核常駐程式組態,以變更虛擬機器的安全性狀態,以便解決虛擬機器關機問題。 一旦 VM 運行並可訪問,您需要評估配置並可能將其恢復到原始狀態。 為此,ALAR 動作會在 /etc/audit 中建立 auditd.conf 檔案的備份

限制

不支援傳統 VM。

下一步

如果您遇到 Bug 或想要要求 ALAR 工具的增強功能,請在 GitHub張貼批注。

您也可以在 GitHub找到 ALAR 工具的最新資訊。

與我們連絡,以取得說明

如果您有疑問,可以詢問 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。

第三方聯繫人免責聲明

Microsoft 提供協力廠商連絡資訊,以協助您尋找有關此主題的其他資訊。 此連絡資訊可能會變更而不另行通知。 Microsoft 不保證協力廠商連絡資訊的準確性。