Ubuntu 22.04 LVM 邏輯卷管理

前言

LVM(Logical Volume Manager,邏輯卷管理器)是 Linux 系統中一個強大的磁碟管理工具,它提供了比傳統分割區更靈活的儲存管理方式。本文將詳細介紹在 Ubuntu 22.04 中如何使用 LVM 進行磁碟管理。

LVM 基本概念

LVM 架構由三個主要層級組成:

物理卷 (Physical Volume, PV)

物理卷是 LVM 的最底層,可以是整個硬碟或是硬碟分割區。物理卷是建立 LVM 的基礎單元。

卷組 (Volume Group, VG)

卷組是由一個或多個物理卷組成的儲存池。你可以將卷組想像成一個大型的虛擬硬碟,它整合了多個物理卷的空間。

邏輯卷 (Logical Volume, LV)

邏輯卷是從卷組中切割出來的空間,類似於傳統的分割區。你可以在邏輯卷上建立檔案系統並掛載使用。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
+------------------------------------------+
|           邏輯卷 (LV)                     |
|   /dev/vg_data/lv_home  /dev/vg_data/lv_var |
+------------------------------------------+
|           卷組 (VG)                       |
|              vg_data                      |
+------------------------------------------+
|           物理卷 (PV)                     |
|   /dev/sdb1      /dev/sdc1      /dev/sdd1 |
+------------------------------------------+

建立 PV、VG、LV

安裝 LVM 工具

首先確保系統已安裝 LVM 工具:

1
2
sudo apt update
sudo apt install lvm2

建立物理卷 (PV)

假設我們有三個磁碟 /dev/sdb/dev/sdc/dev/sdd

1
2
3
4
5
6
# 建立物理卷
sudo pvcreate /dev/sdb /dev/sdc /dev/sdd

# 查看物理卷資訊
sudo pvs
sudo pvdisplay

建立卷組 (VG)

1
2
3
4
5
6
# 建立名為 vg_data 的卷組
sudo vgcreate vg_data /dev/sdb /dev/sdc /dev/sdd

# 查看卷組資訊
sudo vgs
sudo vgdisplay

建立邏輯卷 (LV)

1
2
3
4
5
6
7
8
9
# 建立指定大小的邏輯卷
sudo lvcreate -L 50G -n lv_home vg_data

# 使用百分比建立邏輯卷(使用剩餘空間的 100%)
sudo lvcreate -l 100%FREE -n lv_var vg_data

# 查看邏輯卷資訊
sudo lvs
sudo lvdisplay

格式化並掛載

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 格式化為 ext4 檔案系統
sudo mkfs.ext4 /dev/vg_data/lv_home

# 建立掛載點
sudo mkdir -p /mnt/data

# 掛載邏輯卷
sudo mount /dev/vg_data/lv_home /mnt/data

# 設定開機自動掛載(編輯 /etc/fstab)
echo '/dev/vg_data/lv_home /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab

擴展與縮小

擴展邏輯卷

LVM 的一大優勢是可以在不停機的情況下擴展邏輯卷。

新增物理卷到卷組

1
2
3
4
5
# 建立新的物理卷
sudo pvcreate /dev/sde

# 將物理卷加入卷組
sudo vgextend vg_data /dev/sde

擴展邏輯卷

1
2
3
4
5
6
7
8
# 擴展指定大小
sudo lvextend -L +20G /dev/vg_data/lv_home

# 或擴展到指定大小
sudo lvextend -L 100G /dev/vg_data/lv_home

# 使用所有可用空間
sudo lvextend -l +100%FREE /dev/vg_data/lv_home

調整檔案系統大小

1
2
3
4
5
# ext4 檔案系統(支援線上擴展)
sudo resize2fs /dev/vg_data/lv_home

# 或者使用 lvextend 的 -r 參數同時調整檔案系統
sudo lvextend -r -L +20G /dev/vg_data/lv_home

縮小邏輯卷

警告:縮小邏輯卷有資料遺失的風險,請務必先備份資料!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 首先卸載檔案系統
sudo umount /mnt/data

# 檢查檔案系統
sudo e2fsck -f /dev/vg_data/lv_home

# 縮小檔案系統(必須先縮小檔案系統)
sudo resize2fs /dev/vg_data/lv_home 30G

# 縮小邏輯卷
sudo lvreduce -L 30G /dev/vg_data/lv_home

# 重新掛載
sudo mount /dev/vg_data/lv_home /mnt/data

快照功能

LVM 快照是一個強大的功能,可以在某個時間點建立邏輯卷的副本,非常適合用於備份和測試。

建立快照

1
2
3
4
5
# 建立 5GB 大小的快照
sudo lvcreate -L 5G -s -n lv_home_snapshot /dev/vg_data/lv_home

# 查看快照資訊
sudo lvs

掛載快照

1
2
3
4
5
# 建立掛載點
sudo mkdir -p /mnt/snapshot

# 掛載快照(唯讀方式)
sudo mount -o ro /dev/vg_data/lv_home_snapshot /mnt/snapshot

還原快照

1
2
3
4
5
6
7
8
# 卸載原始邏輯卷和快照
sudo umount /mnt/data
sudo umount /mnt/snapshot

# 還原快照
sudo lvconvert --merge /dev/vg_data/lv_home_snapshot

# 重新啟動後生效(如果邏輯卷正在使用)

刪除快照

1
2
3
4
5
# 卸載快照
sudo umount /mnt/snapshot

# 刪除快照
sudo lvremove /dev/vg_data/lv_home_snapshot

常用指令速查表

物理卷 (PV) 相關指令

指令說明
pvcreate建立物理卷
pvs簡要顯示物理卷資訊
pvdisplay詳細顯示物理卷資訊
pvscan掃描所有物理卷
pvremove移除物理卷

卷組 (VG) 相關指令

指令說明
vgcreate建立卷組
vgs簡要顯示卷組資訊
vgdisplay詳細顯示卷組資訊
vgscan掃描所有卷組
vgextend擴展卷組
vgreduce縮小卷組
vgremove移除卷組

邏輯卷 (LV) 相關指令

指令說明
lvcreate建立邏輯卷
lvs簡要顯示邏輯卷資訊
lvdisplay詳細顯示邏輯卷資訊
lvscan掃描所有邏輯卷
lvextend擴展邏輯卷
lvreduce縮小邏輯卷
lvremove移除邏輯卷
lvrename重新命名邏輯卷

實用技巧

查看 LVM 整體狀態

1
2
3
# 一次查看所有 PV、VG、LV 資訊
sudo lsblk
sudo lvmdiskscan

移除 LVM 設定

如果需要完全移除 LVM 設定,請按以下順序操作:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 1. 卸載邏輯卷
sudo umount /dev/vg_data/lv_home

# 2. 移除邏輯卷
sudo lvremove /dev/vg_data/lv_home

# 3. 移除卷組
sudo vgremove vg_data

# 4. 移除物理卷
sudo pvremove /dev/sdb /dev/sdc /dev/sdd

總結

LVM 提供了靈活的磁碟管理功能,主要優點包括:

  • 動態調整大小:可以在不停機的情況下擴展邏輯卷
  • 跨磁碟整合:可以將多個磁碟整合成一個大的儲存池
  • 快照功能:方便進行備份和測試
  • 線上遷移:支援在不停機的情況下遷移資料

掌握 LVM 的使用方法,將大大提升你在 Linux 系統中管理儲存空間的能力。

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy