恢复嵌套 PV

恢复嵌套 PV

在我的 Proxmox 6.4 主机上,我有一个 250GB 大小的 LVM Thin 池。我在其上创建了一个 Ubuntu VM(它也使用 LVM 作为根分区),但不小心超额订阅了它,因此 VM 内的 PV 设置为 500GB。

一段时间内一切都运行良好,直到我超出了隐藏的 250GB 限制,虚拟机因 I/O 错误而崩溃并拒绝启动。所以现在我正试图恢复磁盘。磁盘的分区表似乎完好无损:

$ fdisk -l /dev/vm-disks/vm-101-disk-0
Disk /dev/vm-disks/vm-101-disk-0: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 30874BBC-0B29-4083-B5BF-E973C665D87F

Device                          Start        End    Sectors  Size Type
/dev/vm-disks/vm-101-disk-0p1    2048       4095       2048    1M BIOS boot
/dev/vm-disks/vm-101-disk-0p2    4096    2101247    2097152    1G Linux filesystem
/dev/vm-disks/vm-101-disk-0p3 2101248 1048573951 1046472704  499G Linux filesystem

我已经跑了

$ kpartx -a /dev/vm-disks/vm-101-disk-0

/dev/mapper为 中的 3 个分区创建条目vm-101-disk-0,这样就可以了。如果我运行:

$ file -sL /dev/mapper/vm--disks-vm--101--disk--0p3
/dev/mapper/vm--disks-vm--101--disk--0p3: LVM2 PV (Linux Logical Volume Manager), UUID: fdOzWR-sPcy-hyYo-Lj2H-YEnZ-wK3c-J6biES, size: 535794024448

然后我可以在磁盘的第 3 个分区内看到该 PV。但是我如何将其安装到主机中的某个位置以开始恢复数据?显然,pvscan主机系统看不到它,因为它在另一个 LV 内。我在这里有任何恢复选项吗,或者 VM 认为它有 500GB 但实际上这并不意味着我已经将其损坏到无法修复?

答案1

当精简池中的空间耗尽时,虚拟机刚刚出现写入 I/O 错误。对于虚拟机来说,这看起来像是硬盘意外拒绝了所有写入。因此,如果虚拟机是裸机,则第一个操作是找到新硬盘并将这个坏的硬盘克隆到其中。修复硬件后,您可以修复逻辑结构。

如果是虚拟机,硬件没有损坏,可以通过恢复精简卷操作来“修复”硬盘。只需扩大精简池,lvextend在精简池 LV 上添加一些空间即可。

完成后,从某些恢复(虚拟)媒体启动虚拟机并执行标准文件系统恢复。请记住,这不会有太大困难;现代文件系统通常设计为可以承受这种故障。


监控精简 LVM。虽然数据空间耗尽并不是一个大问题,但元数据疲劳可能会产生更大的影响。不要让这种情况发生。

相关内容