《LINUX入門:LVM邏輯卷-創(chuàng)建、擴(kuò)容、縮減、遷移、快照》要點(diǎn):
本文介紹了LINUX入門:LVM邏輯卷-創(chuàng)建、擴(kuò)容、縮減、遷移、快照,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
LVM邏輯卷
邏輯卷管理工具,允許在多個(gè)物理設(shè)備之間重新組織文件系統(tǒng),包含重新設(shè)定文件系統(tǒng)的大小
PE? 物理盤區(qū),類似于磁盤中的block
邏輯卷的基本存儲(chǔ)單位就是PE
dm:device mapper將一個(gè)或多個(gè)底層塊設(shè)備組織成一個(gè)邏輯設(shè)備的模塊
設(shè)備名:/dev/dm-#? //系統(tǒng)自動(dòng)分配,常用軟鏈接定義
軟鏈接:兩種方式表現(xiàn)
/dev/mapper/卷組-邏輯卷
/dev/卷組/邏輯卷
LVM可以彈性的修改容量
根本概念:
pv? //物理卷
vg? //卷組
lv? //邏輯卷
本次實(shí)驗(yàn)使用CentOS6版本,并在vmware虛擬機(jī)上操作
實(shí)驗(yàn)一 創(chuàng)建邏輯卷
第1步:準(zhǔn)備三個(gè)磁盤sdb、sdc、sdd,創(chuàng)建物理卷
[root@CentOs6 ~]#fdisk /dev/sdb? #使用fdisk命令對(duì)磁盤sdb分區(qū)
Device Boot? ? ? Start? ? ? ? End? ? ? Blocks? Id? System
/dev/sdb1? ? ? ? ? ? ? 1? ? ? ? 132? ? 1060258+? 8e? Linux LVM
#因?yàn)槭菍?shí)驗(yàn)這里只分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的分區(qū)表復(fù)制到sdc和sdd,這樣三塊磁盤分區(qū)一致
partx -a /dev/sd{b,c,d}? #同步磁盤與內(nèi)存信息
lsblk? #檢查同步結(jié)果
#上面步調(diào),我們從三塊磁盤取出三個(gè)大小、類型一樣的分區(qū)/dev/sdb1、 /dev/sdc1和/dev/sdd1
[root@CentOs6 ~]#pvcreate? /dev/sd{b,c,d}1? #創(chuàng)建3個(gè)物理卷pv
[root@CentOs6 ~]#pvs? #查看物理卷摘要信息
? PV? ? ? ? VG? Fmt? Attr PSize PFree? #VG為空,是因?yàn)槲覀冞€沒創(chuàng)建卷組
? /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顯示詳細(xì)的物理卷信息,此處只列出一個(gè)物理卷分析
? "/dev/sdb1" is a new physical volume of "1.01 GiB"
? --- NEW Physical volume ---
? PV Name? ? ? ? ? ? ? /dev/sdb1? #物理卷名稱
? VG Name? ? ? ? ? ? ? ? ? ? ? ? ? #因?yàn)闆]加入卷組,所以此處為空
? PV Size? ? ? ? ? ? ? 1.01 GiB? #物理卷容量,跟我們規(guī)劃的一樣
? Allocatable? ? ? ? ? NO? ? ? ? ? ? #因?yàn)檫€未加入卷組,所以下面選項(xiàng)為空
? PE Size? ? ? ? ? ? ? 0? ? ? ? ? #PE是物理卷的基本容量單位
? Total PE? ? ? ? ? ? ? 0
? Free PE? ? ? ? ? ? ? 0
? Allocated PE? ? ? ? ? 0
? PV UUID? ? ? ? ? ? ? iRkKni-iG3a-U38w-bXGn-aIGV-bP14-Pua8bc
第2步:創(chuàng)建卷組,其容量為各個(gè)物理卷的總和
[root@CentOs6 ~]#vgcreate v-group /dev/sd{b,c,d}1?
#創(chuàng)建包含3個(gè)分區(qū)的卷組,名稱為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? #顯示卷組的詳細(xì)信息
? --- Volume group ---
? VG Name? ? ? ? ? ? ? v-group? ? ? ? #卷組名稱? ? ? ? ?
? VG Access? ? ? ? ? ? read/write? #卷組的拜訪形式是讀寫
? VG Status? ? ? ? ? ? resizable? ? ? #卷組容量大小可調(diào)
? MAX LV? ? ? ? ? ? ? ? 0
? Cur LV? ? ? ? ? ? ? ? 0
? Open LV? ? ? ? ? ? ? 0
? Max PV? ? ? ? ? ? ? ? 0? ? ? ? ? ? #未創(chuàng)建邏輯卷,所以包含LV選項(xiàng)的全為0
? Cur PV? ? ? ? ? ? ? ? 3
? Act PV? ? ? ? ? ? ? ? 3
? VG Size? ? ? ? ? ? ? 3.02 GiB? ? #卷組容量,3個(gè)分區(qū)容量的累加
? PE Size? ? ? ? ? ? ? 4.00 MiB? ? #PE是基本容量單位,默認(rèn)大小為4MiB
? Total PE? ? ? ? ? ? ? 774? ? ? ? ? ? #PE總數(shù)量,其與PE大小相乘就是VG大小
? Alloc PE / Size? ? ? 0 / 0? ? ? ? ? #已經(jīng)分配給邏輯卷的PE
? Free? PE / Size? ? ? 774 / 3.02 GiB #剩余PE,因?yàn)檫€沒有創(chuàng)建邏輯卷
? VG UUID? ? ? ? ? ? ? aD3P8j-tNnP-KyXK-shWB-caTh-sCq8-j8B4qd
第3步:創(chuàng)立邏輯卷
[root@CentOs6 ~]#lvcreate -n logical-v -L 2G v-group? #創(chuàng)立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? ? ? ? #當(dāng)前使用的
#至此邏輯卷就創(chuàng)立完成.使用上文提到的命令查看物理卷、卷組信息會(huì)發(fā)現(xiàn),創(chuàng)立完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名稱其實(shí)是軟鏈接,指向的是我們前文說過的dm-#
第4步:將lv當(dāng)作一塊獨(dú)立磁盤進(jìn)行格式化、掛載、讀寫操作
1234 [root@CentOs6 ~]#mkdir /mnt/lv? #創(chuàng)立掛載點(diǎn)目錄
[root@CentOs6 ~]#mkfs.ext4 /dev/v-group/logical-v? #格式化成ext4文件系統(tǒng)?
[root@CentOs6 ~]#mount /dev/v-group/logical-v /mnt/lv/? #掛載
最后就可以進(jìn)行讀寫操作了
整個(gè)過程是依照下述流程操作:
準(zhǔn)備磁盤--創(chuàng)建物理卷--創(chuàng)建卷組--創(chuàng)建邏輯卷
實(shí)驗(yàn)二 擴(kuò)展邏輯卷、縮減邏輯卷
擴(kuò)展邏輯卷對(duì)用戶是透明的,lv一直是掛載狀態(tài)
[root@CentOs6 ~]#lvextend -L +256M /dev/v-group/logical-v
#對(duì)邏輯卷logical-v擴(kuò)展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查看發(fā)現(xiàn),lv實(shí)際大小還是2G,并未增加256M,是因?yàn)槲募到y(tǒng)未同步
[root@CentOs6 ~]#resize2fs? /dev/mapper/v--group-logical--v?
root@CentOs6 ~]#df -h /dev/mapper/v--group-logical--v?
#同步文件系統(tǒng),因?yàn)槲覀儗?shí)驗(yàn)用的是ext4文件系統(tǒng),所以使用sesize2fs來同步,如果是xfs文件系統(tǒng)則需要使用命令xfs_growfs來同步
#我們每次對(duì)lv進(jìn)行擴(kuò)展操作后都要記得同步文件系統(tǒng)
#最后再次df檢查
[root@CentOs6 ~]#lvextend? -r -L +256M /dev/v-group/logical-v
#上述命令更簡(jiǎn)單,在擴(kuò)展lv同時(shí)同步文件系統(tǒng),一步搞定
#只要加上 -r 選項(xiàng)
如果還有一個(gè)分區(qū)想要加入vg,比如/dev/sdb2,可以使用下述辦法:
pvcreate /dev/sdb2
vgextend v-group /dev/sdb2
#只需要這兩步即可
邏輯卷縮減其實(shí)就是將一個(gè)邏輯卷占用的PE空間縮減,這樣做一般會(huì)有風(fēng)險(xiǎn),因?yàn)榭s減的空間可能有數(shù)據(jù).所以如果必定要縮減的話建議先備份.本實(shí)驗(yàn)環(huán)境無所謂
第1步:取消掛載邏輯卷
12 [root@CentOs6 ~]#umount /mnt/lv/
[root@CentOs6 ~]#df? #已經(jīng)查看不到lv信了
第2步:檢查文件系統(tǒng)完整性 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時(shí)都會(huì)有警告提示,所以要考慮清楚再行動(dòng),做實(shí)驗(yàn)就不要緊了
第5步:重新掛載?
[root@CentOs6 ~]#mount /dev/v-group/logical-v? /mnt/lv/
[root@CentOs6 ~]#df -h
#最后掛載,df檢測(cè),此外還可以使用vgdisplay、lvdisplay反省邏輯卷是否縮減
注意:
xfs文件體系不支持縮減
實(shí)驗(yàn)三 遷移卷組到新系統(tǒng)
源設(shè)備操作:
1、撤消掛載卷組中的所有邏輯卷
[root@CentOs6 ~]#umount /mnt/lv/
#撤消本機(jī)掛載
2、確保卷組名跟目標(biāo)設(shè)備紛歧樣
[root@CentOs6 ~]#vgrename v-group newvg0
? Volume group "v-group" successfully renamed to "newvg0"
#修改卷組名為newvg0,或者提前查看目標(biāo)設(shè)備的卷組名稱,只要紛歧樣就行
#只要卷組名紛歧樣就行,邏輯卷名稱可改也可不改
[root@CentOs6 ~]#lvrename? /dev/newvg0/logical-v? newlv0
? Renamed "logical-v" to "newlv0" in volume group "newvg0"
#邏輯卷改名為newlv0
3、設(shè)置邏輯卷為非活動(dòng)狀態(tài),也便是說邏輯卷現(xiàn)在不可用
[root@CentOs6 ~]#vgchange? -a n newvg0?
? 0 logical volume(s) in volume group "newvg0" now active
#卷組中0個(gè)邏輯卷是活動(dòng)狀態(tài),-a n表示使邏輯卷無效
[root@CentOs6 ~]#lvdisplay?
?LV Status? ? ? ? ? ? ? NOT available? #LV無效
4、導(dǎo)出卷組
12345 [root@CentOs6 ~]#vgexport? newvg0
? Volume group "newvg0" successfully exported
#導(dǎo)出卷組
[root@CentOs6 ~]#pvscan? #掃描磁盤物理卷
[root@CentOs6 ~]#pvdisplay? #會(huì)發(fā)現(xiàn)物理卷對(duì)應(yīng)的卷組都是exported狀態(tài)
5、拆除硬盤,換到目標(biāo)設(shè)備上
在vmware上我們把磁盤文件掛載到目標(biāo)設(shè)備上
我的是下面這三個(gè)虛擬機(jī)磁盤文件
CentOs6.9\CentOS6.9-3.vmdk
CentOs6.9\CentOS6.9-4.vmdk
CentOs6.9\CentOS6.9-5.vmdk
將這三個(gè)文件添加到目標(biāo)設(shè)備上,我的目標(biāo)設(shè)備是centos7
目標(biāo)設(shè)備操作:
1、掃描發(fā)現(xiàn)磁盤
[root@CentOS7 ~]#echo '- - - ' > /sys/class/scsi_host/host2/scan?
[root@CentOS7 ~]#lsblk
#掃描磁盤,然后反省卷組是否存在
2、掃描物理卷,然后導(dǎo)入卷組
[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? #導(dǎo)入卷組,使用新組名
? 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?
#激活邏輯卷,并查看成果,這里我只做了一個(gè)邏輯卷
#還可以使用blkid、vgdisplay、pvdisplay等命令查看成果
#其實(shí)還可以在原設(shè)備邏輯卷中提前存放一些數(shù)據(jù),等遷移完成到目標(biāo)設(shè)備后,我們?cè)俨榭催壿嬀韮?nèi)的數(shù)據(jù)是否還存在.
實(shí)驗(yàn)四 移除卷組中的磁盤
第1步:將要移除的磁盤的數(shù)據(jù)移到其他邏輯卷
把數(shù)據(jù)搬到同一卷組其他邏輯卷,要保證卷組有足夠的空間,搬的是存儲(chǔ)空間,里面可能有數(shù)據(jù)
1234567891011121314 [root@CentOS7 ~]#pvmove /dev/sdb1?
?#把/dev/sdb磁盤PE空間遷移至其他邏輯卷,本實(shí)驗(yàn)1個(gè)磁盤上建1個(gè)分區(qū)
[root@CentOS7 ~]#pvdisplay? /dev/sdb1? #sdb已經(jīng)沒有空間在使用了
?--- 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空間減少,便是因?yàn)榻邮樟藄db1轉(zhuǎn)移的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?
#移除物理卷后,就看不到原物理卷信息了
實(shí)驗(yàn)五 邏輯卷管理快照
快照是特殊的邏輯卷,快照存放的是改過的文件的最早的版本,只是備份修改的文件.快照與對(duì)應(yīng)的邏輯卷必需在同一個(gè)卷組,而且恢復(fù)時(shí)的文件容量不能超過快照大小
測(cè)試環(huán)境使用快照較多
生產(chǎn)環(huán)境會(huì)消耗更多的性能,所以一般不用
第1步:創(chuàng)建快照
[root@CentOS7 ~]#lvcreate? -L 100M -s -n snap -p r /dev/newvg0/newlv0? ? ?
? Using default stripesize 64.00 KiB.
? Logical volume "snap" created.
#創(chuàng)建快照,-s表現(xiàn)快照,-L指定快照容量,-n是快照名,-p r快照權(quán)限只讀
#我們對(duì)邏輯卷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
#快照掛載到一個(gè)掛載點(diǎn),掛載時(shí)提示寫掩護(hù),但還是成功掛載,可以df查看
第3步:使用快照恢復(fù)數(shù)據(jù)
上述步驟對(duì)邏輯卷newlv0做了快照,而newlv0掛載到了/mnt/lv目錄下,現(xiàn)在把此目錄下的文件newlv0刪除然使用快照恢復(fù)
[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%
#使用快照恢復(fù)數(shù)據(jù),此命令會(huì)自動(dòng)辨認(rèn)邏輯卷的路徑
[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
#最后我們?cè)侔堰壿嬀頀燧d就可以看到被刪除的文件了
#恢復(fù)完數(shù)據(jù)快照邏輯卷會(huì)自動(dòng)消失
第4步:實(shí)驗(yàn)結(jié)束刪除快照和邏輯卷(已經(jīng)提前給邏輯卷newlv0創(chuàng)建一個(gè)快照snap-data,也要?jiǎng)h除)
[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
#此時(shí)vg內(nèi)的邏輯卷為空
[root@CentOS7 ~]#vgremove? newvg0?
? Volume group "newvg0" successfully removed
#刪除卷組,這時(shí)候vgs查看都是空
[root@CentOS7 ~]#pvremove? /dev/sdc1
[root@CentOS7 ~]#pvremove? /dev/sdd1
[root@CentOS7 ~]#pvremove? /dev/sdd2
#刪除物理卷,pvs就看不到任何信息了
至此所有的快照、邏輯卷、卷組和物理卷全部清空
刪除邏輯卷次序:
快照--邏輯卷--卷組--物理卷
本文永遠(yuǎn)更新鏈接地址:
學(xué)習(xí)更多LINUX教程,請(qǐng)查看站內(nèi)專欄,如果有LINUX疑問,可以加QQ交流《LINUX入門:LVM邏輯卷-創(chuàng)建、擴(kuò)容、縮減、遷移、快照》。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7066.html