如何将 sda3 上的 LVM 移动/合并到 sda2?问题是 vg1-var 和 vg1-opt 驻留在两个 PV 上,因此 apvmove
不起作用。
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 37G 0 part
│ ├─vg1-root 253:0 0 5G 0 lvm /
│ ├─vg1-swap 253:1 0 4G 0 lvm [SWAP]
│ ├─vg1-usr 253:2 0 8G 0 lvm /usr
│ ├─vg1-home 253:4 0 2G 0 lvm /home
│ ├─vg1-var 253:5 0 6.7G 0 lvm /var
│ ├─vg1-tmp 253:6 0 10G 0 lvm /tmp
│ └─vg1-opt 253:7 0 5G 0 lvm /opt
└─sda3 8:3 0 42.7G 0 part
├─vg1-var 253:5 0 6.7G 0 lvm /var
└─vg1-opt 253:7 0 5G 0 lvm /opt
PV VG Fmt Attr PSize PFree
/dev/sda2 vg1 lvm2 a-- 37.00g 0
/dev/sda3 vg1 lvm2 a-- <42.70g 39.00g
答案1
最简单的方法是临时连接一个新驱动器并pvmove /dev/sda3
重新安装。这会让你成长/dev/sda2
并把一切都移回来。
如果这是不可能的,您将不得不重新整理您拥有的驱动器中的数据。由于对齐问题,相邻的 PV 通常无法直接合并,因此您仍然需要将所有内容移动两次。
你的/dev/sda3
容量为 42.7G,还有 39G 可用空间,所以使用了约 3.7G。因此,您应该能够缩小/dev/sda3
4G,以便/dev/sda4
在磁盘末尾创建新的 4G 大小:
pvresize /dev/sda3 --setphysicalvolumesize 37G
parted /dev/sda -- resizepart 3 -4G
parted /dev/sda -- mkpart primary -4G -1
将所有数据移动到新分区:
vgextend vg1 /dev/sda4
pvmove /dev/sda3
vgreduce vg1 /dev/sda3
删除现在空闲的/dev/sda3
并/dev/sda2
相应增长:
parted /dev/sda -- rm 3
parted /dev/sda -- resizepart 2 -4G
pvresize /dev/sda2
将所有内容从/dev/sda4
现在移动到足够大/dev/sda2
:
pvmove /dev/sda4
vgreduce vg1 /dev/sda4
此时,您的 VG 仅使用单个 PV,/dev/sda2
。
删除现在空闲的/dev/sda4
并再次增长/dev/sda2
:
parted /dev/sda -- rm 4
parted /dev/sda -- resizepart 2 -1
pvresize /dev/sda2
请注意,这些步骤非常粗糙,有时可能会失败,您必须进行相应的调整。特别是命令不应该盲目运行,始终验证, , , , , ...parted
发生了什么parted /dev/sda print free
vgs
lvs
pvs
lsblk
如果没有充分的理由来改变事情,我就会原样离开。真是麻烦大了,好处却少。拥有多个 PV 也有一些优点,例如额外的元数据副本。