Linux操作系統(tǒng)之邏輯卷管理LVM詳解
Linux系統(tǒng)中,隨著數(shù)據(jù)量的不斷增長,單個物理硬盤或單個磁盤分區(qū)因磁盤空間有限,可能無法滿足數(shù)據(jù)存儲需求。
為解決磁盤空間不足問題,Linux引入了邏輯卷管理(LVM)技術(shù),允許用戶靈活地管理和擴展存儲資源。
邏輯卷管理 LVM(Logical Volume Manager)是Linux系統(tǒng)下的一個邏輯卷管理工具,它提供了一個抽象層,允許用戶對物理硬盤進行更靈活的管理。
LVM通過將物理硬盤或磁盤分區(qū)轉(zhuǎn)換為物理卷(PV),然后將物理卷組合成卷組(VG),最后在卷組上創(chuàng)建邏輯卷(LV)來實現(xiàn)對存儲資源的靈活管理。
一、LVM術(shù)語
物理卷(PV, Physical Volume)
物理卷就是指磁盤、磁盤分區(qū)或從邏輯上和磁盤分區(qū)具有同樣功能的設(shè)備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(zhì)(如分區(qū)、磁盤等)比較,卻包含有和LVM相關(guān)的管理參數(shù)。
比如你新添加了一塊磁盤 /dev/sdb, 那么你可以將整塊磁盤/dev/sdb 標(biāo)記成一個PV,也可以先對/dev/sdb 分區(qū),如分了兩個主分區(qū)/dev/sdb1 和 /dev/sdb2 ,然后將這兩個分區(qū)/dev/sdb1 和 /dev/sdb2 分別標(biāo)記成一個PV。
卷組(VG, Volume Group)
LVM卷組類似于非LVM系統(tǒng)中的物理硬盤,其由物理卷組成,相當(dāng)于磁盤容量總和的一個存儲池。能在卷組上創(chuàng)建一個或多個“LVM分區(qū)”(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷(LV, Logical Volume)
LVM的邏輯卷類似于非LVM系統(tǒng)中的硬盤分區(qū),在邏輯卷之上能建立文件系統(tǒng)(比如/tmp或/var等)。
PE(physical extent)
每一個物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認(rèn)為4MB。
LE(logical extent)
邏輯卷也被劃分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,并且一一對應(yīng)。
總的來說, 使用LVM 機制創(chuàng)建一個LV 的過程是:一塊硬盤(物理存儲介質(zhì))被格式化為物理卷(physical volume),其內(nèi)部被分成若干個默認(rèn)大小為4M的PE(physical extent),然后在PV的基礎(chǔ)上創(chuàng)建卷組(Volume Group),可以把一個或者多個PV加到VG中,VG就好像一個空間池,有多少個PV,VG就有多大的容量,最后基于VG創(chuàng)建邏輯卷(logical volume) ,一個邏輯卷就是若干個PE,然后將LV格式化再掛載(將LV當(dāng)成傳統(tǒng)磁盤劃分里面的磁盤分區(qū))。

二、LVM卷類型
在 LVM 中,您可以選擇使用線性邏輯卷(Linear LV)或條帶邏輯卷(Striped LV)來管理存儲空間。這兩種方式在磁盤資源的利用和性能方面有所不同。

線性邏輯卷(Linear LV)
線性邏輯卷是 LVM 中的一種基本形式,它將物理卷上的數(shù)據(jù)按照線性順序進行存儲。換句話說,數(shù)據(jù)從一個物理卷的末尾延伸到下一個物理卷的開始,依次類推,直到所有物理卷都被使用完畢。
特點:
- 數(shù)據(jù)按照線性順序存儲,從一個物理卷延伸到下一個物理卷。
- 簡單直觀,易于管理。
- 適用于小型環(huán)境或者對數(shù)據(jù)讀取順序要求不高的場景。
條帶邏輯卷(Striped LV)
條帶邏輯卷是一種高級形式的邏輯卷,它將數(shù)據(jù)分布在多個物理卷之間,以提高讀寫性能和并發(fā)能力,數(shù)據(jù)被分成固定大小的條帶(或塊),依次存儲在不同的物理卷上。
特點:
- 數(shù)據(jù)被分割成條帶,并分布在多個物理卷上,增加了讀寫并發(fā)能力和性能。
- 更好地利用了磁盤資源,提高了磁盤IO
- 適用于對性能要求較高、需要大量并發(fā)讀寫操作的場景。
數(shù)據(jù)安全性對比
線性邏輯卷和條帶邏輯卷在數(shù)據(jù)安全性上差異顯著,主要體現(xiàn)在故障影響范圍和數(shù)據(jù)恢復(fù)可能性上。
線性卷在磁盤故障時仍有望恢復(fù)部分?jǐn)?shù)據(jù),而條帶卷一旦有一塊磁盤損壞,則可能導(dǎo)致卷內(nèi)所有數(shù)據(jù)的丟失。
| 特性維度 | 線性邏輯卷 (Linear Logical Volume) | 條帶邏輯卷 (Striped Logical Volume) |
|---|---|---|
| 基本原理 | 數(shù)據(jù)按順序?qū)懭氪疟P,寫滿第一個才寫入第二個 | 數(shù)據(jù)被分割成小塊(條帶),并行寫入多個磁盤,類似RAID 0 |
| 主要目標(biāo) | 方便地聚合多個磁盤的存儲空間 | 追求極致I/O性能,通過并行讀寫提升吞吐量 |
| 數(shù)據(jù)安全性 | 提供有限的數(shù)據(jù)恢復(fù)可能性 | 災(zāi)難性數(shù)據(jù)丟失風(fēng)險極高 |
| 故障影響 | 單個磁盤故障,僅損失該磁盤上的數(shù)據(jù) | 單個磁盤故障,可能導(dǎo)致整個卷的數(shù)據(jù)都不可訪問或損壞 |
| 數(shù)據(jù)恢復(fù) | 有機會恢復(fù)幸存的、未被損壞的文件 | 幾乎所有文件都會丟失,恢復(fù)難度極大 |
| 應(yīng)用場景 | 通用存儲、文件服務(wù)器(對性能要求不高) | 高性能計算、數(shù)據(jù)庫日志、臨時數(shù)據(jù)(單點故障影響小的場景) |
綜上,不過是線性卷還是條帶卷都不適合存儲對數(shù)據(jù)安全性要求高的數(shù)據(jù),只適合存儲一些對容量要求較高,對數(shù)據(jù)安全性風(fēng)險要求低或可有可無的數(shù)據(jù),如應(yīng)用日志。
三、LVM操作
硬盤分區(qū)
首先,使用fdisk、parted等工具檢測系統(tǒng)中的新硬盤,并對其進行分區(qū),根據(jù)需要選擇合適的分區(qū)類型和大小,不分區(qū)也可用整塊磁盤創(chuàng)建物理卷,所以分區(qū)不是必選項,看實際情況而定。
創(chuàng)建物理卷
使用pvcreate命令將新硬盤的分區(qū)轉(zhuǎn)換成物理卷(PV)。例如,假設(shè)新硬盤的設(shè)備路徑為/dev/sdc和/dev/sde,執(zhí)行以下命令將其轉(zhuǎn)換為物理卷:
pvcreate /dev/sdc /dev/sde
創(chuàng)建卷組
使用vgcreate命令將創(chuàng)建好的物理卷處理成卷組(VG)。例如,創(chuàng)建一個名為testvg的卷組,包含/dev/sdc和/dev/sde這兩個物理卷:
vgcreate testvg /dev/sdc /dev/sde
創(chuàng)建邏輯卷
使用lvcreate命令將卷組分成若干個邏輯卷(LV)。例如,在myvg卷組上創(chuàng)建一個名為mylv的邏輯卷,大小為10GB:
lvcreate -L 10G -n testlv testvg
格式化邏輯卷
使用mkfs命令對邏輯卷進行格式化,以便存儲數(shù)據(jù)。例如,將testlv邏輯卷格式化為ext4文件系統(tǒng):
mkfs.ext4 /dev/testvg/testlv
掛載邏輯卷
創(chuàng)建一個目錄作為邏輯卷的掛載點,然后使用mount命令將邏輯卷掛載到該目錄。例如,將testlv邏輯卷掛載到/testdir目錄:
mkdir /testdir echo "/dev/testvg/testlv /testdir ext4 defaults 0 0" >> /etc/fstab mount -a df -h

現(xiàn)在,新硬盤已經(jīng)成功掛載到Linux系統(tǒng)中,并且可以通過LVM進行靈活的管理和擴展。
四、LVM擴容操作
當(dāng)需要擴展邏輯卷的大小時,可以使用lvextend命令進行擴容。例如,將testlv邏輯卷的大小擴展為20GB:
lvextend -L 20G /dev/testvg/testlv

擴容后,需要更新文件系統(tǒng)的容量以識別新的空間。對于ext2、ext3、ext4文件系統(tǒng),可以使用resize2fs命令;對于xfs文件系統(tǒng),可以使用xfs_growfs命令。例如,更新testlv邏輯卷上的ext4文件系統(tǒng):
resize2fs /dev/testvg/testlv

testlv邏輯卷的大小已經(jīng)成功擴展為20GB,并且文件系統(tǒng)已經(jīng)更新了容量。
若LV使用的是xfs文件系統(tǒng),例如,更新testlv2邏輯卷上的xfs文件系統(tǒng)則執(zhí)行以下命令進行更新:
xfs_growfs /dev/testvg/testlv2


完成以上步驟后,testlv2邏輯卷的大小已經(jīng)成功擴展為20GB,并且文件系統(tǒng)已經(jīng)更新了容量。
五、LVM常用命令
pvdisplay #顯示物理卷的屬性信息 vgdisplay [卷組名] #顯示卷組的屬性信息 lvdisplay #查看邏輯卷屬性信息 pvs #查看卷組 lvs #查看邏輯卷 pvcreate #創(chuàng)建物理卷 vgcreate 卷組名 物理卷全路徑名[物理卷全路徑名] #創(chuàng)建卷組 lvcreate #創(chuàng)建邏輯卷 vgrename 原卷組名 新卷組名 #卷組重命名 vgcfgbackup [卷組名] #把卷組中的VGDA信息備份到“/etc/lvmconf”目錄中的文件 vgcfgrestore -n 卷組名 物理卷全路命名 #從備份文件中必得指定物理卷的信息卷組的建立與刪除命令 vgremove 卷組名 #刪除卷組 vgextend 卷組名 物理卷全路徑名[物理卷全路徑名] #將物理卷加入卷組 vgreduce 卷組名 物理卷全路徑名[物理卷全路徑名] #將物理卷從卷組中移除 lvremove #刪除邏輯卷 lvextend -L|--size +邏輯卷大小增量 邏輯卷全路徑名 lvreduce q -L|--size +邏輯卷減小量 邏輯卷全路徑名 pvremove #移除物理卷 lvscan #掃描邏輯卷 pvmove /dev/sdb /dev/sdd #遷移pv,可以不停機檢修
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Ubuntu 20.04缺少libssl.so.1.0.0錯誤的解決方案
在使用Ubuntu 20.04時,你可能會遇到一些較老的應(yīng)用程序因缺少libssl.so.1.0.0庫而無法運行的問題,這是因為Ubuntu 20.04默認(rèn)使用的是更新版本的OpenSSL庫,本文將介紹如何快速解決這個問題,需要的朋友可以參考下2025-11-11
Linux環(huán)境下Apache開啟https服務(wù)的方法詳解
這篇文章主要介紹了Linux環(huán)境下Apache開啟https服務(wù)的方法,結(jié)合實例形式分析了阿里云環(huán)境下獲取SSL證書及Apache服務(wù)器安裝、開啟SSL的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07
詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud
這篇文章主要介紹了詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud,會通過 Nginx 和 PHP7-FPM 來運行 Nextcloud,同時使用 MariaDB 做為數(shù)據(jù)庫系統(tǒng)。2017-03-03

