使用 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_vmbus
、 hv_netvsc
和 hv_storvsc
添加到映像。
与 Initrd 相关的启动问题可能显示为以下记录的症状。
在这两种情况下,在记录错误条目之前,都会记录以下信息。
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,请执行以下步骤:
创建救援 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
在救援 VM 上使用 ALAR 操作之一运行脚本:
az vm repair run --verbose -g RG-NAME -n VM-NAME --run-id linux-alar2 --parameters ACTION --run-on-repair
交换 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
:要运行的脚本化任务,例如initrd
或fstab
。注意
可以传递单个或多个恢复操作。 对于多个操作,请使用不带空格的逗号来描述它们,例如
fstab,initrd
。
限制
不支持经典 VM。
后续步骤
如果遇到 bug 或想要请求对 ALAR 工具进行增强,请在 GitHub 上发布评论。
还可以在 GitHub 上找到有关 ALAR 工具的最新信息。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈