新聞中心
LVM的工作原理其實(shí)很簡(jiǎn)單,它就是通過(guò)將底層的物理硬盤(pán)抽象的封裝起來(lái),然后以邏輯卷的方式呈現(xiàn)給上層應(yīng)用。在傳統(tǒng)的磁盤(pán)管理機(jī)制中,我們的上層應(yīng)用是直接訪問(wèn)文件系統(tǒng),從而對(duì)底層的物理硬盤(pán)進(jìn)行讀取,而在LVM中,其通過(guò)對(duì)底層的硬盤(pán)進(jìn)行封裝,當(dāng)我們對(duì)底層的物理硬盤(pán)進(jìn)行操作時(shí),其不再是針對(duì)于分區(qū)進(jìn)行操作,而是通過(guò)一個(gè)叫做邏輯卷的東西來(lái)對(duì)其進(jìn)行底層的磁盤(pán)管理操作。比如說(shuō)我增加一個(gè)物理硬盤(pán),這個(gè)時(shí)候上層的服務(wù)是感覺(jué)不到的,因?yàn)槌尸F(xiàn)給上次服務(wù)的是以邏輯卷的方式
。LVM使用分層結(jié)構(gòu),如下圖所示。

創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供增城企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為增城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
圖中頂部,首先是實(shí)際的物理磁盤(pán)及其劃分的分區(qū)和其上的物理卷(PV)。一個(gè)或多個(gè)物理卷可以用來(lái)創(chuàng)建卷組(VG)。然后基于卷組可以創(chuàng)建邏輯卷(LV)。只要在卷組中有可用空間,就可以隨心所欲的創(chuàng)建邏輯卷。文件系統(tǒng)就是在邏輯卷上創(chuàng)建的,然后可以在操作系統(tǒng)掛載和訪問(wèn)。
LVM測(cè)試說(shuō)明
本文將介紹怎么在linux中創(chuàng)建和管理LVM卷。我們將會(huì)分成兩個(gè)部分。第一個(gè)部分,我們首先要在一個(gè)硬盤(pán)上創(chuàng)建多個(gè)邏輯卷,然后將它們掛載在/lvm-mount目錄。然后我們將要對(duì)創(chuàng)建好的卷調(diào)整大小。而第二部分,我們將會(huì)從另外一塊硬盤(pán)增加額外的卷到LVM中。
準(zhǔn)備磁盤(pán)分區(qū)
通過(guò)使用fdisk,創(chuàng)建磁盤(pán)分區(qū)。我們需要?jiǎng)?chuàng)建3個(gè)1G分區(qū),注意,并不要求分區(qū)的大小一致。同樣,分區(qū)需要使用‘8e’類(lèi)型來(lái)使他們可用于LVM。
# fdisk /dev/sdb
Command (m for help): n ## 新建
Command action
e extended
p primary partition (1-4)
p ## 主分區(qū)
Partition number (1-4): 1 ## 分區(qū)號(hào)
First cylinder (1-1044, default 1): ## 回車(chē)用默認(rèn)的1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +1G ## 大小
Command (m for help): t ## 改變類(lèi)型
Selected partition 1
Hex code (type L to list codes): 8e ## LVM 的分區(qū)代碼
Changed system type of partition 1 to 8e (Linux LVM)
重復(fù)上面的操作來(lái)創(chuàng)建其他兩個(gè)分區(qū)。分區(qū)創(chuàng)建完成后,我們應(yīng)該有類(lèi)似如下的輸出:
# fdisk -l
Device Boot Start End Blocks Id System
/dev/sdb1 1 132 1060258+ 8e Linux LVM
/dev/sdb2 133 264 1060290 8e Linux LVM
/dev/sdb3 265 396 1060290 8e Linux LVM
準(zhǔn)備物理卷(PV)
剛創(chuàng)建的分區(qū)是用來(lái)儲(chǔ)存物理卷的。LVM可以使用不同大小的物理卷。
# pvcreate /dev/sdb1
# pvcreate /dev/sdb2
# pvcreate /dev/sdb3
使用下列命令檢查物理卷的創(chuàng)建情況。下面截取部分輸出。”/dev/sdb2″是一個(gè)新的”1.01 GiB”物理卷。
# pvdisplay
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 1.01 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID jszvzz-ENA2-g5Pd-irhV-T9wi-ZfA3-0xo092
使用下列命令可以刪除物理卷。
# pvremove /dev/sdb1
準(zhǔn)備卷組(VG)
下列命令用來(lái)創(chuàng)建名為’volume-group1’的卷組,使用/dev/sdb1, /dev/sdb2 和 /dev/sdb3創(chuàng)建。
# vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3
使用下列命令可以來(lái)驗(yàn)證卷組。
# vgdisplay
--- Volume group ---
VG Name volume-group1
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 3.02 GiB
PE Size 4.00 MiB
Total PE 774
Alloc PE / Size 0 / 0
Free PE / Size 774 / 3.02 GiB
VG UUID bwd2pS-fkAz-lGVZ-qc7C-TaKv-fFUC-IzGNBK
從輸出中,我們可以看見(jiàn)卷組的使用量/總量。物理卷給卷組提供空間。只要在這個(gè)卷組中還有可用空間,我們就可以隨意創(chuàng)建邏輯卷。
使用下列命令刪除卷組。
# vgremove volume-group1
創(chuàng)建邏輯卷(LV)
下列命令創(chuàng)建一個(gè)名為’1v1’、大小為100MB的邏輯卷。我們使用小分區(qū)減少執(zhí)行時(shí)間。這個(gè)邏輯卷使用之前創(chuàng)建的卷組的空間。
# lvcreate -L 100M -n lv1 volume-group1
邏輯卷可使用lvdisplay命令查看。
# lvdisplay
--- Logical volume ---
LV Name /dev/volume-group1/lv1
VG Name volume-group1
LV UUID YNQ1aa-QVt1-hEj6-ArJX-I1Q4-y1h1-OFEtlW
LV Write Access read/write
LV Status available
# open 0
LV Size 100.00 MiB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
現(xiàn)在邏輯卷已經(jīng)準(zhǔn)備好了,我們可以格式化和掛載邏輯卷,就像其它ext2/3/4分區(qū)一樣!
# mkfs.ext4 /dev/volume-group1/lv1
# mkdir /lvm-mount
# mount /dev/volume-group1/lv1 /lvm-mount/
一旦邏輯卷掛載,我們就可以到掛載點(diǎn) /lvm-mount/ 上讀寫(xiě)了。要?jiǎng)?chuàng)建和掛載其它的邏輯卷,我們重復(fù)這個(gè)過(guò)程。
最后,使用lvremove我們可以刪除邏輯卷。
# umount /lvm-mount/
# lvremove /dev/volume-group1/lv1
擴(kuò)展一個(gè)LVM卷
調(diào)整邏輯卷大小的功能是LVM最有用的功能。這個(gè)部分會(huì)討論我們?cè)趺礃訑U(kuò)展一個(gè)存在的邏輯卷。下面,我們將會(huì)擴(kuò)展先前創(chuàng)建的邏輯卷‘lv1’擴(kuò)大到200MB。
注意,調(diào)整邏輯卷大小之后,也需要對(duì)文件系統(tǒng)調(diào)整大小進(jìn)行匹配。這個(gè)額外的步驟各不相同,取決于創(chuàng)建文件系統(tǒng)的類(lèi)型。在本文中,我們使用’lv1’創(chuàng)建了ext4類(lèi)型的文件系統(tǒng),所以這里的操作是針對(duì)ext4文件系統(tǒng)的。(ext2/3文件系統(tǒng)也類(lèi)同)。命令的執(zhí)行順序是很重要的。
首先,我們卸載掉lv1卷
# umount /lvm-mount/
然后,設(shè)置卷的大小為200M
# lvresize -L 200M /dev/volume-group1/lv1
接下來(lái),檢查磁盤(pán)錯(cuò)誤
# e2fsck -f /dev/volume-group1/lv1
運(yùn)行以下命令擴(kuò)展文件系統(tǒng)以后,ext4信息就更新了。
# resize2fs /dev/volume-group1/lv1
現(xiàn)在,這個(gè)邏輯卷應(yīng)該已經(jīng)擴(kuò)展到200MB了。我們檢查L(zhǎng)V的狀態(tài)來(lái)驗(yàn)證。
# lvdisplay
--- Logical volume ---
LV Name /dev/volume-group1/lv1
VG Name volume-group1
LV UUID 9RtmMY-0RIZ-Dq40-ySjU-vmrj-f1es-7rXBwa
LV Write Access read/write
LV Status available
# open 0
LV Size 200.00 MiB
Current LE 50
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
現(xiàn)在,這個(gè)邏輯卷可以再次掛載,同樣這個(gè)方法也可用于其他分區(qū)。
縮減一個(gè)LVM卷
這章節(jié)介紹縮減LVM卷大小的方法。命令的順序同樣重要。并且,下列命令對(duì)ext2/3/4文件系統(tǒng)同樣有效。
注意減少邏輯卷的大小值若小于儲(chǔ)存的數(shù)據(jù)大小,存儲(chǔ)在后面的數(shù)據(jù)會(huì)丟失。
首先,卸載掉卷。
# umount /dev/volume-group1/lv1
然后,檢測(cè)磁盤(pán)錯(cuò)誤。
# e2fsck -f /dev/volume-group1/lv1
接下來(lái)縮小文件系統(tǒng),更新ext4信息。
# resize2fs /dev/volume-group1/lv1 100M
完成以后,減少邏輯卷大小
# lvresize -L 100M /dev/volume-group1/lv1
WARNING: Reducing active logical volume to 100.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv1? [y/n]: y Reducing logical volume lv1 to 100.00 MiB Logical volume lv1 successfully resized
最后,驗(yàn)證調(diào)整后的邏輯卷大小。
# lvdisplay
--- Logical volume ---
LV Name /dev/volume-group1/lv1
VG Name volume-group1
LV UUID 9RtmMY-0RIZ-Dq40-ySjU-vmrj-f1es-7rXBwa
LV Write Access read/write
LV Status available
# open 0
LV Size 100.00 MiB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
擴(kuò)展一個(gè)卷組
本節(jié)將討論擴(kuò)展卷組的方法,將一個(gè)物理卷添加到卷組。讓我們假設(shè)我們的卷組’volume-group1’已經(jīng)滿了,需要擴(kuò)大。手上的硬盤(pán)(sdb)已經(jīng)沒(méi)有其他空閑分區(qū),我們添加了另外一個(gè)硬盤(pán)(sdc)。我們將看到如何把sdc的分區(qū)添加到卷組以擴(kuò)展。
檢測(cè)現(xiàn)在卷組狀態(tài)
# vgdisplay volume-group1
--- Volume group ---
VG Name volume-group1
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 3.02 GiB
PE Size 4.00 MiB
Total PE 774
Alloc PE / Size 25 / 100.00 MiB
Free PE / Size 749 / 2.93 GiB
VG UUID bwd2pS-fkAz-lGVZ-qc7C-TaKv-fFUC-IzGNBK
首先,我們創(chuàng)建一個(gè)2GB分區(qū)sdc1,類(lèi)型為L(zhǎng)VM(8e),如教程前所述。
# fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +2G
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
然后,我們創(chuàng)建一個(gè)物理卷 /dev/sdc1
# pvcreate /dev/sdc1
現(xiàn)在,物理卷已經(jīng)準(zhǔn)備好了,我們可以簡(jiǎn)單地將它增加到已存在的卷組’volume-group1’上。
# vgextend volume-group1 /dev/sdc1
使用vgdisplay來(lái)驗(yàn)證(可以看到卷組大小已經(jīng)增大)。
# vgdisplay
--- Volume group ---
VG Name volume-group1
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 4
Act PV 4
VG Size 5.03 GiB
PE Size 4.00 MiB
Total PE 1287
Alloc PE / Size 25 / 100.00 MiB
Free PE / Size 1262 / 4.93 GiB
VG UUID bwd2pS-fkAz-lGVZ-qc7C-TaKv-fFUC-IzGNBK
注意,盡管我們使用一個(gè)單獨(dú)的磁盤(pán)做示范,其實(shí)只要是‘8e’類(lèi)型的磁盤(pán)分區(qū)都可以用來(lái)擴(kuò)展卷組。
總結(jié)一下,LVM是一個(gè)非常給力的工具,用來(lái)創(chuàng)建和管理可變大小的分區(qū)。本文中,我們已經(jīng)介紹了動(dòng)態(tài)分區(qū)如何在LVM中創(chuàng)建和使用。我們也介紹了擴(kuò)展/縮小邏輯卷和卷組的方法,和如何增加一個(gè)新的磁盤(pán)到LVM。
當(dāng)前名稱(chēng):詳解邏輯卷管理器LVM
本文來(lái)源:http://www.dlmjj.cn/article/djicodd.html


咨詢
建站咨詢
