LVM邏輯卷管理及快照卷

一、LVM2簡介

LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它由Heinz Mauelshagen在Linux 2.4內核上實現。LVM將一個或多個硬盤的分區在邏輯上集合,相當於一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對於普通的磁盤分區有很大的靈活性。與傳統的磁盤與分區相比,LVM爲計算機提供了更高層次的磁盤存儲。它使系統管理員可以更方便的爲應用與用戶分配存儲空間。在LVM管理下的存儲卷可以按需要隨時改變大小與移除(可能需對文件系統工具進行升級)。LVM也允許按用戶組對存儲捲進行管理,允許管理員用更直觀的名稱(如"sales'、'development')代替物理磁盤名(如'sda'、'sdb')來標識存儲卷。

如圖所示LVM模型:

wKioL1Uibuqh82J8AAC1aO9L8Yk981.jpg


由四個物理卷分區可以組成一個很大的空間,叫做卷組VG,然後在這些空間上劃分一些邏輯分區【LV】,當一個邏輯分區的空間不夠用的時候,可以從剩餘空間上劃分一些空間給空間不夠用的分區使用。


二、LVM基本術語

物理卷(Physical Volume,PV)

指磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。

卷組(Volume Group,VG)

類似於非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成。可以在卷組上創建一個或多個LV(邏輯卷)。

邏輯卷(Logical Volume,LV)

類似於非LVM系統中的磁盤分區,邏輯卷建立在卷組VG之上。在邏輯卷LV之上可以建立文件系統(比如/home或者/usr等)。

物理塊(Physical Extent,PE)

每一個物理卷PV被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。所以物理卷(PV)由大小等同的基本單元PE組成。

邏輯塊(Logical Extent,LE)

邏輯卷LV也被劃分爲可被尋址的基本單位,稱爲LE。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。

metadisk:dm

devicemapper,將一個或多個底層塊設備組織一個邏輯設備的模塊

lv的三個訪問路徑:

設備文件/dev/dm-#: 每個文件都有兩個符號鏈接

/dev/mapper/VG_NAME-LV_NAME

/dev/VG_NAME/LV_NAME

快照:snapshot

 

三、創建和管理LVM

1、創建邏輯卷步驟:pv--> vg --> lv  【     PE大小是由vg決定的】

               例如:創建一個10G的卷組:

pv1:3G,pv2:7G   或者pv1: 10G

 

2、管理PV;

(1).創建磁盤分區

#fdisk/dev/sd[ab..]---->將分區格式調整爲8e--->讓內核重讀分區表

注意:將分區的格式調整爲8e

 

(2).創建物理卷【 pvcreate /dev/DEVICE】

#pvcreate /dev/sdb7

 

(4). 查看是否創建成功

#PvdisplayPV_NAME詳細信息 

#pvs顯示所有物理卷的簡要信息

 

(5).移除物理卷 【pvremove /dev/DEVICE】

#pvremove/dev/sdb7

 

3、管理VG;

(1).創建VG:【vgcreateVG_NAME PV...】 選項:-s #{kKmMgGtTpPeE}:指定PE大小,默認爲4MB;

#vgcreatemyvg[卷組名稱]  /dev/sdb6【物理卷名稱】

 

(2).顯示創建的卷組

#vgs

 

(3).擴展VG並驗證 【vgextendVG_NAME PV...】

#vgextendmyvg /dev/sdb7

#vgs

 

(4).縮小VG[或刪除PV] 【vgreduceVG_NAME PV...】

     a.移動PV數據

     #pvmove /dev/sdb6

    

b.縮減VG

     #vgreduce myvg /dev/sdb6

 

c.驗證是否成功

     #vgs

 

d.移除PV

     #pvremove /dev/sdb7

 

注意:先執行pvmove操作,以確保位於此PV上的數據能安全移動至其它PV;

 

(5).顯示VG信息

#vgdisplayVG_NAME

 

4、管理LV:

(1).顯示創建的LV

#lvs

 

(2).創建LV 【 lvcreate[OPTIONS] VG_NAME ; -n LV_NAME  ; -L#{kKmMgGtTpPeE} 】

#lvcreate-L 2G -n mylv [指定的LV的名字] myvg[VG的名稱]

 

(3).創建文件系統

#mkfs-t ext4  /dev/mapper/myvg-mylv

或者另外的路徑:#mkfs -t ext4  /dev/myvg/mylv

 

 

(4).掛載使用

#mkdir/users

#mount/dev/mapper/myvg-mylv /users/

#ls/users/  查看內容是否掛載

 

(5).查看創建的LV大小:

#df-lh

 

(6).查看LV信息

#lvdisplay  myvg[注意是VG的名稱]

或者#lvdisplay  /dev/myvg/mylv

#lvg顯示所有的LV

 

 

(7).擴展LV

lvextend/dev/VG_NAME/LV_NAME

   -L : +[擴展多少];不用+號則爲,擴展到多少

 

例如:將LV擴展到3G

a.擴展lv大小到3G

#lvextend -L3G /dev/myvg/mylv

 

b.修改文件系統使用所有包含擴展的空間

#resize2fs/dev/myvg/mylv

 

c.查看驗證是否生效:

#df -lh

步驟思路總結:

(1) 擴展物理邊界

      lvextend

(2) 擴展邏輯邊界

      resize2fs

(8)收縮LV:lvreduce,lvresize

lvreduce-L [-]#{kKmMgGtTpPeE} /dev/VG_NAME/LV_NAME

 

步驟思路:

a.先離線【卸載】

umount/users

 

b.強制檢測文件系統【ext系列爲例】

e2fsck-f /dev/myvg/mylv

 

c.收縮邏輯邊界

resize2fs/dev/myvg/mylv 1G

 

d.收縮物理邊界

lvreduce-L 1G /dev/myvg/mylv

 

e.上線掛載

mount/dev/myvg/mylv /users/

 

注意:收縮lv,要卸載lv;收縮後空間要能夠容納當前的所有數據量;

 

(9).刪除LV

lvremove[-f] /dev/VG_NAME/LV_NAME

 

a.先卸載LV,並驗證

#umount/users

#mount或cat /proc/mounts 查看驗證是否卸載生效

 

b.移除

#lvremove/dev/myvg/mylv

 

四、快照卷:【原理請參考:http://blog.csdn.net/woxiaozhi/article/details/11773101】

lvcreate -L #{kKmMgGtTpPeE} -s -p r -nSNAP_LV_NAME /dev/VG_NAME/LV_NAME

 

提示:快照卷與原卷在同一個卷組中,因此,創建快照卷之前要確保原卷所在的卷組中有足夠空間可用;

  快照卷無須與原卷一樣大;其大小取決於快照卷的存活時長內原卷的數據變化量;

 

1.創建邏輯卷LVM快照卷並掛載

#lvcreate -L 3G -n mylv myvg

#mke2fs /dev/myvg/mylv -t ext4

#mount /dev/myvg/mylv /users

 

2.複製文件做驗證

#cp -a /etc/* /users

#ls /users

 

3.備份/users目錄

#lvcreate -L 100M -s -p r -n mylv-snap/dev/myvg/mylv

#lvs

 

4.掛載快照卷至/mnt

#mount -t ext4 /dev/myvg/mylv-snap /mnt

#ls /mnt 看到數據與/users目錄一樣的

 

5.在原卷中修改數據並驗證掛載的快照卷是否修改

#vim /users/fstab

#cat /mnt/fstab 快照還是沒有修改

 

6.等數據全部複製完成,刪除快照卷即可

a.卸載

#umount /mnt


b.刪除

#lvremove -f /dev/myvg/mylv-snap




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章