擴增Ubuntu的硬碟容量(LVM)

在Linux環境下擴增磁碟容量,跟Partition based的Windows比較起來還真的不是普通的複雜,不過這些觀念與設定都是為了日後擴增應用上的彈性。這個範例將步驟記錄在此以利日後查詢,指令預設先一律sudo -i開始。

LVM觀念

LVM(Logical Volume Manager)中文為邏輯捲軸管理員,透過下圖複雜的邏輯層切割,來讓大型伺服系統可以用更彈性的方式來調整磁碟空間。首先看一下下面這張圖:

Linux透過下面這三個邏輯架構將系統與實體裝置切開,日後硬體的資源將可以透過邏輯的方式被直接使用,不用再經過備份、搬移、還原等步驟。

硬碟環境檢視

首先檢試一下當前的磁碟機以及磁碟分割區:

fdisk -l

我們可以發現有一顆名為/dev/sda的20GB硬碟,並且被分割成三個Partition(sda1、sda2、sda3),另外也可以瞥見名為/dev/mapper/ubuntu--vg-ubuntu--lv的LV出現。

接著馬上輸入指令來檢視LV的相關狀態:

lvdisplay

我們發現了事實是,/dev/mapper/ubuntu--vg-ubuntu--lv這個LV是由ubuntu-vg這個VG切出,且不知道為何只有給10GB?這代表屬於LV

整理一下目前的發現,輸入下列指令列出關係圖:

lsblk

接著透過下列指令來查詢VG的相關狀態:

vgdisplay

我們可以看出這個VG採用的是lvm2格式,SIZE為18.22GB,其中已經分配了10GB出去了(Alloc PE / Size),還有8.22GB的PE尚未分配(Free PE / Size)。

擴增硬碟容量

因為我是VM環境所以可以針對虛擬硬碟進行邏輯上的擴增,我這邊打算把20GB擴增到40GB,首先把作業系統關機後,到VMware裡面針對硬碟進行Expand擴增。

開機後為了要方便的擴增容量,可以請parted程式來幫忙,若無可先下載:

apt-get install parted

執行parted後可輸入print指令查看狀態,可以看到/dev/sda磁碟機已經變成42.9GB,但是分割區編號3的容量仍然是19.6GB

接著按照下列指令輸入來延伸磁區:

(parted) resizepart
Partition number? 3
End? [21.5GB]? 100%

最後再print確認一次狀態確定已經擴充到40GB完成了(41.0GB),可以輸入quit離開並reboot

擴增LVM容量

重開機後開心地輸入pvdisplay看看容量有沒有擴增,結果發現並沒有,依然維持在18GB

輸入下列指令更新PV容量大小:

pvresize /dev/sda3

完成後馬上pvdisplay確認,發現PV的容量改變為38.23GB了:

接著輸入lvdisplay確認依然停留在10GB

接下來就是準備將VG剩餘的PE空間,全部100%都讓給LV的時刻了。請輸入下列指令:

lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

系統會返回下列訊息,代表LV已經由原本占用2560PE,提升變成佔用了9785PE:

Size of logical volume ubuntu-vg/ubuntu-lv changed from 10.00 GiB (2560 extents) to 38.22 GiB (9785 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.

再來一次lvdisplay確認已經LV Size升級到38.22GB

將LV的空間更新到檔案系統

做到這邊還別高興,你還要輸入指令將LV的空間釋放給檔案系統(File System),我們先輸入磁碟檢查指令看看:

df -h

可以看到/dev/mapper/ubuntu--vg-ubuntu--lv這個LV依然是10GB...

輸入指令讓LV的新容量釋放給檔案系統

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

在檢查一次磁碟容量,透過檔案系統來確定LV的可用空間為38GB

至此,硬碟容量擴充總算大功告成。

Linux Ubuntu Disk LVM LVM2 Capacity Expand Extend