Linux LVM動(dòng)態(tài)存儲(chǔ)管理的指南分享
Linux 邏輯卷管理(LVM,Logical Volume Manager)是一種靈活的存儲(chǔ)管理技術(shù),通過在物理存儲(chǔ)設(shè)備與文件系統(tǒng)之間增加抽象層,實(shí)現(xiàn)對(duì)磁盤空間的動(dòng)態(tài)管理(如動(dòng)態(tài)擴(kuò)容 / 縮容、跨設(shè)備合并等)。相比傳統(tǒng)分區(qū),LVM 更適合需要靈活調(diào)整存儲(chǔ)空間的場景(如服務(wù)器、動(dòng)態(tài)擴(kuò)容需求的系統(tǒng))。
一、LVM 核心原理
1. 核心組件及關(guān)系
LVM 通過三層結(jié)構(gòu)實(shí)現(xiàn)存儲(chǔ)抽象,從底層到上層依次為:
- 物理卷(PV,Physical Volume)
底層物理存儲(chǔ)設(shè)備的抽象,可是硬盤分區(qū)(如/dev/sdb1
)、整個(gè)硬盤(如/dev/sdc
)或 RAID 設(shè)備。
PV 被劃分為多個(gè)物理擴(kuò)展(PE,Physical Extent),PE 是 LVM 中最小的存儲(chǔ)單元(默認(rèn)大小 4MB,可自定義),所有 PV 的 PE 大小需一致才能加入同一卷組。
- 卷組(VG,Volume Group)
由一個(gè)或多個(gè) PV 組成的 “存儲(chǔ)池”,將多個(gè)物理設(shè)備的空間合并為一個(gè)整體。VG 中的 PE 被統(tǒng)一管理,邏輯卷從 VG 中分配 PE。
- 邏輯卷(LV,Logical Volume)
從 VG 中 “切割” 出的邏輯空間,可直接格式化并掛載使用(類似傳統(tǒng)分區(qū))。LV 的大小由分配的 PE 數(shù)量決定,且可動(dòng)態(tài)調(diào)整(增加 / 減少 PE 數(shù)量)。
2. LVM 的核心優(yōu)勢
- +-動(dòng)態(tài)調(diào)整空間:LV 可在線擴(kuò)容或縮容(無需卸載,部分文件系統(tǒng)支持),無需重新分區(qū)。
- 跨設(shè)備合并:將多個(gè)物理磁盤的空間合并為一個(gè) VG,LV 可使用所有設(shè)備的空間(如將 3 塊 100GB 硬盤合并為 300GB 的 VG,創(chuàng)建 250GB 的 LV)。
- 靈活管理:支持快照(Snapshot)、鏡像(Mirror)等高級(jí)功能,便于數(shù)據(jù)備份和容災(zāi)。
二、LVM 配置步驟(基礎(chǔ)流程)
需先創(chuàng)建擴(kuò)展分區(qū)和邏輯分區(qū)
步驟 1:準(zhǔn)備邏輯分區(qū)
選擇要加入 LVM 的物理設(shè)備(如邏輯分區(qū)/dev/sda5
、/dev/sda6
,),確保設(shè)備未被掛載且無重要數(shù)據(jù)(操作會(huì)清空數(shù)據(jù))。
查看可用設(shè)備:
lsblk # 列出所有磁盤及分區(qū),確認(rèn)目標(biāo)設(shè)備(如sdb、sdc)
現(xiàn)在我們有兩個(gè)500M的磁盤分區(qū),但是需要放下一個(gè)7000M的文件,我們英應(yīng)該怎么做?
步驟 2:創(chuàng)建物理卷(PV)
用pvcreate
命令將物理設(shè)備初始化為 PV:
# 將/dev/sda5和/dev/sda6初始化為PV pvcreate /dev/sda5 /dev/sda6 # 驗(yàn)證PV:查看已創(chuàng)建的PV及PE信息 pvs # 簡潔顯示 pvdisplay /dev/sda5 # 詳細(xì)顯示指定PV的信息(包括PE大?。?/pre>
步驟 3:創(chuàng)建卷組(VG)
用vgcreate
命令將 PV 加入 VG(自定義 VG 名稱,如myvg
):
# 創(chuàng)建名為myvg的VG,包含/dev/sdb和/dev/sdc vgcreate vg0 /dev/sda5 /dev/sda6 # 驗(yàn)證VG:查看VG的總空間、剩余空間等 vgs # 簡潔顯示 vgdisplay vg0 # 詳細(xì)顯示(Total PE、Free PE等)
可選:創(chuàng)建 VG 時(shí)指定 PE 大?。J(rèn) 4MB,最大 65536PE,故默認(rèn)最大 VG 大小為 4MB×65536=256GB;若需更大 VG,可增大 PE,如-s 16M
):
vgcreate -s 16M myvg /dev/sda5 /dev/sda6 # PE大小設(shè)為16MB
步驟 4:創(chuàng)建邏輯卷(LV)
用lvcreate
命令從 VG 中分配空間創(chuàng)建 LV(自定義 LV 名稱,如mylv
):
# 方法1:指定大?。ㄈ鐒?chuàng)建100GB的LV) lvcreate -L 100G -n lv0 vg0 # 方法2:指定使用VG的百分比(如使用80%的空閑空間) lvcreate -l 80%FREE -n lv0 vg0 # 方法3:指定PE數(shù)量(如使用1000個(gè)PE,每個(gè)PE 4MB則為4GB) lvcreate -l 1000 -n lv0 vg0 # 驗(yàn)證LV:查看LV的路徑、大小等 lvs # 簡潔顯示(LV路徑通常為/dev/[VG名]/[LV名],如/dev/myvg/mylv) lvdisplay /dev/lv0/vg0 # 詳細(xì)顯示
步驟 5:格式化 LV 并掛載
LV 創(chuàng)建后需格式化(如 ext4、xfs),再掛載使用:
# 格式化LV為ext4(xfs用mkfs.xfs) mkfs.ext4 /dev/lv0/vg0 # 創(chuàng)建掛載點(diǎn)目錄 mkdir /lv0 # 臨時(shí)掛載(重啟失效) mount /dev/vg0/lv0 /lv0 # 永久掛載:編輯/etc/fstab,添加一行(用LV的UUID更可靠) # 1. 獲取LV的UUID blkid /dev/vg0/lv0 # 輸出類似:UUID="xxx" TYPE="ext4" # 2. 編輯fstab echo 'UUID=xxx /lv0 ext4 defaults 0 0' >> /etc/fstab # 3. 驗(yàn)證fstab mount -a # 無報(bào)錯(cuò)則配置正確
三、LVM 常用管理操作
1. 擴(kuò)展邏輯卷(LV 擴(kuò)容)
當(dāng) LV 空間不足時(shí),可從 VG 的空閑空間中分配更多 PE 擴(kuò)展 LV(需 VG 有足夠空閑空間)。
可以向擴(kuò)展分區(qū)擴(kuò)容然后給物理卷,邏輯組。邏輯卷就可以從邏輯組擴(kuò)容
假設(shè)現(xiàn)在有一個(gè)1700M的文件,前面卷組只有1000m 所以不夠,還需要擴(kuò)展vg
- 步驟一:現(xiàn)在增加2000M邏輯分區(qū)
- 步驟二:創(chuàng)建物理卷
- 步驟三:擴(kuò)展卷組
- 步驟四:擴(kuò)展邏輯卷
# 1. 檢查VG剩余空間(確認(rèn)有足夠Free PE) vgs vg0 # 2. 擴(kuò)展LV(如增加2000M) lvextend -L +2000M /dev/vg0/lv0 # 或使用全部剩余空間 lvextend -l +100%FREE /dev/vg0/lv0 # 3. 擴(kuò)展文件系統(tǒng)(關(guān)鍵:讓文件系統(tǒng)識(shí)別新增空間) # 若為ext4/xfs: # ext4用resize2fs(支持在線擴(kuò)容) resize2fs /dev/vg0/lv0 # xfs用xfs_growfs(需先掛載,指定掛載點(diǎn)) xfs_growfs /mnt/lv0
2. 縮減邏輯卷(LV 縮容)
注意:縮容有數(shù)據(jù)丟失風(fēng)險(xiǎn),需先卸載 LV 并檢查文件系統(tǒng)完整性(僅 ext4 支持縮容,xfs 不支持!)。
- 現(xiàn)在創(chuàng)建了/vg1 2000M 和lv1 800M
# 1. 卸載LV umount /lv1 # 2. 檢查文件系統(tǒng)錯(cuò)誤(必須執(zhí)行) e2fsck -f /dev/vg1/lv1 # 3. 縮減文件系統(tǒng)(先于LV縮容,指定目標(biāo)大小,如200M) resize2fs /dev/vg1/lv1 200M # 4. 縮減LV(目標(biāo)大小需≥文件系統(tǒng)大小,如200M) lvreduce -L 200M /dev/vg1/lv1 # 5. 重新掛載 mount -a
1.先卸載
2. 檢查是否可以縮容
3.縮容
4.重新掛載
3. 新增物理設(shè)備到卷組(VG 擴(kuò)容)
當(dāng) VG 空間不足時(shí),可添加新的 PV 擴(kuò)展 VG:
# 1. 將新設(shè)備(如/dev/sdd)初始化為PV pvcreate /dev/sdd # 2. 將PV加入已有VG(myvg) vgextend vg0 /dev/sdd # 驗(yàn)證:查看VG空間是否增加 vgs myvg
4. 刪除 LVM(謹(jǐn)慎操作)
如需刪除 LVM,需按 “LV→VG→PV” 的反向順序操作:
# 1. 卸載LV umount /mnt/mylv # 2. 從fstab中刪除掛載配置(避免開機(jī)報(bào)錯(cuò)) vim /etc/fstab # 刪除對(duì)應(yīng)行 # 3. 刪除LV lvremove /dev/myvg/mylv # 4. 刪除VG vgremove myvg # 5. 刪除PV(清空設(shè)備的LVM信息) pvremove /dev/sdb /dev/sdc
四、總結(jié)
LVM 通過 “PV→VG→LV” 的三層結(jié)構(gòu),將物理存儲(chǔ)抽象為靈活的邏輯空間,核心價(jià)值是動(dòng)態(tài)調(diào)整和跨設(shè)備管理。掌握基礎(chǔ)配置(創(chuàng)建 PV/VG/LV)和擴(kuò)展操作,可滿足大多數(shù)動(dòng)態(tài)存儲(chǔ)需求。實(shí)際使用中,需注意文件系統(tǒng)對(duì)擴(kuò)容 / 縮容的支持(如 xfs 不支持縮容),并謹(jǐn)慎操作避免數(shù)據(jù)丟失。
說明:lvcreat(創(chuàng)建) lvdisplay(查看) lvextent(擴(kuò)容) lvreduce(縮小)
- xfs的文件系統(tǒng)的邏輯卷,只能擴(kuò)容不能縮容
- ext4的文件系統(tǒng)可以縮容也可以擴(kuò)容
邏輯卷的大小必須與邏輯卷所在文件大小一致(邏輯卷擴(kuò)容后,需要掛載此時(shí)邏輯卷的大小發(fā)生改變,這個(gè)時(shí)候f所在的分區(qū)也需要擴(kuò)展文件系統(tǒng)重新識(shí)別。)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解linux下tar壓縮解壓縮文件夾的命令與參數(shù)
大家都知道壓縮文件或者文件夾可以為磁盤節(jié)省不少空間,那么Linux系統(tǒng)的壓縮和解壓縮命令都有哪些呢?參數(shù)又有哪些呢?下面小編就給大家介紹Linux下tar壓縮和解壓縮文件夾的命令與參數(shù),希望本文的內(nèi)容對(duì)你能有所幫助。2016-11-11Ubuntu如何修改時(shí)區(qū)為UTC/CST時(shí)間
這篇文章主要介紹了Ubuntu如何修改時(shí)區(qū)為UTC/CST時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07apache 二級(jí)域名解析實(shí)現(xiàn)方法
首先,你的擁有一個(gè)有泛域名解析的頂級(jí)域名,例如: domain.com其次,在 httpd.conf 中打開 mod_rewrite之后,在 httpd.conf 的最后,添加以下內(nèi)容2009-11-11Linux系統(tǒng)中CPU占用率較高問題排查思路與解決方法
這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)中CPU占用率較高問題排查思路與解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07