LVM — pv, vg, lv

動態的分配檔案系統的空間,方便管理者隨時調整空間,達到妥善使用硬體效能的目的!

Kiwi lee
4 min readJul 5, 2022

遇到不太熟的 LVM,做個整理

什麼是 LVM

https://ithelp.ithome.com.tw/articles/10080861

  • LVM (Logical Volume Manager)
  • 可以彈性的調整filesystem的容量

名詞介紹

硬碟上可以切割多個實體 PV (physical volume),然後分配給抽象的 VG (volume group),最後則是由實際使用的 lv (logic volume) mount 到 os 內,作為檔案系統給我們使用。

物理存儲介質(The physical media)

指的是硬體儲存設備,即是硬碟。像是 /dev/sda /dev/hda 等等。

透過指令 fdisk -l 可查看細節

以下介紹 PV, VG, LV

PV (Physical Volume)

整個 LVM 最底層的元件,可當作是硬碟上的分區

# 假設有掛載硬碟
umount /dev/sda
# 創建 PV 在位初始化的硬碟
pvcreate /dev/sda
# 查看
pvdisplay

VG (Volume Group)

建立在 PV 上,可動態的加入 PV 進入 VG,不會受到 PV 來自於哪個 disk 的限制。

# Create
vgcreate esdata2 /dev/sdb
# Display
vgdisplay

Extend vg — 擴增 VG

vgextend $vgname $PV

LV (Logical Volume)

建立在 VG 上,可動態擴展和縮小。此層類似我們的檔案系統,像是 /home , /model等等,可以透過 mkfs來格式化。

# create (-L, 實際大小)
lvcreate -L 500M -n myLV myVG
# create and specify PV (-l, 幾個 physical extent, 通常是 4MB)
lvcreate -l 125 -n myLV myVG /dev/hdb1
# display
lvdisplay

Extend / reduce / resize

# +25 MB
lvextend -l +25 /dev/myVG/myLV
# 可以用 resize 取代
lvresize -l +25 /dev/myVG/myLV
lvresize -l -5 /dev/myVG/myLV
# 全拿
lvresize -l +100%FREE /dev/myVG/myLV

Reference

--

--

Kiwi lee

Hi, I'm kiwi, Platform Engineer (SRE, DevOps). Python Engineer. Love art, books, longboard. https://kiwilee-blog.netlify.app/