适用于:✔️ Linux VM
下次必须在 Azure Linux 虚拟机(VM)上运行修复时,可以通过将 Azure Linux 自动修复(ALAR)脚本投入使用来自动执行作业。 不再需要手动运行作业。 这些脚本简化了恢复过程,使甚至没有经验的用户能够轻松恢复其 Linux VM。
ALAR 使用文中描述的 Azure 虚拟机修复命令的 VM 修复扩展来修复 Linux VM。
ALAR 涵盖以下修复方案:
- 无法启动情境
- 格式不正确的 /etc/fstab
- 语法错误
- 缺少磁盘
- 损坏的 initrd 或在/boot/grub/grub.cfg中缺少 initrd 行
- 上次安装的内核不可启动
- GRUB/EFI 安装或配置损坏
- 磁盘空间不足/auditd 强制关闭
- 格式不正确的 /etc/fstab
- 配置问题
- 串行控制台和 GRUB 串行配置不正确或缺失
- Sudo 配置错误
如何使用 ALAR
ALAR 脚本使用 az vm repair 扩展、run 命令及其 --run-id 选项。 自动恢复选项的值 --run-id 为 linux-alar2。 若要使用 ALAR 脚本修复 Linux VM,请执行以下步骤:
注意
VM 参与者角色不提供足够的权限来运行这些脚本作,因为它们需要有权读取、写入和删除包含目标 VM 的资源组中的资源。 因此,需要资源组级别的参与者或所有者等角色。
创建救援 VM:
az vm repair create --verbose --resource-group <RG-NAME> --name <VM-NAME>- 如果命令行上未提供值,则当前有三个参数提示值。 将这些参数和值添加到非交互式执行的命令
--repair-username <RESCUE-USERNAME>--repair-password <RESCUE-PASS>--associate-public-ip
- 有关可用于控制修复 VM 创建的更多选项,请参阅 az vm 修复 文档
- 如果命令行上未提供值,则当前有三个参数提示值。 将这些参数和值添加到非交互式执行的命令
运行
linux-alar2脚本,和救援 VM 上的一个或多个 ALAR 操作的参数:az vm repair run --verbose --resource-group <RG-NAME> --name <VM-NAME> --run-id linux-alar2 --parameters <action1,action2,...> --run-on-repair有关有效操作名称,请参阅以下内容。
将 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 自述文件,请参阅以下内容。 可以提供一个或多个依次执行的操作。 对于多个操作,请使用不带空格的逗号来分隔它们,例如fstab,sudo。
ALAR 操作
fstab
此操作将去掉 /etc/fstab 文件中对系统启动无用的任何行。 首先,对原始文件的副本进行引用。 OS 启动时,管理员可以编辑 fstab 以更正以前不允许重新启动系统的任何错误。
有关格式不正确的 /etc/fstab 文件的问题的详细信息,请参阅 排查 Linux VM 启动问题,因为 fstab 错误。
efifix
此操作可用于重新安装从 GEN2 VM 启动所需的软件。 还会重新生成 grub.cfg 文件。
grubfix
此作可用于重新安装 GRUB 并重新生成 grub.cfg 文件。
initrd
此操作可用于修复已损坏或错误创建的 initrd 或 initramfs。
若要正确创建 initrd 或 initramfs,请添加模块hv_vmbushv_netvsc和hv_storvsc映像。
与 Initrd 相关的启动问题可能显示为以下记录的症状。
在这两种情况下,在记录错误条目之前记录以下信息。
内核
该操作通过用先前安装的版本替换原来的默认或损坏的内核来更改默认内核。
有关可能在串行控制台上记录与内核相关的启动事件的消息的详细信息,请参阅 如何从与内核相关的启动问题恢复 Azure Linux 虚拟机。
serialconsole
此操作更正 Linux 内核或 GRUB 的错误或格式不正确的串行控制台配置。 建议在以下情况下运行此操作:
- VM 启动时未显示 GRUB 菜单。
- 不会将任何操作系统相关信息写入串行控制台。
sudo
该操作将sudo文件/etc/sudoers和/etc/sudoers.d中的所有文件的权限重置为所需的0440模式,并核查其他最佳实践。 运行基本检查以检测和报告重复的用户条目,如果发现与其他文件冲突,则仅移动 /etc/sudoers.d/waagent 文件。
auditd
如果 VM 由于审核守护程序配置而立即在启动时关闭,请使用此操作。 此操作通过将任何参数的已配置值更改为来修改审核守护程序的配置(在HALT文件中),而这并不会强制系统关闭。 在逻辑卷管理器(LVM)环境中,如果包含审核日志的逻辑卷已满且卷组中有可用空间,则逻辑卷可以扩展为当前大小的 10%。 但是,如果您不使用 LVM 环境或没有可用空间,则只会更改 auditd 配置文件。
重要
此作通过更改审核守护程序配置来更改 VM 的安全状况,以便可以解决 VM 关闭问题。 VM 运行并可访问后,需要评估配置,并可能将其还原为原始状态。 为此,auditd.conf 文件的备份由 ALAR 操作在 /etc/audit 中创建。
限制
不支持经典 VM。
后续步骤
如果遇到 bug 或想要请求对 ALAR 工具的增强功能,请在 GitHub 上发布评论。
还可以在 GitHub 上查找有关 ALAR 工具的最新信息。
联系我们寻求帮助
如果有疑问,可以询问 Azure 社区支持。 还可以将产品反馈提交到 Azure 反馈社区。
第三方联系人免责声明
Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 该联系信息可能会在不通知的情况下更改。 Microsoft 不保证第三方联系信息的准确性。