linux打开LVM控制台,使用 chroot(其中使用 LVM (逻辑卷管理器) 恢复 Linux VM - Azure VM - Virtual Machines | Microsoft Docs...

当无法访问 Azure 串行控制台且磁盘布局使用 LVM 或逻辑卷管理器 (Linux VM 疑难解答)

11/24/2019

本文内容

此疑难解答指南对于 Linux VM 未启动、无法启动 ssh 以及使用 LVM (Logical Volume Manager) 配置的方案十分受益。

拍摄故障 VM 的快照

拍摄受影响虚拟机的快照。

然后,快照将附加到一个 启动的 VM。 请按照 此处有关如何 拍摄快照 的说明操作。

创建一个管理虚拟机

通常建议使用相同或类似操作系统版本的虚拟机。 使用受影响的 VM 的同 一区域和资源组

连接到虚拟机

使用 ssh 连接到 虚拟机。 提升特权并成为超级用户使用

sudo su -

附加磁盘

将磁盘附加到 从之前拍摄 快照创建的虚拟机。

Azure 门户 ->选择 虚拟机 -> 磁盘

bdd746c37d5fa0b4f38f07d982981369.png

填充字段。 为新磁盘分配名称,选择与快照、受影响的 VM 和安装虚拟机相同的资源组。

源 类型为****快照。

Source 快照 是以前创建的 快照 的名称。

f62a0647674be52b8f74238ed362f66c.png

为附加磁盘创建装入点。

mkdir /rescue

运行 fdisk -l 命令以验证快照磁盘已连接,并列出所有可用的设备和分区

fdisk -l

在大多数情况下,附加快照磁盘将视为显示两个分区 /dev/sdc1 和 /dev/sdc2 的 /dev/sdc

fd114551627b2d4ededad8a5534dab1c.png

* 指示启动分区,两个分区均要装入。

运行命令 lsblk 以查看受影响 VM 的 LVM

lsblk

28e6c5ce9f63ea36488f4599e10d5ad9.png

验证是否显示来自受影响 VM 的 LVM。

如果没有,请使用以下命令启用它们,然后重新运行 lsblk。

请确保附加磁盘中的 LVM 可见,然后再继续。

vgscan --mknodes

vgchange -ay

lvscan

mount –a

lsblk

找到装载逻辑卷的路径,该逻辑卷包含 / (根) 分区。 它具有配置文件,如 /etc/default/grub

本示例中,从上一 个 lsblk 命令 rootvg-rootlv 获得的输出是要装载的正确根 LV, 可用于下一个命令。

下一个命令的输出将显示为根 LV 装载的路径

pvdisplay -m | grep -i rootlv

3fa2a646a7877eaa721d6ff2b97ffc58.png

继续将此设备装载到目录 /更新

mount /dev/rootvg/rootlv /rescue

装载在 /一次启动/启动上设置了 启动 标志的分区

mount /dev/sdc1 /rescue/boot

使用 lsblk 命令验证已附加磁盘的文件系统现已正确装入

23944723d2c6d13d5849985e4337736a.png

或 df -Th 命令

7d36657b9c658968aec74086b6b75d51.png

获取 chroot 访问权限

获取 chroot 访问权限,这将使您能够执行各种修复,每个 Linux 分发都存在细微的变体。

cd /rescue

mount -t proc proc proc

mount -t sysfs sys sys/

mount -o bind /dev dev/

mount -o bind /dev/pts dev/pts/

chroot /rescue

如果遇到错误,例如:

chroot:无法运行命令"/bin/bash":无此类文件或目录

尝试装载 usr 逻辑卷

mount /dev/mapper/rootvg-usrlv /rescue/usr

提示

在 chroot 环境中执行命令时,请注意,这些命令针对附加的操作系统磁盘而不是 本地虚拟机运行 。

命令可用于安装、删除和更新软件。 对 VM 进行故障排除以修复错误。

执行 lsblk 命令,此时 /时/或 /时为 /时/boot 为 /boot

bff8a1281f2cd4e4662ad75cdee54a4d.png

执行修复

示例 1 - 将 VM 配置为从不同的内核启动

一种常见方案是强制 VM 从以前的内核启动,因为当前安装的内核可能已损坏或升级未正确完成。

cd /boot/grub2

grep -i linux grub.cfg

grub2-editenv list

grub2-set-default "CentOS Linux (3.10.0-1062.1.1.el7.x86_64) 7 (Core)"

grub2-editenv list

grub2-mkconfig -o /boot/grub2/grub.cfg

walkthrough

the grep command lists the kernels that grub.cfg is aware of.

f8edaca27819ae17afb4932ff01e7b6f.png

grub2-editenv 列表 显示在下次启动内核默认值时将加载

c6133fae7aef2c27e2317f18cadf3b14.png

grub2-set-default 用于更改为其他内核

b6734b97d3949b2a84368f24a2035336.png

grub2-editenv 列表显示哪个内核将在下次启动新内核

32fdb6d2402beee21d4296099a560ec6.png

grub2-mkconfig 使用所需的

733b070b14ab4e62fef5049bcb9951cd.png

示例 2 - 升级包

失败的内核升级会导致虚拟机不可启动。

装载所有逻辑卷以允许删除或重新安装程序包

运行 lvs 命令来验证哪些 LV 可供装载,每个 VM(已迁移或来自其他云提供商)的配置将有所不同。

退出 chroot 环境,装载所需的 LV

8658d176b15d7ad573f4661f89749e10.png

现在通过运行 再次访问 chroot 环境

chroot /rescue

所有 LV 都应作为已装载的分区可见

e599d006596a5b186345f2760b4426a5.png

查询已安装 的内核

9c8f77ff50bb495075003fdbedc39940.png

如果需要,请删除或升级 内核

2aa10d390baf18407814a5f61e4433ab.png

示例 3 - 启用串行控制台

如果无法访问 Azure 串行控制台,请验证 Linux VM 的 GRUB 配置参数并更正这些参数。 可在此文档 找到详细信息

示例 4 - 使用有问题的 LVM 交换卷加载内核

VM 可能无法完全启动并进入 dracut 提示符。

可以从 Azure 串行控制台找到故障的更多详细信息,也可以导航到 Azure 门户 ->启动诊断 ->串行日志

可能出现错误,类似于此错误:

[ 188.000765] dracut-initqueue[324]: Warning: /dev/VG/SwapVol does not exist

Starting Dracut Emergency Shell...

Warning: /dev/VG/SwapVol does not exist

此示例中配置 grub.cfg 以加载名称为 rd.lvm.lv=VG/SwapVol 的 LV,并且 VM 无法找到它。 此行显示如何加载引用 LV SwapVol 的内核

[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1062.4.1.el7.x86_64 root=/dev/mapper/VG-OSVol ro console=tty0 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0 biosdevname=0 crashkernel=256M rd.lvm.lv=VG/OSVol rd.lvm.lv=VG/SwapVol nodmraid rhgb quiet

[ 0.000000] e820: BIOS-provided physical RAM map:

从 /etc/default/grub 配置中删除有问题的 LV 并重新生成 grub2.cfg

退出 chroot 并交换操作系统磁盘

修复问题后,继续卸载磁盘,然后从允许其与受影响的 VM 操作系统磁盘进行交换的故障 VM 分离磁盘。

exit

cd /

umount /rescue/proc/

umount /rescue/sys/

umount /rescue/dev/pts

umount /rescue/dev/

umount /rescue/boot

umount /rescue

从虚拟机分离磁盘并执行磁盘交换。

从门户磁盘中选择 VM, 然后选择 分离

b627d99e7d0dfa1cfd1761b55ce2a439.png

保存更改 保存

e7f327798687d8f49d208efb5af7d94d.png

磁盘现在将变为可用状态,允许其与受影响的 VM 的原始操作系统磁盘进行交换。

在 Azure 门户中导航到出现故障的 VM,然后选择 磁盘 -> 交换操作系统

12a27b55b2de9b2379f10b414073fe30.png

完成" 选择磁盘 "是上一步中刚刚分离的快照磁盘的字段。 还需要受影响虚拟机的 VM 名称,然后选择"确定 "

21a529c9ea428bb309df4c40ae2b18e0.png

如果 VM 正在运行,则磁盘交换将关闭它,在磁盘交换操作完成后重新启动 VM。

后续步骤

详细了解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值