使用 Azure Linux 自动修复 (ALAR) 修复 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 文件中不需要启动系统的任何行。 首先,创建原始文件的副本以供参考。 操作系统启动时,管理员可以编辑 fstab 以更正之前不允许重新启动系统的任何错误。

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

内核

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

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

Initrd

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

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

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

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

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

解压缩失败

serialconsole

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

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

grubfix

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

efix

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

auditd

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

如何使用 ALAR

ALAR 脚本使用修复扩展 run 命令及其 --run-id 选项。 自动恢复linux-alar2选项的--run-id值为 。 若要使用 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 反馈社区提交产品反馈。