Linux LVM:将可用空间从卷组移动到另一个卷组

Linux LVM:将可用空间从卷组移动到另一个卷组

我刚刚读过“如何在 Linux 中将空间从一个卷组重新分配到另一个卷组?”如何在 Linux 中将空间从一个卷组重新分配到另一个卷组? 但我还是很困惑。

我继承了一台 Linux NAS 的管理,它由一个 16 磁盘超微机箱、一个 3ware 9650 RAID 卡和 Centos 5 组成。3ware 主板创建了三个 2.73 TB 的 raid 单元;启用了自动分割至 1.5TB 的功能,因此 Centos 可以看到六个物理卷。

这 6 个 PV 被安排在 2 个卷组中,其中一个卷组 (volgroup1) 有 2.15TB 的可用空间。我需要将这 2.15TB 的可用空间移动到另一个卷组 (volgroup2),然后我需要将这 2.15TB 分配给逻辑卷“mmedia0”上的 ext3 分区,而不会中断任何其他 LV/文件系统。

相关 LVM 命令的输出如下。

提前感谢 Guido


[root@lt-nas1 ~]# pvscan
  PV /dev/sdd1   VG volgroup2   lvm2 [1.50 TB / 0    free]
  PV /dev/sdf1   VG volgroup2   lvm2 [1.50 TB / 0    free]
  PV /dev/sdg1   VG volgroup2   lvm2 [1.23 TB / 0    free]
  PV /dev/sdb1   VG volgroup1   lvm2 [1.50 TB / 1.00 TB free]
  PV /dev/sdc1   VG volgroup1   lvm2 [1.22 TB / 24.00 GB free]
  PV /dev/sde1   VG volgroup1   lvm2 [1.23 TB / 1.12 TB free]
  Total: 6 [8.18 TB] / in use: 6 [8.18 TB] / in no VG: 0 [0   ]

[root@lt-nas1 ~]# vgs
  VG        #PV #LV #SN Attr   VSize VFree
  volgroup1   3   5   0 wz--n- 3.95T 2.15T
  volgroup2   3   3   0 wz--n- 4.23T    0

[root@lt-nas1 ~]# lvs
  LV               VG        Attr   LSize    Origin Snap%  Move Log Copy%  Convert
  cli-bak          volgroup1 -wi-ao  515.88G
  fatt-dig         volgroup1 -wi-ao   10.00G
  fil-ut           volgroup1 -wi-ao  220.00G
  homes            volgroup1 -wi-ao  100.00G
  serv-bak         volgroup1 -wi-ao 1000.00G
  esxp-bak         volgroup2 -wi-ao    3.73T
  lt-services      volgroup2 -wi-ao   10.00G
  mmedia0          volgroup2 -wi-ao  501.97G


[root@lt-nas1 ~]# pvdisplay -m
  --- Physical volume ---
  PV Name               /dev/sdd1
  VG Name               volgroup2
  PV Size               1.50 TB / not usable 31.88 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              49151
  Free PE               0
  Allocated PE          49151
  PV UUID               dj86xG-bVvy-e2KS-dxCb-oDTB-vqfB-oIFEFn

  --- Physical Segments ---
  Physical extent 0 to 32767:
    Logical volume      /dev/volgroup2/esxp-bak
    Logical extents     89404 to 122171
  Physical extent 32768 to 33087:
    Logical volume      /dev/volgroup2/lt-services
    Logical extents     0 to 319
  Physical extent 33088 to 49150:
    Logical volume      /dev/volgroup2/mmedia0
    Logical extents     0 to 16062

  --- Physical volume ---
  PV Name               /dev/sdf1
  VG Name               volgroup2
  PV Size               1.50 TB / not usable 29.98 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              49151
  Free PE               0
  Allocated PE          49151
  PV UUID               VzrYLh-qzGP-JlfN-WtUn-39Li-mq4Z-M4AlkY

  --- Physical Segments ---
  Physical extent 0 to 49150:
    Logical volume      /dev/volgroup2/esxp-bak
    Logical extents     0 to 49150

  --- Physical volume ---
  PV Name               /dev/sdg1
  VG Name               volgroup2
  PV Size               1.23 TB / not usable 27.98 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              40253
  Free PE               0
  Allocated PE          40253
  PV UUID               w2AczV-NUC1-K6xj-Qom6-NsNb-0mXk-o9a63M

  --- Physical Segments ---
  Physical extent 0 to 40252:
    Logical volume      /dev/volgroup2/esxp-bak
    Logical extents     49151 to 89403

  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               volgroup1
  PV Size               1.50 TB / not usable 31.88 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              49151
  Free PE               32832
  Allocated PE          16319
  PV UUID               Kilk0G-0qxl-ft2w-8iU7-abaa-u1n2-d9EHiO

  --- Physical Segments ---
  Physical extent 0 to 32767:
    FREE
  Physical extent 32768 to 39167:
    Logical volume      /dev/volgroup1/fil-ut
    Logical extents     0 to 6399
  Physical extent 39168 to 39231:
    FREE
  Physical extent 39232 to 39871:
    Logical volume      /dev/volgroup1/fil-ut
    Logical extents     6400 to 7039
  Physical extent 39872 to 49150:
    Logical volume      /dev/volgroup1/cli-bak
    Logical extents     0 to 9278

  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               volgroup1
  PV Size               1.22 TB / not usable 16.80 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              39997
  Free PE               768
  Allocated PE          39229
  PV UUID               EAtHL7-wraU-DdRP-d9Fq-xdrU-Wyf0-8PlCqj

  --- Physical Segments ---
  Physical extent 0 to 31999:
    Logical volume      /dev/volgroup1/serv-bak
    Logical extents     0 to 31999
  Physical extent 32000 to 32767:
    FREE
  Physical extent 32768 to 39996:
    Logical volume      /dev/volgroup1/cli-bak
    Logical extents     9279 to 16507

  --- Physical volume ---
  PV Name               /dev/sde1
  VG Name               volgroup1
  PV Size               1.23 TB / not usable 14.18 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              40253
  Free PE               36733
  Allocated PE          3520
  PV UUID               I1RUAu-P8Sw-waPF-b8u1-0szV-lR9D-hY1DvA

  --- Physical Segments ---
  Physical extent 0 to 32767:
    FREE
  Physical extent 32768 to 33087:
    Logical volume      /dev/volgroup1/fatt-dig
    Logical extents     0 to 319
  Physical extent 33088 to 33887:
    FREE
  Physical extent 33888 to 37087:
    Logical volume      /dev/volgroup1/homes
    Logical extents     0 to 3199
  Physical extent 37088 to 40252:
    FREE

答案1

由于您只能将整个 PV 从一个 VG 移动到另一个 VG,因此无法移动全部从一个 VG 到另一个 VG 释放空间。但您可以部分地实现这一点:

首先,将其中一个 PV 上的所有数据移动到另一个 PV 上:

pvmove -v /dev/sdb1

这将开始将数据从 sdb1 移至其他 PV。-v 选项还将确保您看到一些进度信息。移动完成后,您可以将其从卷组中删除:

vgreduce -a

这将报告类似以下内容的内容removing /dev/sdb1 from volgroup1(抱歉,已经有一段时间了,我没有机器可以测试)。然后您可以将其添加到另一个 VG:

vgextend volgroup2 /dev/sdb1

此后,volgroup2应该将 sdb1 上的空间添加到其中。

您可能能够使用 sde1 重复此操作;取决于volgroup1第一次移动后剩余的可用空间量(我太懒了,不想进行必要的计算 ;-)。我还建议将所有数据移动到单个卷组中;但是,这样做需要您在 volgroup2 中创建一个新的 LV,在其上创建一个文件系统,挂载它,使用 rsync 或类似方法移动日期,然后销毁旧日期。显然,这是一个更危险的操作。

相关内容