将PV1的LVM移动到PV2

将PV1的LVM移动到PV2

如何将 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/sda34G,以便/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 freevgslvspvslsblk

如果没有充分的理由来改变事情,我就会原样离开。真是麻烦大了,好处却少。拥有多个 PV 也有一些优点,例如额外的元数据副本。

相关内容