基本概念:
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.9\CentOS6.9-3.vmdk
CentOs6.9\CentOS6.9-4.vmdk
CentOs6.9\CentOS6.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就看不到任何信息了
至此所有的快照、邏輯卷、卷組和物理卷全部清空
刪除邏輯卷順序:
快照–邏輯卷–卷組–物理卷
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97067