在虚拟机中,将包含 LV 和文件系统的 VG 放在磁盘上并使用所有空间后,错误地发现磁盘大小太大。由于 VMware(他们告诉我)无法减小磁盘大小,因此删除了现有磁盘,并创建了一个具有正确大小的新磁盘。
vgcfgrestore
现在我想知道我是否至少可以使用 LVM 的备份数据( )来恢复 PV 和 VG(也许还有 LV)的 UUID?
我第一次尝试恢复 VG 时,结果发现 PV 未找到,第一次尝试恢复 PV(使用pvcreate --restorefile ... -u <UUID>
)时,结果出现错误,即新磁盘太小(“物理范围超出设备 /dev/sdd 的末尾“)。
我正在使用 SLES15 SP4。
为了完整性:恢复后,我会将 LV、VG 和 PV“调整”为适当的大小。
答案1
这似乎无法做到,很可能是因为没有vgresize
命令(在 LV 的大小减少后也可以使用该命令来减少可用的范围数量):
我可以通过指定先前的 ID 来“恢复”PV:
# pvcreate -u LAWXom-t6Mq-jcqA-3Ejx-cY7D-7T1M-ae8y2E /dev/sdd
Physical volume "/dev/sdd" successfully created.
然后我可以恢复 VG 配置(这是否应该在不给出警告的情况下成功,或者在不调整(至少建议这样做)大小的情况下成功,这还有待商榷):
# vgcfgrestore my-vg
Restored volume group my-vg.
此时,VG(和 LV)具有备份完成后的磁盘大小。
# vgs my-vg
WARNING: Device /dev/sdd has size of 167772160 sectors which is smaller than corresponding PV size of 314572800 sectors. Was device resized?
WARNING: One or more devices used as PVs in VG my-vg have changed sizes.
VG #PV #LV #SN Attr VSize Vfree
my-vg 1 1 0 wz--n- 149.94g 0
因此在那时(因为我找不到类似的工具vgresize
)我不得不删除并重新创建 VG 和 LV:
# vgremove my-vg
# vgcreate -s 64M my-vg /dev/sdd
# #...lvcreate..., mkfs...