我有一台运行 Ubuntu 18.04 的 VMware ESXi 虚拟机,其中配置了 LVM 分区。我试图扩展挂载为 / 的逻辑卷之一,但错误地使用 cfdisk 删除了 LVM 分区(该分区的格式为 ext4)。以下是我所做的事情,这导致了问题:
- 增加了 vSphere ESXi 中的虚拟机磁盘大小
- 对 SCSI 设备执行重新扫描,使其无需重新启动即可识别磁盘大小调整
- 使用 fdisk -l 确认新磁盘
- 愚蠢地使用 cfdisk 删除 LVM 分区(sda2)并使用新大小重新创建它(实际上不记得我是否将新分区类型更改为 LVM)
- 尝试使用 pvresize /dev/sda2 增加 PV 大小,尝试运行 partprobe 来检查为什么 PV 没有调整大小,我收到一条消息,表明该分区正在被系统使用
- 执行了重启,但操作系统无法启动,因为它无法挂载分区。这就是问题的根源。我尝试了以下方法:
- 我确实使用 GParted 可启动磁盘启动了系统,使用具有相同 UUID 和 vgcfgrestore 的 pvcreate 恢复了 LVM 分区(我使用 testdisk 工具恢复了旧的 lvm 备份),但没有成功,因为包含根分区的卷不可挂载(未知文件系统)
- 我尝试运行 testdisk 来恢复重要的目录和文件,但一些恢复的文件(我确实检查了一些文本文件,例如配置和 php 文件)的内容是混乱的。
答案1
解决方案很简单,但我花了一些时间才弄清楚:
- 运行 testdisk /dev/sda (整个磁盘)
- 快速搜索并找到两个分区(一个 500 MB ext2 /boot 分区和一个 60 GB LVM2 分区)
- 将找到的分区表写入磁盘
- 执行了 pvscan、vgscan 和 vgchange -ay(遇到一个错误,表明 VG 大小大于 PV,因此 lvs 显示带有暂停标志的根 lv)。
- 使用 cfdisk 扩展 /dev/sda2(LVM 分区)以使用磁盘上剩余的可用空间
- 再次执行 vgchange -ay one,然后系统就能正常重启了。