1. 程式人生 > 實用技巧 >LVM的基本認識及使用

LVM的基本認識及使用


Logical Volume Manager

LVM是在物理裝置的基礎上,建立邏輯儲存裝置,邏輯儲存裝置可以隨意擴充,或縮減

功能

1、根據需求動態擴充,或縮減空間

2、實現快照備份

基本結構及概念


·wKiom1XgWKmwvh3bAAICABoEFDE710.jpg


PV pyicalvolume 物理卷,由物理裝置盤區,raid或磁碟組成,

VG volumegroup 卷組,由整數個PV組成,一個PV包含若干個 PE可新增或縮減PV彈性變化

LV: logical volume 邏輯卷,建立在vg上,最大不能超過vg的大小

PE: 最小的物理儲存單位,只有載入到VG上才確定其大小 類似與物理磁碟中的block

LE 在物理捲上叫PE,在邏輯捲上叫

LE,最小的儲存單位,

PV 管理工具

pvs pv summary概要顯示pv資訊

pvdisplay:詳細顯示pv使用情況

pvcreate 建立pv

-f 強制建立pv,不管其是否被劃分到其他的vg中使用

-v verbose 顯示建立過程

-u uuid 基於uuid建立物理卷

pvremove 移除pv,將資料擦去,移除之

pvmove 將資料從該pv上轉移到其他的pv上,以使該pv可以進行其他的移除類操作

pvremove wipes the label on a device so that LVM will no longer recognise it as

a physical volume.

pvscan 探測,掃描該系統上的所有的LVM塊裝置

pvchage:修改物理卷屬性

VG管理工具

vgs 概要顯示vg資訊

vgdisplay 顯示vg的詳細資訊

vgcreate 建立vg

-h|--help 獲取幫助

-s #[bBsSkKmMgGtTpPeE] 設定PE的大小,一旦被建立很難被改變

使用格式如下:

[-t|--test] [-v|--verbose] [--version][PHYSICAL DEVICE OPTIONS] VolumeGroupName pyicalDevicePath [PhysicalDevicePath...]


vgextend 改變vg大小,只能是pv的整數大小。格式如下

-f|--forceVolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

強制改變其大小,一般不要這樣,可能會毀壞資料

vgremove 移除VG,當你的VG不再使用了,可以移除之,如果VG中有PV請先移除之,

如果有邏輯卷存在,會提示你先移除PV,可以使用-f直接覆蓋

vgreduce 允許你從vg移除一個或更多未使用的pv

[-v|--verbose] VolumeGroupName [PhysicalVolumePath...]


LV邏輯卷,邏輯卷,邏輯卷只能在所在的vg中動態擴充,或縮減。

lvcreate 邏輯卷的建立,使用現有的邏輯卷組空間建立,

-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE

-L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE

-n|--name LogicalVolume{Name|Path}

-s|--snapshot [VolumeGroup{Name|Path} ExternalOriginLogicalVolumeName]]

-s snapshot 製作快照卷 [vg{name|path}] 原lv(要做快照的物件) VG{name|path}

-n 為LV命名

lvdisplay 詳細顯示邏輯卷資訊

lvs概要顯示邏輯卷資訊

lvextend 擴充套件邏輯卷,利用現有vg空間擴充lv大小

-l|--extents LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}]

-L|--size[+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]


使用格式:

lvextend optionsLogicalVolumePath[PhysicalVolumePath[:PE[-PE]]...]


lvconvert將邏輯卷轉化為快照,

lvreduce 刪除邏輯卷,刪除邏輯卷時,須確保資料已備份或儲存

snapshot 儲存的只是變化了的資料,未變化的資料還在原來的儲存空間的

快照卷 是對磁碟某一個時刻的資料進行儲存,它儲存的只是變化了的資料

對磁碟儲存資料過程的時間很短,只在一瞬間,因此,基本上是完成資料,在儲存過程中變化的資料不能儲存,其和快照後的資料可以通過增量備份實現其儲存

快照卷也可以作為訪問資料的一個入口,因此只能存在與和要儲存的卷的組中,不能跨組

但只能訪問快照時刻的資料、

快照後的資料不會儲存到快照卷中,

其實現過程中不能格式化資料

具體實現命令

lvcreate–s –L #{kmgtpe} –n SNAPSHOT_NAME OriginalLogicalVolumeName

二、邏輯卷與快照卷功能的實現

1:建立一個至少有兩個PV組成的大小為10G的名為testvgVG;要求PE大小為16MB, 而後在卷組中建立大小為5G的邏輯卷testlv;掛載至/users目錄;

1、 要想建立pv必須要有可建立的物理裝置,因此先建立兩個5G的硬碟sdb1,sdb2,且將磁碟格式轉化成8e lvm格式,以供建立lvm使用省略

2、 建立物理卷

#pvcreate/dev/sdb{1,2}
Physicalvolume"/dev/sdb1"successfullycreated
Physicalvolume"/dev/sdb2"successfullycreated

3、建立大小10G PE 16MB 的VGtestvg

#vgcreate-s16mtestvg/dev/sdb{1,2}
Volumegroup"testvg"successfullycreated

4、建立大小為5G的testlv

#lvcreate-ntestlv-L5Gtestvg
Logicalvolume"testlv"created
#lvs
LVVGAttrLSizePoolOriginData%Meta%MoveLogCpy%SyncConvert
testlvtestvg-wi-a-----5.00g

5、對/dev/testvg/testlv進行格式化

mkfs.ext4/dev/testvg/testlv

掛載到已建立的/users 目錄下如此這樣就可以使用testlv空間了了

2:新建使用者archlinux,要求其家目錄為/users/archlinux,而後su切換至archlinux使用者,復 制/etc/pam.d目錄至自己的家目錄;

[[email protected]~]$cp-r/etc/pam.d//users/archlinux/

3:擴充套件testlv至7G,要求archlinux使用者的檔案不能丟失;

#lvextend-L7G/dev/testvg/testlv
#resize2fs-p/dev/testvg/testlv

#擴充套件邏輯邊界

4:收縮testlv至3G,要求archlinux使用者的檔案不能丟失;

縮減時,應先縮減其邏輯邊界,在縮減其物理邊界,而且不能線上縮減,需先解除安裝,還要強制進行磁碟檢測,而且要確保縮減後的空間能承載現有資料,否則會出錯!

1) 解除安裝,略

2) 縮減其邏輯邊界

#e2fsck-f/dev/testvg/testlv
#resize2fs-p/dev/testvg/testlv3G

3) 縮減其物理邊界

#lvreduce-L3G/dev/testvg/testlv

4)重新掛載並使用

5、對testlv建立快照,並嘗試基於快照備份資料,驗正快照的功能;

建立快照卷

#lvcreate-L3G-s/dev/testvg/testlv-nshotlv
#lvcreate-L3G-s/dev/testvg/testlv-nshlv

掛載到/media目錄下

#mount/dev/testvg/shlv/media
#ls/mediaarchlinuxlost+found

修改原資料

#cd/users/
#mkdirtom
#ls/users
archlinuxlost+foundtom


快照卷資料並未改變

#ls/media
archlinuxlost+found


刪除原資料

#rm-rf/users/*


將快照卷原樣複製到原目錄下,將原目錄下的資料恢復到快照時刻的樣子,實現了資料的基礎備份

#cp-af/media/*/users/
#ls/users
archlinuxlost+found


6、建立一個由兩個物理卷組成的大小為5G的卷組裝置,要求其PE大小為16M;而後在此卷組中建立一個大小為2G的邏輯卷lv1,此邏輯卷要能在開機後自動掛載至/users目錄;

#pvcreate/dev/sda{5,6}
Physicalvolume"/dev/sda5"successfullycreated
Physicalvolume"/dev/sda6"successfullycreated
#vgcreate-s16Mmyvg/dev/sda{5,6}
Volumegroup"myvg"successfullycreated
#vgs
VG#PV#LV#SNAttrVSizeVFree
myvg200wz--n-10.00g10.00g
#lvcreate-L2G-nLV1/dev/myvg
Logicalvolume"LV1"created
#mkfs.ext4/dev/myvg/LV1
#vim/etc/fstab
/dev/myvg/LV1/usersext4defaults00
~
"/etc/fstab"18L,963C
#mount-a


通過以上例項,大概可體現LVM 的基本使用格式及功用


轉載於:https://blog.51cto.com/fallcamel/1689405