我一直在通过减少 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==81947
lv_mysql
lv_root
lv_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 --segments
。pvmove
使用不同的 LV 和新的可用空间起始范围重复。
就我个人而言,我更喜欢将数据 VG 与操作系统 VG 分开。但这是您的存储,您可以随意布局。