共計(jì) 7670 個(gè)字符,預(yù)計(jì)需要花費(fèi) 20 分鐘才能閱讀完成。
本篇內(nèi)容主要講解“l(fā)inux 中 lvm 的概念是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓丸趣 TV 小編來帶大家學(xué)習(xí)“l(fā)inux 中 lvm 的概念是什么”吧!
在 linux 中,LVM 全稱“Logical Volume Manager”,中文意思為“邏輯卷管理”,是 Linux 環(huán)境下對(duì)磁盤分區(qū)進(jìn)行管理的一種機(jī)制;LVM 是建立在硬盤和分區(qū)之上的一個(gè)邏輯層,可用來提高磁盤分區(qū)管理的靈活性。
本教程操作環(huán)境:linux5.9.8 系統(tǒng)、Dell G3 電腦。
什么是 LVM
LVM(Logical Volume Manager),即邏輯卷管理,是 Linux 環(huán)境下對(duì)磁盤分區(qū)進(jìn)行管理的一種機(jī)制,LVM 是建立在硬盤和分區(qū)之上的一個(gè)邏輯層,來提高磁盤分區(qū)管理的靈活性。通過 LVM 系統(tǒng)管理員可以輕松管理磁盤分區(qū),如:將若干個(gè)磁盤分區(qū)連接為一個(gè)整塊的卷組(volume group),形成一個(gè)存儲(chǔ)池。管理員可以在卷組上隨意創(chuàng)建邏輯卷組(logical volumes),并進(jìn)一步在邏輯卷組上創(chuàng)建文件系統(tǒng)。管理員通過 LVM 可以方便的調(diào)整存儲(chǔ)卷組的大小,并且可以對(duì)磁盤存儲(chǔ)按照組的方式進(jìn)行命名、管理和分配。當(dāng)系統(tǒng)添加了新的磁盤,通過 LVM 管理員就不必將磁盤的文件移動(dòng)到新的磁盤上以充分利用新的存儲(chǔ)空間,而是直接擴(kuò)展文件系統(tǒng)跨越磁盤即可。
一般來說,物理磁盤或分區(qū)之間是分隔的,數(shù)據(jù)無法跨盤或分區(qū),而各磁盤或分區(qū)的大小固定,重新調(diào)整比較麻煩。LVM 可以將這些底層的物理磁盤或分區(qū)整合起來,抽象成容量資源池,以劃分成邏輯卷的方式供上層使用,其最主要的功能即是可以在無需關(guān)機(jī)無需重新格式化(準(zhǔn)確地說,原來的部分無需格式化,只格式化新增的部分)的情況下彈性調(diào)整邏輯卷的大小。
LVM 的實(shí)現(xiàn)過程如下圖:
LVM 名詞解釋
PV(physical volume):物理卷在邏輯卷管理系統(tǒng)最底層,可為整個(gè)物理硬盤或?qū)嶋H物理硬盤上的分區(qū)。它只是在物理分區(qū)中劃出了一個(gè)特殊的區(qū)域,用于記載與 LVM 相關(guān)的管理參數(shù)。
VG(volume group):卷組建立在物理卷上,一卷組中至少要包括一物理卷,卷組建立后可動(dòng)態(tài)的添加卷到卷組中,一個(gè)邏輯卷管理系統(tǒng)工程中可有多個(gè)卷組。
LV(logical volume):邏輯卷建立在卷組基礎(chǔ)上,卷組中未分配空間可用于建立新的邏輯卷,邏輯卷建立后可以動(dòng)態(tài)擴(kuò)展和縮小空間。
PE(physical extent):物理區(qū)域是物理卷中可用于分配的最小存儲(chǔ)單元,物理區(qū)域大小在建立卷組時(shí)指定,一旦確定不能更改,同一卷組所有物理卷的物理區(qū)域大小需一致,新的 pv 加入到 vg 后,pe 的大小自動(dòng)更改為 vg 中定義的 pe 大小。
LE(logical extent):邏輯區(qū)域是邏輯卷中可用于分配的最小存儲(chǔ)單元,邏輯區(qū)域的大小取決于邏輯卷所在卷組中的物理區(qū)域的大小。由于受內(nèi)核限制的原因,一個(gè)邏輯卷(Logic Volume)最多只能包含 65536 個(gè) PE(Physical Extent),所以一個(gè) PE 的大小就決定了邏輯卷的最大容量,4 MB(默認(rèn)) 的 PE 決定了單個(gè)邏輯卷最大容量為 256 GB,若希望使用大于 256G 的邏輯卷,則創(chuàng)建卷組時(shí)需要指定更大的 PE。在 Red Hat Enterprise Linux AS 4 中 PE 大小范圍為 8 KB 到 16GB,并且必須總是 2 的倍數(shù)。
LVM 的寫入模式
LVM 有兩種寫入模式:線性模式和條帶模式。
線性模式即寫完一個(gè)設(shè)備后再寫另一個(gè)設(shè)備
條帶模式就有點(diǎn)類似于 RAID0,即數(shù)據(jù)是被分散寫入到 LVM 各成員設(shè)備上的。
因?yàn)闂l帶模式的數(shù)據(jù)不具有安全性,且 LVM 并不強(qiáng)調(diào)讀寫性能,故 LVM 默認(rèn)為線性模式,這樣即使一個(gè)設(shè)備壞了,其它設(shè)備上的數(shù)據(jù)還在。
LVM 的工作原理
LVM 在每個(gè)物理卷頭部都維護(hù)了一個(gè) metadata,每個(gè) metadata 中都包含了整個(gè) VG(volume group:卷組)的信息,包括每個(gè) VG 的布局配置,PV(physical volume:物理卷)的編號(hào),LV(logical volume:邏輯卷)的編號(hào),以及每個(gè) PE(physical extends:物理擴(kuò)展單元)到 LE(logical extends:物理擴(kuò)展單元)的映射關(guān)系。同一個(gè) VG 中的每個(gè) PV 頭部的信息都是相同的,這樣有利于故障時(shí)進(jìn)行數(shù)據(jù)恢復(fù)。
LVM 對(duì)上層文件系統(tǒng)提供 LV 層,隱藏了操作細(xì)節(jié)。對(duì)文件系統(tǒng)而言,對(duì) LV 的操作與原先對(duì) partition 的操作沒有差別。當(dāng)對(duì) LV 進(jìn)行寫入操作的時(shí)候,LVM 定位相應(yīng)的 LE,通過 PV 頭部的映射表將數(shù)據(jù)寫入到相應(yīng)的 PE 上。LVM 最大的特點(diǎn)就是可以對(duì)磁盤進(jìn)行動(dòng)態(tài)管理。因?yàn)檫壿嬀淼拇笮∈强梢詣?dòng)態(tài)調(diào)整的,而且不會(huì)丟失現(xiàn)有的數(shù)據(jù)。我們?nèi)绻略黾恿擞脖P,其也不會(huì)改變現(xiàn)有上層的邏輯卷。關(guān)鍵在于 PE 和 LE 之間建立映射關(guān)系,不同的映射規(guī)則決定了不同的 LVM 存儲(chǔ)模型。LVM 支持多個(gè) PV 的 stripe 和 mirror。
LVM 的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
文件系統(tǒng)可以跨多個(gè)磁盤,因此文件系統(tǒng)大小不會(huì)受物理磁盤的限制。
可以在系統(tǒng)運(yùn)行的狀態(tài)下動(dòng)態(tài)的擴(kuò)展文件系統(tǒng)的大小。
可以增加新的磁盤到 LVM 的存儲(chǔ)池中。
可以以鏡像的方式冗余重要的數(shù)據(jù)到多個(gè)物理磁盤。
可以方便的導(dǎo)出整個(gè)卷組到另外一臺(tái)機(jī)器。
缺點(diǎn):
在從卷組中移除一個(gè)磁盤的時(shí)候必須使用 reducevg 命令(這個(gè)命令要求 root 權(quán)限,并且不允許在快照卷組中使用)。
當(dāng)卷組中的一個(gè)磁盤損壞時(shí),整個(gè)卷組都會(huì)受到影響。
因?yàn)榧尤肓祟~外的操作,存貯性能受到影響。
創(chuàng)建 PV/VG/LV 的方法
1、將各物理磁盤或分區(qū)的系統(tǒng)類型設(shè)為 Linux LVM,其 system ID 為 8e,通過 fdisk 工具中的 t 命令設(shè)置
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (20973568-62914559, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-62914559, default 62914559): +5G
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e # 指定 system id 為 8e
Changed type of partition Linux to Linux LVM
Command (m for help): p
/dev/sdb1 2048 20973567 10485760 8e Linux LVM
/dev/sdb2 20973568 31459327 5242880 8e Linux LVM
Command (m for help): w
...
2、將各物理磁盤或分區(qū)初始化為 PV(physical volume,物理卷)
這一階段可使用的命令為 pvcreate、pvremove、pvscan、pvdisplay(pvs)
1)pvcreate:創(chuàng)建物理卷
用法:pvcreate [option] DEVICE
選項(xiàng):
-f:強(qiáng)制創(chuàng)建邏輯卷,不需用戶確認(rèn)
-u:指定設(shè)備的 UUID
-y:所有問題都回答 yes
例 pvcreate /dev/sdb1 /dev/sdb2
2)pvscan:掃描當(dāng)前系統(tǒng)上的所有物理卷
用法:pvscan [option]
選項(xiàng):
-e:僅顯示屬于輸出卷組的物理卷
-n:僅顯示不屬于任何卷組的物理卷
-u:顯示 UUID
3)pvdisplay:顯示物理卷的屬性
用法:pvdisplay [PV_DEVICE]
4)pvremove:將物理卷信息刪除,使其不再被視為一個(gè)物理卷
用法:pvremove [option] PV_DEVICE
選項(xiàng):
-f:強(qiáng)制刪除
-y:所有問題都回答 yes
例 pvremove /dev/sdb1
5)pv 創(chuàng)建和刪除例子
[root@localhost ~]# pvcreate /dev/sdb{1,2} # 將兩個(gè)分區(qū)初始化為物理卷
Physical volume /dev/sdb1 successfully created.
Physical volume /dev/sdb2 successfully created.
[root@localhost ~]# pvscan
PV /dev/sdb2 lvm2 [5.00 GiB]
PV /dev/sdb1 lvm2 [10.00 GiB]
Total: 2 [15.00 GiB] / in use: 0 [0 ] / in no VG: 2 [15.00 GiB]
[root@localhost ~]# pvdisplay /dev/sdb1 # 顯示物理卷 sdb1 的詳細(xì)信息
/dev/sdb1 is a new physical volume of 10.00 GiB
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0 # 由于 PE 是在 VG 階段才劃分的,所以此處看到的都是 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID GrP9Gi-ubau-UAcb-za3B-vSc3-er2Q-MVt9OO
[root@localhost ~]# pvremove /dev/sdb2 # 刪除 sdb2 的物理卷信息
Labels on physical volume /dev/sdb2 successfully wiped.
[root@localhost ~]# pvscan # 可以看到 PV 列表中已無 sdb2
PV /dev/sdb1 lvm2 [10.00 GiB]
Total: 1 [10.00 GiB] / in use: 0 [0 ] / in no VG: 1 [10.00 GiB]
[root@localhost ~]# pvcreate /dev/sdb2
Physical volume /dev/sdb2 successfully created.
3、創(chuàng)建 VG(volume group,卷組)。
卷組將多個(gè)物理卷整合起來(屏蔽了底層細(xì)節(jié)),并劃分 PE(physical extend)
PE 是物理卷中的最小存儲(chǔ)單元,有點(diǎn)類似于文件系統(tǒng)中的 block,PE 大小可指定,默認(rèn)為 4M。這一階段用到的命令有 vgcreate、vgscan、vgdisplay、vgextend、vgreduce
1)vgcreate:創(chuàng)建卷組
用法:vgcreate [option] VG_NAME PV_DEVICE
選項(xiàng):
-s:卷組中的物理卷的 PE 大小,默認(rèn)為 4M
-l:卷組上允許創(chuàng)建的最大邏輯卷數(shù)
-p:卷級(jí)中允許添加的最大物理卷數(shù)
例 vgcreate -s 8M myvg /dev/sdb1 /dev/sdb2
2)vgscan:查找系統(tǒng)中存在的 LVM 卷組,并顯示找到的卷組列表
3)vgdisplay:顯示卷組屬性
用法:vgdisplay [option] [VG_NAME]
選項(xiàng):
-A:僅顯示活動(dòng)卷組的信息
-s:使用短格式輸出信息
4)vgextend:動(dòng)態(tài)擴(kuò)展 LVM 卷組,它通過向卷組中添加物理卷來增加卷組的容量
用法:vgextend VG_NAME PV_DEVICE
例 vgextend myvg /dev/sdb3
5)vgreduce:通過刪除 LVM 卷組中的物理卷來減少卷組容量,不能刪除 LVM 卷組中剩余的最后一個(gè)物理卷
用法:vgreduce VG_NAME PV_DEVICE
6)vgremove:刪除卷組,其上的邏輯卷必須處于離線狀態(tài)
用法:vgremove [-f] VG_NAME
-f:強(qiáng)制刪除
7)vgchange:常用來設(shè)置卷組的活動(dòng)狀態(tài)
用法:vgchange -a n/y VG_NAME
-a n 為休眠狀態(tài),休眠之前要先確保其上的邏輯卷都離線;
-a y 為活動(dòng)狀態(tài)
8)vg 創(chuàng)建例子
[root@localhost ~]# vgcreate -s 8M myvg /dev/sdb{1,2}
Volume group myvg successfully created
[root@localhost ~]# vgscan
Reading volume groups from cache.
Found volume group myvg using metadata type lvm2
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 14.98 GiB
PE Size 8.00 MiB
Total PE 1918
Alloc PE / Size 0 / 0
Free PE / Size 1918 / 14.98 GiB
VG UUID aM3RND-aUbQ-7RjC-dCci-JiS4-Oj2Z-wv9poA
4、在卷組上創(chuàng)建 LV(logical volume,邏輯卷)
為了便于管理,邏輯卷對(duì)應(yīng)的設(shè)備文件保存在卷組目錄下,為 /dev/VG_NAME/LV_NAME。LV 中可以分配的最小存儲(chǔ)單元稱為 LE(logical extend),在同一個(gè)卷組中,LE 的大小和 PE 是一樣的,且一一對(duì)應(yīng)。這一階段用到的命令有 lvcreate、lvscan、lvdisplay、lvextend、lvreduce、lvresize
1)lvcreate:創(chuàng)建邏輯卷或快照
用法:lvcreate [選項(xiàng)] [參數(shù)]
選項(xiàng):
-L:指定大小
-l:指定大小(LE 數(shù))
-n:指定名稱
-s:創(chuàng)建快照
-p r:設(shè)置為只讀(該選項(xiàng)一般用于創(chuàng)建快照中)
注:使用該命令創(chuàng)建邏輯卷時(shí)當(dāng)然必須指明卷組,創(chuàng)建快照時(shí)必須指明針對(duì)哪個(gè)邏輯卷
例 lvcreate -L 500M -n mylv myvg
2)lvscan:掃描當(dāng)前系統(tǒng)中的所有邏輯卷,及其對(duì)應(yīng)的設(shè)備文件
3)lvdisplay:顯示邏輯卷屬性
用法:lvdisplay [/dev/VG_NAME/LV_NAME]
4)lvextend:可在線擴(kuò)展邏輯卷空間
用法:lvextend -L/-l 擴(kuò)展的大小 /dev/VG_NAME/LV_NAME
選項(xiàng):
-L:指定擴(kuò)展(后)的大小。例如,-L +800M 表示擴(kuò)大 800M,而 -L 800M 表示擴(kuò)大至 800M
-l:指定擴(kuò)展(后)的大小(LE 數(shù))
例 lvextend -L 200M /dev/myvg/mylv
5)lvreduce:縮減邏輯卷空間,一般離線使用
用法:lvexreduce -L/-l 縮減的大小 /dev/VG_NAME/LV_NAME
選項(xiàng):
-L:指定縮減(后)的大小
-l:指定縮減(后)的大小(LE 數(shù))
例 lvreduce -L 200M /dev/myvg/mylv
6)lvremove:刪除邏輯卷,需要處于離線(卸載)狀態(tài)
用法:lvremove [-f] /dev/VG_NAME/LV_NAME
-f:強(qiáng)制刪除
7)lv 創(chuàng)建例子
[root@localhost ~]# lvcreate -L 2G -n mylv myvg
Logical volume mylv created.
[root@localhost ~]# lvscan
ACTIVE /dev/myvg/mylv [2.00 GiB] inherit
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID 2lfCLR-UEhm-HMiT-ZJil-3EJm-n2H3-ONLaz1
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-07-05 13:42:44 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
5、格式化邏輯卷并掛載
[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount
mount mountpoint
[root@localhost ~]# mount /dev/myvg/mylv /data
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 1.5G 49G 3% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/myvg-mylv 2.0G 6.0M 1.8G 1% /data
到此,相信大家對(duì)“l(fā)inux 中 lvm 的概念是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是丸趣 TV 網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!