减少 lvmgroup - 无法调整为 xxxx 区,因为后面的区已被分配

减少 lvmgroup - 无法调整为 xxxx 区,因为后面的区已被分配

我一直在通过减少 lvmgroup 来减少 Centos 6.10 映像的大小。我现在可以运行以下命令:

pvresize -tv --setphysicalvolumesize  1600G /dev/md125p2

它给了我以下错误信息:

 /dev/md125p2: cannot resize to 409599 extents as later ones are allocated.

我试图了解如何构建 pvmove 命令来消除错误,但我不太明白这个概念。

以下是该命令的输出 pvs -v --segments /dev/md125p

  PV           VG            Fmt  Attr PSize PFree   Start  SSize  LV       Start Type   PE Ranges                 
  /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g      0 384000 lv_mysql     0 linear /dev/md125p2:0-383999     
  /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 384000  81947              0 free                             
  /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 465947  12800 lv_root      0 linear /dev/md125p2:465947-478746
  /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 478747   1998 lv_swap      0 linear /dev/md125p2:478747-480744
  /dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 480745   7500 lv_home      0 linear /dev/md125p2:480745-488244

我知道移动命令必须是这样的:

pvmove --alloc anywhere /dev/md125p2 vg_centos6svr:yyyy-end

我只是不清楚如何计算 yyyy-end 部分。我猜这意味着移动从 384000 开始的 81947 个(块?),但“yyyy”和“end”是什么?

答案1

所以,我看到的是一切都已开启/dev/md125p2,我们想要减少这个 PV 的大小。

输出显示,在 之后和 之前,pvs -v --segments /dev/md125p有非常大的可用空间 ( ) 。这足以容纳和SSize==81947lv_mysqllv_rootlv_root全部在物理布局中位于其后的 LV。

因此,我建议的第一组数字是:

***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499

也就是说,将整个 移动lv_home到 之后直接开始的空闲空间lv_mysql

然后重新运行pvs -v --segments /dev/md125p以查看修改后的数字,并将下一个块移动到剩余的可用空间中。

这将有效地对你的 PV 进行碎片整理。

现在,pvmove可能方式/dev/<dev>:<Start>-<End>比我正在使用的选项更多(也许指定 PV 而不是范围?)但我所习惯的只是明确使用块,所以我的所有源和目标都是或的形式/dev/<dev>:<Start>+<SSize-1>

我怀疑您的问题主要是缺少“源”规范的范围。

我见过一些他们使用的例子-end——我不知道这是否是应该但它会引出一个问题:“什么?所以我避免使用它并使用明确的块号。你只需要注意语法+,并且需要比 SSize 小一。

额外的

好的,在源端,似乎您可以将其-name lv_home /dev/md125p2作为简写/dev/md125p2:480745-488244- 但还要注意,如果被分割成多个范围(是否意味着“所有片段?”),这将变得更加复杂lh_home- 我认为我仍然更喜欢数字方法。请注意,问题中的示例没有包括 LV 名称,所以我不确定pvmove您给出的内容能理解什么……

答案2

减少 PV 需要将范围移动到所需大小之前的可用空间。在您的案例中,范围低于 409599。

首先,测试备份恢复以确保必要时可以恢复数据。

lvremove您不需要的卷。

pvmove允许通过 LV 名称指定范围,并通过带有 + 符号的偏移量指定目标。提供目标时,必须是 PV,而不是 VG。

将一个 LV 移动到可用空间中的第一个范围。偏移量是要移动的段的大小。

pvmove --alloc anywhere  -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998

再次使用 获取新的段布局pvs -v --segmentspvmove使用不同的 LV 和新的可用空间起始范围重复。

就我个人而言,我更喜欢将数据 VG 与操作系统 VG 分开。但这是您的存储,您可以随意布局。

相关内容