我使用以下命令将 LVM 缩小了一半:
e2fsck -f /dev/VG/LV
resize2fs /dev/VG/LV 5G
lvreduce -L 5G /dev/VG/LV
检查物理卷会产生以下结果:
--- Physical volume ---
PV Name /dev/sdb
VG Name VG
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 1279
Allocated PE 1280
如何通过 fdisk 将空闲 PE(从哪个柱面开始)分配为标准分区?
如果您已将 PV 创建为分区,则必须先使用 缩小 PV ,然后使用或
pvresize --setphysicalvolumesize 5124M /dev/sdb
等工具调整分区表中的分区大小。fdisk
parted
但是在您的情况下,您无法在那里创建新分区,因为 PV 包含整个驱动器,因此您无法在不破坏 PV 的情况下安全地创建新的分区表。好吧,实际上你可以通过直接操作分区表,但这很危险,并且会回来并进一步咬你。
相反,最安全的方法是在不同的驱动器上创建另一个 PV,将其添加到卷组,将 LV 移动到另一个 PV,从 VG 中删除第一个 PV,从 /dev/sdb 中删除第一个 PV,创建分区在 /dev/sdb 上,在其中一个分区上创建一个 PV,将 PV 添加到 VG,将 LV 移动到这个现在正确的 PV,最后从 VG 中删除临时 PV。
像这样:(请注意,您必须确保使用适用于您的特定配置的设备名称,而不仅仅是复制和粘贴。
/dev/sdc
这只是一个示例,对您来说可能会有所不同):在尝试此操作之前进行备份。
如果按照此处所示使用,给定的
pv*
和命令是安全的。vg*
如果不满足先决条件,他们将拒绝工作,或者会询问您是否仍要这样做(n
在这种情况下回答)。特别是,当您将 LV 缩小到恰好 5 GiB 时,您将需要一个略大于 5120 MiB 的分区(我建议添加 4 MiB,因此 5124 MiB),以便 PV 能够容纳元数据,它会抱怨如果不是这样的话。但是,
fdisk
这并不安全,即使它会覆盖您的宝贵数据,它也会很乐意继续执行您的指令,因此请格外小心。