使用 Azure Linux 自动修复 (ALAR) 修复 Linux VM

适用于:✔️ Linux VM

下次必须在 Azure Linux 虚拟机(VM)上运行修复时,可以通过将 Azure Linux 自动修复(ALAR)脚本投入使用来自动执行作业。 不再需要手动运行作业。 这些脚本简化了恢复过程,使甚至没有经验的用户能够轻松恢复其 Linux VM。

ALAR 使用 Azure 虚拟机修复命令修复 Linux VM 中所述的 VM 修复扩展。

ALAR 涵盖以下修复方案:

  • 缺少磁盘格式错误的 /etc/fstab 语法错误
  • 损坏的 initrd 或缺少 /boot/grub/grub.cfg 中的 initrd 行
  • 上次安装的内核不可启动
  • 串行控制台和 GRUB 串行配置不正确或缺失
  • GRUB/EFI 安装或配置损坏

ALAR 操作

fstab

此操作将去除 /etc/fstab 文件中不需要启动系统的任何行。 首先,对原始文件的副本进行引用。 OS 启动时,管理员可以编辑 fstab 以更正以前不允许重新启动系统的任何错误。

有关格式不正确的 /etc/fstab 文件的问题的详细信息,请参阅 排查 Linux VM 启动问题,因为 fstab 错误

内核

此操作将更改默认内核。 该脚本将损坏的内核替换为以前安装的版本。

有关可能在串行控制台上记录与内核相关的启动事件的消息的详细信息,请参阅 如何从与内核相关的启动问题恢复 Azure Linux 虚拟机。

initrd

此操作可用于修复已损坏或错误创建的 initrd 或 initramfs。

若要正确创建 initrd 或 initramfs,请添加模块hv_vmbushv_netvschv_storvsc映像。

与 Initrd 相关的启动问题可能显示为以下记录的症状。

未同步 VFS找不到工作初始化

在这两种情况下,在记录错误条目之前记录以下信息。

解压缩失败

serialconsole

此操作更正 Linux 内核或 GRUB 的错误或格式不正确的串行控制台配置。 建议在以下情况下运行此操作:

  • VM 启动时未显示 GRUB 菜单。
  • 不会将任何操作系统相关信息写入串行控制台。

grubfix

此操作可用于重新安装 GRUB 并重新生成 grub.cfg 文件。

efifix

此操作可用于重新安装从 GEN2 VM 启动所需的软件。 还会重新生成 grub.cfg 文件。

auditd

如果 VM 由于审核守护程序配置而立即在启动时关闭,请使用此操作。 此操作通过将为任何action参数SYSLOG配置的值更改为HALT不强制系统关闭来修改审核守护程序配置(在 /etc/audit/auditd.conf 文件中)。 在逻辑卷管理器(LVM)环境中,如果包含审核日志的逻辑卷已满且卷组中有可用空间,则逻辑卷也将扩展为当前大小的 10%。 但是,如果不使用 LVM 环境或没有可用空间,则只会更改配置文件。

重要

此操作将通过更改审核守护程序配置来更改 VM 的安全状况,以便可以解决 VM 关闭问题。 VM 运行并可访问后,需要将审核守护程序配置还原为原始状态。 为此,ALAR 操作在 /etc/audit 中创建 auditd.conf 文件的备份

如何使用 ALAR

ALAR 脚本使用修复扩展 run 命令及其 --run-id 选项。 自动恢复选项的值 --run-idlinux-alar2。 若要使用 ALAR 脚本修复 Linux VM,请执行以下步骤:

  1. 创建救援 VM:

    az vm repair create --verbose -g RG-NAME -n VM-NAME --repair-username RESCUE-UID --repair-password RESCUE-PASS --copy-disk-name DISK-COPY
    
  2. 在救援 VM 上使用 ALAR 操作之一运行脚本:

    az vm repair run --verbose -g RG-NAME -n VM-NAME --run-id linux-alar2 --parameters ACTION --run-on-repair
    
  3. 交换 OS 磁盘并删除临时资源:

    az vm repair restore --verbose -g RG-NAME -n VM-NAME 
    

    注意

    不会删除原始磁盘和新磁盘。

下面是上述命令中的参数的说明:

  • RG-NAME:包含中断的 VM 的资源组的名称。

  • VM-NAME:断开的 VM 的名称。

  • RESCUE-UID:在修复 VM 上创建的用于登录的用户。 它相当于在Azure 门户中新 VM 上创建的用户。

  • RESCUE-PASS:括在单引号中的密码 RESCUE-UID。 例如:'password!234'

  • DISK-COPY:将从断开的 VM 创建的 OS 磁盘副本的名称。

  • ACTION:要运行的脚本任务,例如 initrdfstab

    注意

    可以传递单个或多个恢复操作。 对于多个操作,请使用不带空格的逗号来描述它们,例如 fstab,initrd

限制

不支持经典 VM。

后续步骤

如果遇到 bug 或想要请求对 ALAR 工具的增强功能,请在 GitHub发布评论。

还可以在 GitHub查找有关 ALAR 工具的最新信息。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区