如何更改卷组 PE 大小

如何更改卷组 PE 大小

我正在尝试增加其中一个卷组的 PE 大小。

我错误地将其设置为 4M 来启动,但它应该是 32M。

当我尝试改变尺寸时

vgchange -s 32M the_vol
New extent size is not a perfect fit

vgdisplay 说:

vgdisplay
--- Volume group ---
VG Name               the_vol
System ID             
Format                lvm2
Metadata Areas        1
Metadata Sequence No  173
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                43
Open LV               41
Max PV                0
Cur PV                1
Act PV                1
VG Size               864.25 GiB
PE Size               4.00 MiB
Total PE              221247
Alloc PE / Size       103680 / 405.00 GiB
Free  PE / Size       117567 / 459.25 GiB
VG UUID               uh25Y8-TOWR-pqBj-NyPV-ca6t-ec1k-jlqm4g

我可以做些什么来将此更改变为 32 而无需重新创建/删除数据?

或者使其接近 32。

谢谢

答案1

您可以使用pvmove来移动物理卷上分配的物理范围。您应该让任何逻辑卷在范围边界上开始和结束(使用 增长lvresize)。底层物理卷大小也应该是新范围大小的精确倍数(使用 修复pvresize)。

正如在超级用户答案对于相关问题,您可以使用类似这样的内容:

pvmove --alloc anywhere /dev/sdc1:103680-221247 /dev/sdc1:0-103679

将扩展区移动103680-2212470-103679物理卷上/dev/sdc1。您可能需要分步移动段。使用pvdisplay --maps /dev/sdc1显示物理卷上分配了哪些扩展区/dev/sdc1

请注意,范围大小不应影响 I/O 性能(在 LVM2 上),只有 LVM 工具本身的性能和 LVM 组件的最大大小会受到影响。

答案2

这是可能的,但很困难。如果可以选择,重新创建 VG 是一个更好的选择。
但是,这对我来说不是一个选择,所以这里是我如何将 PE 大小从 4MB 更改为 32MB 的。

  • 首先,将 PV 缩小到可以被目标 PE 大小整除的大小,即:
    pvresize /dev/sdb --setphysicalvolumesize 3778436m
  • 接下来,使用 将所有 LV 的大小调整为可被预期的 PE 大小整除的大小lvresize,即: lvresize /dev/libvirtstorage/debian-8.7.1-amd64-netinst.iso --size 256
  • 接下来是确保组成每个图像的各个部分与新 PE 对齐。这一点不太确定,因为您基本上必须对 VG 进行“碎片整理”。
    我使用了“lvm2defrag“工具(您不需要在机器本身上运行它,您可以在任何安装了 PHP 的机器上运行它,它只会生成所需的命令)
  • 此后,如果您的总卷大小、LV 片段大小和可用空间都可以被目标 PE 大小整除,那么您应该能够更改 PE 大小:
    vgchange -s 32m the_vol

整个过程无需停机,整个 VG 在此期间继续运行。还有一个需要注意的陷阱:注意和
之间的区别,LVM 命令将小写字母解释为 MiB,将大写字母 M 解释为 MB。 32m32Mm

答案3

仅当无需移动现有物理扩展即可完成更改时,您才可以更改卷组的物理扩展大小。否则,您会收到上面发布的错误。

唯一的其他选择是重新创建具有正确大小的卷组。

引用手册页:

一旦设置了此值,除非重新创建卷组(这将涉及备份和恢复任何逻辑卷上的数据),否则很难更改它。但是,如果不需要移动任何区段来应用新值,则可以使用 vgchange -s 进行更改。

相关内容