lvm 邏輯卷管理器入門到進階 文章首圖

lvm 邏輯卷管理器入門到進階

lvm 邏輯卷管理器入門到進階

在 Linux 系統管理的世界裡,磁碟空間的彈性調度是 administrators 最頭痛的課題之一。傳統的分區方式一旦建立,若要擴充容量往往需要重新格式化或搬遷資料,過程繁複且風險極高。Linux 邏輯卷管理器(LVM, Logical Volume Manager)正是為了解決這個痛點而生。它透過抽象層將物理磁碟轉換為邏輯資源,讓我們能夠在不中斷服務的情況下動態調整儲存空間。本文將帶領您從基礎概念出發,深入解析 LVM 的核心指令與實際應用。

LVM 的核心架構

要理解 LVM,必須先掌握其三大核心元件:物理卷(PV)卷組(VG)邏輯卷(LV)

想像一下,物理磁碟或分區是磚塊(PV),我們將磚塊堆疊起來形成一面牆(VG),最後在這面牆上開出不同大小的房間(LV)供作業系統使用。這種層級結構賦予了 LVM 極大的靈活性。

實戰演練:建立與管理 LVM

以下範例將使用 Ubuntu 22.04 / Debian 12 環境,假設我們有一塊未分區的新磁碟 /dev/sdb

1. 建立物理卷(PV)

首先,我們需要將實體磁碟標記為 LVM 可使用的格式。

# 初始化物理卷
sudo pvcreate /dev/sdb

# 確認 PV 狀態
sudo pvs

輸出範例:

  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdb      lvm2 ---  1.00t 1.00t

2. 建立卷組(VG)

接著,將 PV 加入卷組。卷組相當於一個儲存資源池。

# 建立名為 vg_data 的卷組
sudo vgcreate vg_data /dev/sdb

# 查看卷組詳細資訊
sudo vgs

輸出範例:

  VG      #PV #LV #SN Attr   VSize  VFree
  vg_data   1   0   0 wz--n-  1.00t 1.00t

3. 建立邏輯卷(LV)

現在我們可以從 VG 中切割空間建立 LV。這裡我們建立一個 100GB 的邏輯卷。

# 建立名為 lv_storage 的 LV,大小為 100G
sudo lvcreate -L 100G -n lv_storage vg_data

# 格式化並掛載
sudo mkfs.ext4 /dev/vg_data/lv_storage
sudo mkdir -p /mnt/data
sudo mount /dev/vg_data/lv_storage /mnt/data

4. 動態擴充(進階技巧)

LVM 最強大的功能在於線上擴充。假設 VG 中還有剩餘空間,我們可以無縫擴充 LV 並調整檔案系統。

# 假設 vg_data 還有 50G 空間,我們將 LV 擴充 50G
sudo lvextend -L +50G /dev/vg_data/lv_storage

# 對於 ext4 檔案系統,需執行 resize2fs 以應用變更
sudo resize2fs /dev/vg_data/lv_storage

# 驗證容量已變更
df -h /mnt/data

若未來需要從外部新增磁碟到現有 VG,只需執行 sudo pvcreate /dev/sdc 然後 sudo vgextend vg_data /dev/sdc,即可瞬間增加儲存池容量,無需重新建立 LV。

常見問題與解決方案

1. 擴充後空間未生效? 許多新手在執行 lvextend 後發現 df -h 顯示的空間沒有變化。這是因為 LVM 僅擴充了底層塊設備,並未自動調整檔案系統。對於 ext4 必須使用 resize2fs,而對於 XFS 檔案系統則需使用 xfs_growfs。務必確認您的檔案系統類型。

2. 如何移除 LVM 配置? 若要徹底清除 LVM,請依序執行:先卸載檔案系統 umount,再移除邏輯卷 lvremove,接著移除卷組 vgremove,最後移除物理卷 pvremove。請務必小心操作,避免誤刪重要資料。

小結

LVM 是 Linux 儲存管理的基石,它將複雜的磁碟管理簡化為池化資源的調度。透過本文的實戰演練,您應該已經掌握了從建立 PV 到動態擴充 LV 的完整流程。掌握 LVM 不僅能提升系統維護的效率,更能為未來儲存需求的變化預留充足的彈性。建議您在測試環境中多進行擴充與縮減的練習,以加深對其機制理解。