2021-05-12 14:32:11
LVM邏輯卷-建立、擴容、縮減、遷移、快照
LVM邏輯卷
邏輯卷管理工具,允許在多個物理裝置之間重新組織檔案系統,包括重新設定檔案系統的大小
PE 物理盤區,類似於磁碟中的block
邏輯卷的基本儲存單位就是PE
dm:device mapper將一個或多個底層塊裝置組織成一個邏輯裝置的模組
裝置名:/dev/dm-# //系統自動分配,常用軟連結定義
軟連結:兩種方式表示
/dev/mapper/卷組-邏輯卷
/dev/卷組/邏輯卷
LVM可以彈性的修改容量
基本概念:
pv //物理卷
vg //卷組
lv //邏輯卷
本次實驗使用CentOS6版本,並在vmware虛擬機器上操作
實驗一 建立邏輯卷
第1步:準備三個磁碟sdb、sdc、sdd,建立物理卷
[root@CentOs6 ~]#fdisk /dev/sdb #使用fdisk命令對磁碟sdb分割區
Device Boot Start End Blocks Id System
/dev/sdb1 1 132 1060258+ 8e Linux LVM
#因為是實驗這裡只分1G容量,system型別修改成LVM
dd if=/dev/sdb of=/dev/sdc bs=1 count=512
dd if=/dev/sdb of=/dev/sdd bs=1 count=512
#將sdb的分割區表複製到sdc和sdd,這樣三塊磁碟分割區一致
partx -a /dev/sd{b,c,d} #同步磁碟與記憶體資訊
lsblk #檢查同步結果
#上面步驟,我們從三塊磁碟取出三個大小、型別一樣的分割區/dev/sdb1、 /dev/sdc1和/dev/sdd1
[root@CentOs6 ~]#pvcreate /dev/sd{b,c,d}1 #建立3個物理卷pv
[root@CentOs6 ~]#pvs #檢視物理捲摘要資訊
PV VG Fmt Attr PSize PFree #VG為空,是因為我們還沒建立卷組
/dev/sdb1 lvm2 ---- 1.01g 1.01g
/dev/sdc1 lvm2 ---- 1.01g 1.01g
/dev/sdd1 lvm2 ---- 1.01g 1.01g
[root@CentOs6 ~]#pvdisplay /dev/sdb1
#pvdisplay顯示詳細的物理卷資訊,此處只列出一個物理卷分析
"/dev/sdb1" is a new physical volume of "1.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1 #物理捲名稱
VG Name #因為沒加入捲組,所以此處為空
PV Size 1.01 GiB #物理卷容量,跟我們規劃的一樣
Allocatable NO #因為還未加入捲組,所以下面選項為空
PE Size 0 #PE是物理捲的基本容量單位
Total PE 0
Free PE 0
Allocated PE 0
PV UUID iRkKni-iG3a-U38w-bXGn-aIGV-bP14-Pua8bc
第2步:建立卷組,其容量為各個物理卷的總和
[root@CentOs6 ~]#vgcreate v-group /dev/sd{b,c,d}1
#建立包含3個分割區的捲組,名稱為v-group
Volume group "v-group" successfully created
[root@CentOs6 ~]#vgs #顯示卷組的摘要資訊
VG #PV #LV #SN Attr VSize VFree
v-group 3 0 0 wz--n- 3.02g 3.02g
[root@CentOs6 ~]#vgdisplay #顯示卷組的詳細資訊
--- Volume group ---
VG Name v-group #捲組名稱
VG Access read/write #卷組的存取形式是讀寫
VG Status resizable #捲組容量大小可調
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0 #未建立邏輯卷,所以包含LV選項的全為0
Cur PV 3
Act PV 3
VG Size 3.02 GiB #捲組容量,3個分割區容量的累加
PE Size 4.00 MiB #PE是基本容量單位,預設大小為4MiB
Total PE 774 #PE總數量,其與PE大小相乘就是VG大小
Alloc PE / Size 0 / 0 #已經分配給邏輯卷的PE
Free PE / Size 774 / 3.02 GiB #剩餘PE,因為還沒有建立邏輯卷
VG UUID aD3P8j-tNnP-KyXK-shWB-caTh-sCq8-j8B4qd
第3步:建立邏輯卷
[root@CentOs6 ~]#lvcreate -n logical-v -L 2G v-group #建立2G大小的邏輯卷
Logical volume "logical-v" created.
[root@CentOs6 ~]#lvs #顯示邏輯卷的摘要資訊
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
logical-v v-group -wi-a----- 2.00g
[root@CentOs6 ~]#lvdisplay
--- Logical volume ---
LV Path /dev/v-group/logical-v #邏輯卷的物理路徑
LV Name logical-v #邏輯卷名稱
VG Name v-group #邏輯卷所在的捲組
LV UUID zEU9qJ-fP3E-H2Dv-iULd-06Gy-yzH4-EnIwdw
LV Write Access read/write
LV Creation host, time CentOs6.gao, 2017-08-12 09:42:53 +0800
LV Status available #邏輯卷可用
# open 0
LV Size 2.00 GiB #邏輯卷大小2G
Current LE 512 #當前使用的
#至此邏輯卷就建立完成。使用上文提到的命令檢視物理卷、卷組資訊會發現,建立完lv後好多資訊條目都更新了
[root@CentOs6 ~]#ll /dev/v-group/logical-v
lrwxrwxrwx. 1 root root 7 Aug 12 09:42 /dev/v-group/logical-v -> ../dm-0
#lv名稱其實是軟連結,指向的是我們前文說過的dm-#
第4步:將lv當作一塊獨立磁碟進行格式化、掛載、讀寫操作
1234 [root@CentOs6 ~]#mkdir /mnt/lv #建立掛載點目錄
[root@CentOs6 ~]#mkfs.ext4 /dev/v-group/logical-v #格式化成ext4檔案系統
[root@CentOs6 ~]#mount /dev/v-group/logical-v /mnt/lv/ #掛載
最後就可以進行讀寫操作了
整個過程是按照下述流程操作:
準備磁碟--建立物理卷--建立卷組--建立邏輯卷
實驗二 擴充套件邏輯卷、縮減邏輯卷
擴充套件邏輯卷對使用者是透明的,lv一直是掛載狀態
[root@CentOs6 ~]#lvextend -L +256M /dev/v-group/logical-v
#對邏輯卷logical-v擴充套件256M的容量,前提是捲組還有足夠的剩餘空間
[root@CentOs6 ~]#df -h /dev/mapper/v--group-logical--v
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/v--group-logical--v
2.0G 3.1M 1.9G 1% /mnt/lv
#df -h檢視發現,lv實際大小還是2G,並未增加256M,是因為檔案系統未同步
[root@CentOs6 ~]#resize2fs /dev/mapper/v--group-logical--v
root@CentOs6 ~]#df -h /dev/mapper/v--group-logical--v
#同步檔案系統,因為我們實驗用的是ext4檔案系統,所以使用sesize2fs來同步,如果是xfs檔案系統則需要使用命令xfs_growfs來同步
#我們每次對lv進行擴充套件操作後都要記得同步檔案系統
#最後再次df檢查
[root@CentOs6 ~]#lvextend -r -L +256M /dev/v-group/logical-v
#上述命令更簡單,在擴充套件lv同時同步檔案系統,一步搞定
#只要加上 -r 選項
如果還有一個分割區想要加入vg,比如/dev/sdb2,可以使用下述方法:
pvcreate /dev/sdb2
vgextend v-group /dev/sdb2
#只需要這兩步即可
邏輯卷縮減其實就是將一個邏輯卷占用的PE空間縮減,這樣做一般會有風險,因為縮減的空間可能有資料。所以如果一定要縮減的話建議先備份。本實驗環境無所謂
第1步:取消掛載邏輯卷
12 [root@CentOs6 ~]#umount /mnt/lv/
[root@CentOs6 ~]#df #已經檢視不到lv信了
第2步:檢查檔案系統完整性 fsck -f
[root@CentOs6 ~]#e2fsck -f /dev/v-group/logical-v
#這一步必須得做
第3步:縮減檔案系統
[root@CentOs6 ~]#resize2fs /dev/v-group/logical-v 1G
#縮減檔案系統容量為1G
第4步:縮減邏輯卷
[root@CentOs6 ~]#lvreduce -L 1G /dev/v-group/logical-v
#縮減邏輯卷容量為1G
#縮減fs或者lv時都會有警告提示,所以要考慮清楚再行動,做實驗就沒關係了
第5步:重新掛載
[root@CentOs6 ~]#mount /dev/v-group/logical-v /mnt/lv/
[root@CentOs6 ~]#df -h
#最後掛載,df檢測,此外還可以使用vgdisplay、lvdisplay檢查邏輯卷是否縮減
注意:
xfs檔案系統不支援縮減
實驗三 遷移卷組到新系統
源裝置操作:
1、取消掛載卷組中的所有邏輯卷
[root@CentOs6 ~]#umount /mnt/lv/
#取消本機掛載
2、確保捲組名跟目標裝置不一樣
[root@CentOs6 ~]#vgrename v-group newvg0
Volume group "v-group" successfully renamed to "newvg0"
#修改卷組名為newvg0,或者提前檢視目標裝置的捲組名稱,只要不一樣就行
#只要捲組名不一樣就行,邏輯卷名稱可改也可不改
[root@CentOs6 ~]#lvrename /dev/newvg0/logical-v newlv0
Renamed "logical-v" to "newlv0" in volume group "newvg0"
#邏輯捲改名為newlv0
3、設定邏輯卷為非活動狀態,也就是說邏輯卷現在不可用
[root@CentOs6 ~]#vgchange -a n newvg0
0 logical volume(s) in volume group "newvg0" now active
#捲組中0個邏輯卷是活動狀態,-a n表示使邏輯卷無效
[root@CentOs6 ~]#lvdisplay
LV Status NOT available #LV無效
4、匯出捲組
12345 [root@CentOs6 ~]#vgexport newvg0
Volume group "newvg0" successfully exported
#匯出捲組
[root@CentOs6 ~]#pvscan #掃描磁碟物理卷
[root@CentOs6 ~]#pvdisplay #會發現物理卷對應的捲組都是exported狀態
5、拆除硬碟,換到目標裝置上
在vmware上我們把磁碟檔案掛載到目標裝置上
我的是下面這三個虛擬機器磁碟檔案
CentOs6.9CentOS6.9-3.vmdk
CentOs6.9CentOS6.9-4.vmdk
CentOs6.9CentOS6.9-5.vmdk
將這三個檔案新增到目標裝置上,我的目標裝置是centos7
目標裝置操作:
1、掃描發現磁碟
[root@CentOS7 ~]#echo '- - - ' > /sys/class/scsi_host/host2/scan
[root@CentOS7 ~]#lsblk
#掃描磁碟,然後檢查卷組是否存在
2、掃描物理卷,然後匯入捲組
[root@CentOS7 ~]#pvscan #掃描物理卷
PV /dev/sdb1 is in exported VG newvg0 [1.01 GiB / 8.00 MiB free]
PV /dev/sdc1 is in exported VG newvg0 [1.01 GiB / 1.01 GiB free]
PV /dev/sdd1 is in exported VG newvg0 [1.01 GiB / 1.01 GiB free]
Total: 3 [3.02 GiB] / in use: 3 [3.02 GiB] / in no VG: 0 [0 ]
[root@CentOS7 ~]#vgimport newvg0 #匯入捲組,使用新組名
Volume group "newvg0" successfully imported
[root@CentOS7 ~]#vgdisplay newvg0 //檢查卷組資訊
3、啟用邏輯卷
[root@CentOS7 ~]#vgchange -a y newvg0
1 logical volume(s) in volume group "newvg0" now active
[root@CentOS7 ~]#lvdisplay
#啟用邏輯卷,並檢視結果,這裡我只做了一個邏輯卷
#還可以使用blkid、vgdisplay、pvdisplay等命令檢視結果
#其實還可以在原裝置邏輯卷中提前存放一些資料,等遷移完成到目標裝置後,我們再檢視邏輯卷內的資料是否還存在。
實驗四 移除卷組中的磁碟
第1步:將要移除的磁碟的資料移到其他邏輯卷
把資料搬到同一卷組其他邏輯卷,要保證卷組有足夠的空間,搬的是儲存空間,裡面可能有資料
1234567891011121314 [root@CentOS7 ~]#pvmove /dev/sdb1
#把/dev/sdb磁碟PE空間遷移至其他邏輯卷,本實驗1個磁碟上建1個分割區
[root@CentOS7 ~]#pvdisplay /dev/sdb1 #sdb已經沒有空間在使用了
--- Physical volume ---
PV Name /dev/sdb1
VG Name newvg0
PV Size 1.01 GiB / not usable 3.41 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 258
Free PE 258
Allocated PE 0
PV UUID iRkKni-iG3a-U38w-bXGn-aIGV-bP14-Pua8bc
#還可以檢視其他邏輯卷的PE free空間減少,就是因為接收了sdb1轉移的PE
第2步:從捲組中移除物理卷
[root@CentOS7 ~]#vgreduce newvg0 /dev/sdb1 #移除sdb
Removed "/dev/sdb1" from volume group "newvg0"
[root@CentOS7 ~]#vgdisplay #檢視資訊
第3步:從物理卷中移除
[root@CentOS7 ~]#pvremove /dev/sdb1 #移除
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@CentOS7 ~]#pvdisplay
#移除物理卷後,就看不到原物理卷資訊了
實驗五 邏輯卷管理快照
快照是特殊的邏輯卷,快照存放的是改過的檔案的最早的版本,只是備份修改的檔案。快照與對應的邏輯卷必須在同一個捲組,而且恢復時的檔案容量不能超過快照大小
測試環境使用快照較多
生產環境會消耗更多的效能,所以一般不用
第1步:建立快照
[root@CentOS7 ~]#lvcreate -L 100M -s -n snap -p r /dev/newvg0/newlv0
Using default stripesize 64.00 KiB.
Logical volume "snap" created.
#建立快照,-s表示快照,-L指定快照容量,-n是快照名,-p r快照許可權唯讀
#我們對邏輯卷newlv0做快照
[root@CentOS7 ~]#lvdisplay
#此命令可以檢視邏輯卷快照資訊
第2步:掛載快照
1234 [root@CentOS7 ~]#mkdir /mnt/snap
[root@CentOS7 ~]#mount /dev/newvg0/snap /mnt/snap/
mount: /dev/mapper/newvg0-snap is write-protected, mounting read-only
#快照掛載到一個掛載點,掛載時提示防寫,但還是成功掛載,可以df檢視
第3步:使用快照恢復資料
上述步驟對邏輯卷newlv0做了快照,而newlv0掛載到了/mnt/lv目錄下,現在把此目錄下的檔案newlv0刪除然使用快照恢復
[root@CentOS7 ~]#rm -f /mnt/lv/newlv0 #刪除原檔案
[root@CentOS7 ~]#umount /dev/newvg0/snap
[root@CentOS7 ~]#umount /dev/newvg0/newlv0
#首先取消掛載邏輯卷與快照
[root@CentOS7 ~]#lvconvert --merge /dev/newvg0/snap
Merging of volume newvg0/snap started.
newlv0: Merged: 100.00%
#使用快照恢復資料,此命令會自動識別邏輯卷的路徑
[root@CentOS7 ~]#mount /dev/newvg0/newlv0 /mnt/lv
[root@CentOS7 ~]#ll /mnt/lv/
-rw-r--r--. 1 root root 0 Aug 12 14:45 newlv0
#最後我們再把邏輯捲掛載就可以看到被刪除的檔案了
#恢復完資料快照邏輯卷會自動消失
第4步:實驗結束刪除快照和邏輯卷(已經提前給邏輯卷newlv0建立一個快照snap-data,也要刪除)
[root@CentOS7 ~]#umount /mnt/snap/
[root@CentOS7 ~]#umount /mnt/lv
[root@CentOS7 ~]#umount /mnt/lv1/
[root@CentOS7 ~]#lvremove /dev/newvg0/snap-data
[root@CentOS7 ~]#lvremove /dev/newvg0/newlv0
[root@CentOS7 ~]#lvremove /dev/newvg0/newlv1
#先取消掛載,然後移除所有邏輯卷,包括快照
[root@CentOS7 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
newvg0 3 0 0 wz--n- 4.01g 4.01g
#此時vg內的邏輯卷為空
[root@CentOS7 ~]#vgremove newvg0
Volume group "newvg0" successfully removed
#刪除捲組,這時候vgs檢視都是空
[root@CentOS7 ~]#pvremove /dev/sdc1
[root@CentOS7 ~]#pvremove /dev/sdd1
[root@CentOS7 ~]#pvremove /dev/sdd2
#刪除物理卷,pvs就看不到任何資訊了
至此所有的快照、邏輯卷、卷組和物理捲全部清空
刪除邏輯卷順序:
快照--邏輯卷--卷組--物理卷
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-09/146744.htm
相關文章