快轉到主要內容

LVM 邏輯卷管理(Logical Volume Manager)

·1369 字· loading · loading ·
Computer-Science LVM
目錄
LVM - 本文屬於一個選集。
§ : 本文
比傳統硬碟分割更有效的硬碟管理方式。

簡介
#

Logical Volume ManagerLVM, 邏輯卷管理)是一種在傳統硬碟分割區上在加上一層邏輯層的硬碟管理方式。
相較於傳統的硬碟管理方式,LVM 能夠實現動態的調整硬碟大小,並且依照不同層級分群,在管理上更加直觀。
因此如伺服器、NAS 等較為需要時常調整硬碟空間的環境,LVM 極為實用。

p.s. 以下所提之指令可能需要 root 權限執行。


層級概念
#

其層級概念由底層到高層分別可以劃分成如下:

  • Physical VolumePV, 物理卷
    指的是實體的儲存空間,如完整的硬碟或其分割區,例如/dev/sda/dev/sda1…等。

  • Volume GroupVG, 卷組
    如同名稱是個群組,裡頭可以有一個或多個PV組成。

  • Logical VolumeLV, 邏輯卷
    在傳統的硬碟分區中,若設其為PVVG後,則該分區的概念在 LVM 中應當被看作整顆實體硬碟。
    LV便是從VG劃分的「硬碟分區」,概念與傳統硬碟分區很像,可以對其進行格式化、掛載、安裝系統等操作,差別在於LV可以更加動態的調整大小。

  • Physical ExtentPE, 物理區塊
    LVM 把PV劃分成固定大小的PE(如 4MB),而這些PE是分配LV的最小單位。(LV的大小實際上就是由PE數量決定的)

而我們通常只須重點關注於VGLV即可,操作時通常圍繞在這兩個層面。


安裝
#

以 Ubuntu 為例,可以使用apt直接安裝:

1apt install lvm2

安裝完後可以透過指定pvsvgslvs查看現有的PVVGLV。(一開始安裝完應該會是空的)


創建 PV
#

選定要使用 LVM 的實體硬碟或分區,並透過pvcreate指定初始化 PV,
舉例欲將/dev/sdb/dev/sdc1使用 LVM:

1pvcreate /dev/sdb /dev/sdc1

查看當前的PV

1pvs

p.s. 可以使用指令df -h查看硬碟及分區


創建 VG
#

接著將一個或多個PV以指令vgcreate設為一個VG,舉例以先前創建的/dev/sdb/dev/sdc1為例:

1vgcreate vg0 /dev/sdb /dev/sdc1

其中vg0VG的名稱,可以自行命名,但請避免特殊符號及空格。

接著查看當前的VG

1vgs

若是往後有新的PV空間要擴展進VG,則只需要使用指令vgextend即可:

1# 舉例擴展 /dev/sdd 至 vg0
2vgextend vg0 /dev/sdd

創建 LV
#

透過指令lvcreate創建LV

1lvcreate -L 20G -n lv0 vg0

這將以vg0分割出一個 20GB 大小的 LV 並命名為lv0(可以自行修改)。
如果想將整個VG的剩餘空間都劃分為LV,則可以使用如下寫法:

1lvcreate -l 100%FREE -n lv0 vg0

查看當前的LV

1lvs

使用 LV
#

先前說過 LV 如同硬碟分區,因此我們可以像正常分區一樣的使用它,例如格式化:

1mkfs.ext4 /dev/vg0/lv0

然後掛載:

1mkdir /mnt/lv_data
2mount /dev/vg0/lv0 /mnt/lv_data

擴增 LV
#

具體步驟如下,假設欲擴增VG剩餘空間的 10GB 到lv0

1lvextend -L +10G /dev/vg0/lv0

或者也可以將所有的剩餘空間給lv0

1lvextend -l +100%FREE /dev/vg0/lv0

接著必須讓檔案系統重新掃描變更後的硬碟,
如果你的 LV 已經格式化成ext4檔案系統,則使用resize2fs指令,並支援在線離線調整:

1resize2fs /dev/vg0/lv0

若為xfs則使用xfs_growfs指令,但只支援在線調整:

1xfs_growfs /mnt/lv_data

接著確認 LV 大小是否擴增正確:

1lvs

LV 縮減?
#

該操作相較於前面的這些步驟更為危險,若操作不當將可能導致資料毀損。
關於這部份請見下一篇文章解說:「LVM 安全的縮小 LV 的空間」。


References
#

Alpaca
作者
Alpaca
No one can stop my feet.
LVM - 本文屬於一個選集。
§ : 本文

相關文章

Ubuntu 安裝 Fcitx5 注音輸入,並解決無法在瀏覽器切換輸入法的問題
·436 字· loading · loading
Computer-Science Ubuntu Fcitx
Ubuntu 安裝 Fcitx5 遇到困難,甚至無法於瀏覽器切換輸入法嗎?
Mosquitto | 讓 JS 也支援 MQTT
·2262 字· loading · loading
Computer-Science MQTT Websocket
非常好用的 MQTT Server,還支援 Websocket 協定轉發!
SSH 連線以金鑰取代密碼
·1479 字· loading · loading
Computer-Science SSH
每當使用 SSH 連接遠端主機時,都必須輸入密碼,而為了安全性,密碼又需要一定程度的複雜度,長久下來難免感到麻煩...
How to change password of Mariadb?
·63 字· loading · loading
Computer-Science Mariadb
移動 WSL 的儲存空間到其他硬碟
·1041 字· loading · loading
Computer-Science WSL
Windows 的 WSL 佔用了太多系統空間,本文將介紹如何將其移動至自訂的硬碟位置。
架設暗網 - Tor Hidden Service
·1127 字· loading · loading
Computer-Science Tor
本文將說明如何架設 Tor 暗網,將你的服務隱匿在 Tor 當中。