Filesystems

在 RedHat Linux 上調整 LVM 大小後縮小分區

  • February 5, 2021

我在物理硬體上有一台物理 Redhat RHEL 6.10 機器,我試圖為 vmware 虛擬化。我們使用 dd 進行備份以進行虛擬化。現在的問題是,這個虛擬機仍然佔用了完整的 146GB-SAS-Disk 的數據空間(原始),但實際數據只佔用了 27GB 的磁碟空間。

我使用命令 resize2fs 和 lvreduce 調整了分區 /dev/mapper/vg_sb00681-lv_root 和 /dev/mapper/vg_sb00681-lv_home 的邏輯卷(如下所述:https ://www.linuxtechi.com/reduce-size-lvm- partition/ ) 的 root-Parition 到 20GB 和 home-Partition 到 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 將物理範圍移動到物理卷的末尾。它為我提供了物理卷之間的可用磁碟空間,我無法將可用空間打包到最後。我不知道接下來的步驟是什麼,以及是否可以減少 VM 上的分區以節省磁碟空間。

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

有人對我有任何想法或提示嗎?

您需要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。

引用自:https://unix.stackexchange.com/questions/632566