在 RedHat Linux 上调整 LVM 大小后缩小分区

在 RedHat Linux 上调整 LVM 大小后缩小分区

我在物理硬件上有一台物理 Redhat RHEL 6.10 机器,我尝试将其虚拟化为 vmware。我们使用 dd 进行备份以进行虚拟化。现在的问题是,该虚拟机仍然占用完整的 146GB SAS 磁盘数据空间(原始),但实际数据仅占用 27GB 磁盘空间。

我使用命令 resize2fs 和 lvreduce 调整了分区 /dev/mapper/vg_sb00681-lv_root 和 /dev/mapper/vg_sb00681-lv_home 的逻辑卷大小(如下所述:https://www.linuxtechi.com/reduce-size-lvm-partition/)根分区为 20GB,主分区为 5GB。如您所见,分区缩小了。还是没有问题。

Filesystem                      Size    Used    Avail   Use%    Mounted on
/dev/mapper/vg_sb00681-lv_root  20G     9.8G    8.9G    53%     /
tmpfs                           931M    0       931M    0%      /dev/shm
/dev/sda1                       477M    105M    347M    24%     /boot
/dev/mapper/vg_sb00681-lv_home  4.8G    1.5G    3.2G    32%     home

现在,使用 GParted 我无法释放 LVM 分区上的可用空间。

在此输入图像描述

如果我尝试缩小/移动分区,则会以 GParted 结束并出现错误。错误信息:

shrink file system
    lvm pvresize -v --yes --setphysicalvolumesize 34433024K '/dev/sda2'
        0 physical volume(s) resized or updated / 1 physical volume(s) not resized
        
        Archiving volume group "vg_sb00681" metadata (seqno 32).
        WARNING: /dev/sda2: Pretending size is 68866048 not 285650944 sectors.
        Resizing volume "/dev/sda2" to 68866048 sectors.
        Resizing physical volume /dev/sda2 from 34869 to 8406 extents.
        /dev/sda2: cannot resize to 8406 extents as later ones are allocated.

所以我尝试使用 pvmove 将物理范围移动到物理卷的末尾。它为我提供了物理卷之间的可用磁盘空间,但我无法将可用空间打包到最后。我不知道下一步是什么,也不知道是否可以减少虚拟机上的分区以节省磁盘空间。

ubuntu@ubuntu:-$ sudo pvs -v --segments /dev/sda2
PV          VG          Fmt     Attr    PSize   PFree   Start       SSize   LV          Stat    Type    PE Ranges
/dev/sda2   vg_sb00681  lvm2    a--     <136.21g 103.37g    0       2006    lv_swap     0       linear  /dev/sda2:0-2005
/dev/sda2   vg_sb00681  lvm2    a--     <136.21g 103.37g    2006    16812               0       free
/dev/sda2   vg_sb00681  lvm2    a--     <136.21g 103.37g    18818   5120    lv_root     0       linear  /dev/sda2:18818-23937
/dev/sda2   vg_sb00681  lvm2    a--     <136.21g 103.37g    23938   1280    lv_home     0       linear  /dev/sda2:23938-25217
/dev/sda2   vg_sb00681  lvm2    a--     <136.21g 103.37g    25218   9651                0       free

有人对我有任何想法或提示吗?

答案1

您需要pvmove移动范围。由于源和目标位于同一磁盘上,因此您需要以下--alloc anywhere选项:

pvmove --alloc anywhere /dev/sda2:18818-23937 /dev/sda2:2006-7125  # lv_root
pvmove --alloc anywhere /dev/sda2:23938-25217 /dev/sda2:7126-8405  # lv_home

您可以在 LV 挂载和使用时执行此操作,但请尽量避免在系统磁盘 I/O 负载较重时执行此操作。

在这些命令之后,第一个空闲物理范围应该是编号 8406,从该物理范围到 PV 末尾的所有内容都应该是空闲的,因此现在可以缩小 PV。

相关内容