在Ubuntu上如何重新調整LVM的大小

前言

在Ubuntu上,在安裝時我們會利用LVM,Logical Volume Manager進行設定,透過邏輯捲軸管理器能夠在硬碟管理系統與硬碟分割區上又建立一層邏輯層,以方便分割與系統管理硬碟系統。

在本文章則是介紹將既有的邏輯卷軸管理群組進行大小上的調整,這樣能夠將其他空間加入到同一個邏輯卷軸中。

介紹

邏輯捲軸管理器(英語:Logical Volume Manager,縮寫為LVM),又譯為邏輯卷宗管理器、邏輯磁區管理器、邏輯磁碟管理器,是Linux核心所提供的邏輯捲軸管理(Logical volume management)功能。它在硬碟的硬碟分割區之上,又建立一個邏輯層,以方便系統管理硬碟分割系統。

相關的示意圖可以透過下列的圖所示:

從上述的邏輯捲軸架構圖可以得知,最底層就是實體層,也就是硬碟的部分,而會將實體層進行大小的切割,接著在第二層建立卷軸群組,在卷軸群組上面再建立邏輯捲軸,因此看到的就是邏輯捲軸的路徑與相關的資訊,若在Ubuntu安裝的過程中,使用lvm2進行設定與安裝作業系統的話,則建立出來的邏輯捲軸路徑會類似像「/dev/mapper/ubuntu–vg-ubuntu–lv」這樣的路徑。

我們也可以分別利用「pvdisplay」、「vgdisplay」與「lvdisplay」等指令分別去看上述各個邏輯捲軸層架構上的資訊,以下是這三種指令輸出的結果:


$ sudo pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name ubuntu-vg
PV Size 928.46 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 237685
Free PE 0
Allocated PE 237685
PV UUID PMLMCB-fJfI-nz9s-KldN-xr9t-bXKy-Wf8oon

$ sudo vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <928.46 GiB
PE Size 4.00 MiB
Total PE 237685
Alloc PE / Size 25600 / 100.00 GiB
Free PE / Size 212085 / <828.46 GiB
VG UUID 412kz3-3uzE-CcdG-qdps-hXcl-e0yZ-JV0e7n

$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
LV UUID KNrGB6-eG9z-vabd-djzx-6Pfc-TqYm-xyRZGI
LV Write Access read/write
LV Creation host, time ubuntu-server, 2025-03-07 01:17:16 +0000
LV Status available
# open 1
LV Size <928.46 GiB
Current LE 237685
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0

從「PV UUID PMLMCB-fJfI-nz9s-KldN-xr9t-bXKy-Wf8oon」看到,可以透過該UUID去查看指定的硬碟編號,搭配blkid進行:


$ blkid | grep 'PMLMCB-fJfI-nz9s-KldN-xr9t-bXKy-Wf8oon'
/dev/sda3: UUID="PMLMCB-fJfI-nz9s-KldN-xr9t-bXKy-Wf8oon" TYPE="LVM2_member" PARTUUID="61b6198e-b92e-4238-8d15-e963cf5bfa36"

從上述的指令可以知道,該分割區是分割給LVM做使用,在下一章節則是要將特定的邏輯捲軸群組大小進行調整。

調整大小

在調整大小之前,先使用「df」指令查看該LVM目前的大小:


$ df -lh /

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 98G 27G 66G 29% /

接著利用「lvextend」將前述的LVM路徑進行大小調整,將所有閒置的空間全部做使用,因此設定延伸100%,相關的指令如下:


$ sudo lvextend --extents +100%FREE --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to <928.46 GiB (237685 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 117
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 243389440 (4k) blocks long.

調整完成後,接著再執行「df -lh /」指令,就可以發現LVM的大小增加了:


$ df -lh /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 914G 27G 849G 4% /

從上述的方法我們就可以完成將既有的LVM大小進行擴展以及將硬碟大小能夠完整使用的到。

參考文章

  • https://zh.wikipedia.org/zh-tw/%E9%82%8F%E8%BC%AF%E6%8D%B2%E8%BB%B8%E7%AE%A1%E7%90%86%E5%93%A1
  • https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/overview-of-logical-volume-management_configuring-and-managing-logical-volumes
  • https://serverfault.com/questions/1157977/how-to-expand-a-volume-group-from-a-single-physical-volume