Partition

如何減少 LVM 中的捲組大小?

  • December 26, 2020
[root@localhost ~] vgdisplay
 --- Volume group ---
 VG Name               vg_root
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  7
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                3
 Open LV               0
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               297,59 GiB
 PE Size               4,00 MiB
 Total PE              76182
 Alloc PE / Size       59392 / 232,00 GiB
 Free  PE / Size       16790 / 65,59 GiB
 VG UUID               XXXXXXXXXX

光伏:

[root@localhost ~] pvdisplay

 --- Physical volume ---
 PV Name               /dev/mapper/udisks-luks-uuid-ASDFASDF
 VG Name               vg_root
 PV Size               297,59 GiB / not usable 2,00 MiB
 Allocatable           yes 
 PE Size               4,00 MiB
 Total PE              76182
 Free PE               16790
 Allocated PE          59392
 PV UUID               YYYYYYYYYYY

所以我有一個 65 GB 可用空間的 VG。但是當我想將此卷組縮小約 50 GB 時:

pvresize -tv --setphysicalvolumesize 247G /dev/mapper/udisks-luks-uuid-ASDFASDF
 Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
   Using physical volume(s) on command line
   Test mode: Skipping archiving of volume group.
   /dev/mapper/udisks-luks-uuid-ASDFASDF: Pretending size is 517996544 not 624087040 sectors.
   Resizing volume "/dev/mapper/udisks-luks-uuid-ASDFASDF" to 624087040 sectors.
   Resizing physical volume /dev/mapper/udisks-luks-uuid-ASDFASDF from 0 to 63231 extents.
 /dev/mapper/udisks-luks-uuid-ASDFASDF: cannot resize to 63231 extents as later ones are allocated.
 0 physical volume(s) resized / 1 physical volume(s) not resized
   Test mode: Wiping internal cache
   Wiping internal VG cache

所以錯誤資訊是:

cannot resize to 63231 extents as later ones are allocated.

**問:**如何對 vg_root 進行碎片整理,以便刪除不需要的部分?

ps:我已經發現我只需要調整PV的大小來調整VG的大小,或者有沒有更好的命令來調整VG的大小(例如:如果我在一個PV上有幾個VG該怎麼辦?… )?

您可以使用pvmove將這些範圍移動到設備或其他設備的開頭:

sudo pvmove --alloc anywhere /dev/device:60000-76182

然後pvmove選擇將範圍移動到的位置,或者您可以指定將它們移動到的位置。

查看pvs -v --segments /dev/device目前分配的範圍。

以下是調整 LVM 或 LVM2 分區大小所需的步驟:

sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root

sudo pvresize --setphysicalvolumesize {any size here} /dev/sda5

最後一個命令 ,pvresize可能會產生錯誤

/dev/sda5: cannot resize to xxxxx extents as later ones are allocated.

您必須重新排列 LVM 末尾的未分配空間。這意味著在 root 和 swap_1 分區之後。可以用這個命令查看目前空間的排列

pvs -v --segments /dev/sda5

pvs將顯示這樣的輸出

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii 0 free
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy jjj swap 0 linear /dev/sda5:yyyy-end

現在用於pvmove去除外部碎片:

sudo pvmove --alloc anywhere /dev/sda5:yyyy-end

現在讓我們看看移動交換卷是否成功。

pvs -v --segments /dev/sda5

應該顯示新的捲順序:

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii swap 0 linear /dev/sda5:xxx+1-yyyy
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy+1 end 0 free

之後,使用 GParted 並將 LVM 調整為最大使用區域。其餘的將在未分配的空間中。

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