一、什麼是LVM
邏輯卷管理器,LVM是Linux環境中對磁盤分區進行管理的一種機制,是建立在硬盤和分區之上、文件系統之下的一個邏輯層,可提高磁盤分區管理的靈活性。LVM的作法是將幾個物理的分區(或磁盤)通過軟件組合成爲一塊看起來是獨立的大磁盤(VG),然後將這塊大磁盤再分成爲可使用的分區(LV),最終就能夠掛載使用了。
二、LVM的相關概念
PhysicalVolume,PV,物理卷:物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID), 是 LVM的基 本存儲邏輯塊。
Volume,VG,卷組:所謂的LVM大磁盤就是將許多PV整合成這個VG,所以VG就是LVM組合起來的大磁盤。
Physical Extend,PE,物理擴展塊:每一個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的 最小單元。PE 的大小是可配置的,默認爲4MB。
Logical Volume,LV,邏輯卷:LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
三、創建LVM邏輯卷的具體過程
1、創建物理文件系統,並將其文件系統類型設置爲lvm,分區時修改文件系統類型爲8e,如下:
以上爲我們要創建LVM邏輯卷準備的兩個分區。
2、創建物理卷(PV),我們來看下和PV相關的命令:
pvcreate:將物理分區創建成爲物理卷(PV),創建命令;
pvscan:查詢目前系統裏面任何具有PV的磁盤;
pvdisplay:顯示出目前系統上面的PV狀態;
pvremove:將PV屬性刪除,讓該分區不具有PV屬性;
下面我看來創建PV吧,其實非常簡單了。
[root@lab02 ~]# pvcreate /dev/sd{c,d}3 [root@lab02 ~]# pvscan
[root@lab02 ~]# pvdisplay /dev/sd{c,d}3
查看當前的PV狀態, /dev/sd{c,d}3 指定查看那個sdc3、sdd3的PV狀態,如果不指定即查看所有PV狀態。這樣我們的PV就創建好了,分別是sdc3、sdd3!
查看PV的簡要信息,看到和上面命令的區別了吧!
3、創建卷組(VG),我們來看下和VG相關的命令:
vgcreate:創建VG的命令;
vgscan:查找系統上面是否有VG存在;
vgdisplay:顯示目前系統上面的VG狀態;
vgextend:在VG內增加額外的PV;
vgreduce:在VG內刪除PV;
vgchange:設置VG是否啓動;
vgremove:刪除一個VG;
格式:vgcreate [-s N[mgt]] VG名稱 PV名稱
參數:
-s:後面接PE的大小(size),單位可以是m,g,t(大小寫均可)默認爲4MB
[root@lab02 ~]# vgcreate -s 8M test_vg /dev/sd{c,d}3 [root@lab02 ~]# vgscan
[root@lab02 ~]# vgdisplay test_vg
查看當前的PV狀態,這裏就不多做解釋了!
[root@lab02 ~]# vgs
大家應該可以看明白吧,和之前介紹的pvs差不多哦!從這裏可以看到,我們的VG已經創建好了,將之前創建的兩個PV的大小,整合到一起了,我們新建的VG大小爲10G。
4、創建邏輯卷(LV),我們來看下和LV相關的命令:
lvcreate :新建LV;
lvscan:查詢系統上面的LV;
lvdisplay:顯示系統上面的LV狀態;
lvextend:在LV裏面增加容量;
lvreduce:在LV裏面減少容量;
lvremove:刪除一個LV;
lvresize:對LV進行容量大小的調整;
我們來創建一個LV吧!
格式:lvcreate [-L N[mgt]] [-n LV名稱] [VG名稱]
參數:
-L:後面接容量,容量的單位可以是M,G,T等,最小單位爲PE,這個單位必須是PE的倍數,若不相符,系統自動計算相近的容量。
-l:後面接PE的個數,而不是數量
-n:後面接的就是LV的名稱。
創建一個4G大小的LV吧,看看如何創建。
[root@lab02 ~]# lvcreate -L 4G -n my_lv test_vg # 創建大小爲4G的LV [root@lab02 ~]# lvscan # 查看系統上面的LV [root@lab02 ~]# lvs # 查看LV簡要信息。
[root@lab02 ~]# lvdisplay /dev/test_vg/my_lv
LV 到這裏我們也創建好了,下面我們就來對新創建的LV進行格化、掛載等操作吧,這裏我就不對格式化掛載等操作進行過多的解釋了,我們直接來操作吧。要注意VG的全稱是test_vg;LV的名稱必須要使用全名,/dev/test_vg/my_lv這樣纔對哦,所以千萬不要格式化錯了哦,路徑要選對哦!
[root@lab02 ~]# mke2fs -t ext4 /dev/test_vg/my_lv [root@lab02 /]# mount /dev/test_vg/my_lv /mnt
從上圖可以看出,我們已經成功把my_lv掛載到了/mnt目錄下,通過df命令也可以查看到大小爲4G。到這裏lvm的基本內容就講解完了,下面我們還看看如何擴展VG、縮減VG、擴展LV、縮減LV以及快照卷等用法。
5、擴展VG的容量
[root@lab02 ~]# fdisk -l /dev/sdb | grep sdb9 [root@lab02 ~]# vgs [root@lab02 ~]# pvcreate /dev/sdb9 [root@lab02 ~]# vgextend test_vg /dev/sdb9
通過上圖可以看出擴展VG的容量擴展了2G,應該不難理解吧。下面我們在來看看如何縮減VG。
6、縮減VG的容量
[root@lab02 ~]# pvmove /dev/sdc3 [root@lab02 ~]# vgreduce test_vg /dev/sdc3 [root@lab02 ~]# pvremove /dev/sdc3
現在我們VG的容量,已經減少到7G了,到這裏我們就能看到使用LVM的好處了吧。下面我們繼續往下看!
7、擴展邏輯卷(LV)
[root@lab02 ~]# lvextend -L +2G /dev/test_vg/my_lv [root@lab02 ~]# resize2fs /dev/test_vg/my_lv
在次查看LV容量,已經增加到6G,至此完成了LV容量的擴展。
8、縮減邏輯卷(LV)
[root@lab02 ~]# resize2fs /dev/test_vg/my_lv 3G [root@lab02 ~]#lvreduce -L 3G /dev/test_vg/my_lv
LV容量已經縮減到3G,完成LV容量的縮減。
注:這裏在提一個,進行LV擴展、縮減操作時最好對文件系統進行檢查,以免出現問題。可以通過e2fsck命令進行檢查。
9、快照卷
LVS快照就是將當時的系統信息記錄下來,就好像照相記錄一樣。將來若有任何數據改動了,則原始數據會被移到快照區,沒有被動的區域則由快照區與文件系統共享。下面我們來看一個創建快照的過程吧,其實很簡單。
[root@lab02 ~]# lvcreate -L 100M -s -p r -n my_lv-snap /dev/test_vg/my_lv [root@lab02 ~]# ls /dev/test_vg [root@lab02 ~]# mount -o ro /dev/test_vg/my_lv-snap /media
10、刪除LV、VG、PV
lvremove
vgremove
pvremove
例:將剛剛創建的my_lv-snap快照刪除。
# lvremove /dev/test_vg/my_lv-snap 這樣就可以了,簡單吧,VG、PV刪除都是一樣的,在這裏就不舉例了。
總結:本文介紹了關於LVM的相關概念,並詳細的講解了物理卷(PV)、卷組(VG)、邏輯卷(LV)的創建,物理卷(VG)的擴展與縮減,邏輯卷(LV)的擴展與縮減。最後簡單介紹瞭如何創建快照卷等功能,希望對大家有所幫助!