LVM邏輯卷配置過(guò)程詳解
LVM原理
要想理解好LVM的原理柜裸,我們必須首先要掌握4個(gè)基本的邏輯卷概念擂错。
①PE (Physical Extend) 物理拓展
②PV (Physical Volume) 物理卷
③VG (Volume Group) 卷組
④LV (Logical Volume) 邏輯卷
我們知道在使用LVM對(duì)磁盤進(jìn)行動(dòng)態(tài)管理以后味滞,我們是以邏輯卷的方式呈現(xiàn)給上層的服務(wù)的。所以我們所有的操作目的,其實(shí)就是去創(chuàng)建一個(gè)LV(Logical Volume),邏輯卷就是用來(lái)取代我們之前的分區(qū)剑鞍,我們通過(guò)對(duì)邏>輯卷進(jìn)行格式化昨凡,然后進(jìn)行掛載操作就可以使用了。那么LVM的工作原理是什么呢蚁署?所謂無(wú)圖無(wú)真相便脊,咱們下面通過(guò)圖來(lái)對(duì)邏輯卷的原理進(jìn)行解釋!光戈!
1.將我們的物理硬盤格式化成PV(Physical Volume)
我們看到就轧,這里有兩塊硬盤,一塊是sda田度,另一塊是sdb妒御,在LVM磁盤管理里,我首先要將這兩塊硬盤格式化為我們的PV(Physical Volume),也就是我們的物理卷镇饺,其實(shí)格式化物理卷的過(guò)程中LVM是將底層的硬盤劃分為了一個(gè)一個(gè)的PE(Physical Extend),我們的LVM磁盤管理中PE的默認(rèn)大小是4M大小乎莉,其實(shí)PE就是我們邏輯卷管理的最基本單位。比如說(shuō)我有一個(gè)400M的硬盤奸笤,那么在將其格式化成PV的時(shí)候惋啃,其實(shí)際就是將這塊物理硬盤劃分成了100個(gè)的PE,因?yàn)镻E默認(rèn)的大小就是4M监右。這個(gè)就是我們的第一步操作边灭。
2.創(chuàng)建一個(gè)VG(Volume Group)
在將硬盤格式化成PV以后,我們第二步操作就是創(chuàng)建一個(gè)卷組健盒,也就是VG(Volume Group),卷組在這里我們可以將其抽象化成一個(gè)空間池绒瘦,VG的作用就是用來(lái)裝PE的,我們可以把一個(gè)或者多個(gè)PV加到VG當(dāng)中扣癣,因?yàn)樵诘谝徊讲僮鲿r(shí)就已經(jīng)將該硬盤劃分成了多個(gè)PE惰帽,所以將多個(gè)PV加到VG里面后,VG里面就存放了許許多多來(lái)自不同PV中的PE父虑,我們通過(guò)上面的圖片就可以看到该酗,我們格式化了兩塊硬盤,每個(gè)硬盤分別格式化成了3個(gè)PE士嚎,然后將兩塊硬盤的PE都加到了我們的VG當(dāng)中呜魄,那么我們的VG當(dāng)中就包含了6個(gè)PE,這6個(gè)PE就是兩個(gè)硬盤的PE之和莱衩。通常創(chuàng)建一個(gè)卷組的時(shí)候我們會(huì)為其取一個(gè)名字爵嗅,也就是該VG的名字。
3.基于VG創(chuàng)建我們最后要使用的LV(Logical Volume)
【注意】PV以及VG創(chuàng)建好以后我們是不能夠直接使用的膳殷,因?yàn)镻V操骡、VG是我們邏輯卷底層的東西九火,我們其實(shí)最后使用的是在VG基礎(chǔ)上創(chuàng)建的LV(Logical Volume),所以第三步操作就是基于VG來(lái)創(chuàng)建我們最終要使用的LV。
當(dāng)我們創(chuàng)建好我們的VG以后册招,這個(gè)時(shí)候我們創(chuàng)建LV其實(shí)就是從VG中拿出我們指定數(shù)量的PE岔激,還是拿上圖來(lái)說(shuō),我們看到我們此時(shí)的VG里面已經(jīng)擁有了6個(gè)PE是掰,這時(shí)候我們創(chuàng)建了我們的第一個(gè)邏輯卷虑鼎,它的大小是4個(gè)PE的大小,也就是16M(因?yàn)橐粋€(gè)PE的默認(rèn)大小是4M)键痛,而這4個(gè)PE有三個(gè)是來(lái)自于第一塊硬盤炫彩,而另外一個(gè)PE則是來(lái)自第二塊硬盤。當(dāng)我們創(chuàng)建第二個(gè)邏輯卷時(shí)絮短,它的大小就最多只有兩個(gè)PE的大小了江兢,因?yàn)槠渲械?個(gè)PE已經(jīng)分配給了我們的第一個(gè)邏輯卷。
所以創(chuàng)建邏輯卷其實(shí)就是我們從VG中拿出我們指定數(shù)量的PE丁频,VG中的PE可以來(lái)自不同的PV杉允,我們可以創(chuàng)建的邏輯卷的大小取決于VG當(dāng)中PE存在的數(shù)量,并且我們創(chuàng)建的邏輯卷其大小一定是PE的整數(shù)倍(即邏輯卷的大小一定要是4M的整數(shù)倍)席里。
4.將我們創(chuàng)建好的LV進(jìn)行文件系統(tǒng)的格式化叔磷,然后掛載使用
在創(chuàng)建好LV以后,這個(gè)時(shí)候我們就能夠?qū)ζ溥M(jìn)行文件系統(tǒng)的格式化了奖磁,我們最終使用的就是我們剛創(chuàng)建好的LV改基,其就相當(dāng)于傳統(tǒng)的文件管理的分區(qū),我們首先要對(duì)其進(jìn)行文件系統(tǒng)的格式化操作咖为,然后通過(guò)mount命令對(duì)其進(jìn)行掛載秕狰,這個(gè)時(shí)候我們就能夠像使用平常的分區(qū)一樣來(lái)使用我們的邏輯卷了。
我們?cè)趧?chuàng)建好LV以后案疲,我們會(huì)在 /dev 目錄下看到我們的LV信息封恰,例如 /dev/vgname/lvname, 我們每創(chuàng)建一個(gè)VG褐啡,其會(huì)在/dev目錄下創(chuàng)建一個(gè)以該VG名字命名的文件夾,在該VG的基礎(chǔ)上創(chuàng)建好LV以后鳖昌,我們會(huì)在這個(gè)VG目錄下多出一個(gè)以LV名字命名的邏輯卷备畦。
下面我們來(lái)對(duì)整個(gè)LVM的工作原理進(jìn)行一個(gè)總結(jié):
(1)物理磁盤被格式化為PV,空間被劃分為一個(gè)個(gè)的PE
(2)不同的PV加入到同一個(gè)VG中许昨,不同PV的PE全部進(jìn)入到了VG的PE池內(nèi)
(3)LV基于PE創(chuàng)建懂盐,大小為PE的整數(shù)倍,組成LV的PE可能來(lái)自不同的物理磁盤
(4)LV直接可以格式化后掛載使用
(5)LV的擴(kuò)充縮減實(shí)際上就是增加或減少組成該LV的PE數(shù)量糕档,其過(guò)程不會(huì)丟失原始數(shù)據(jù)
我們看到莉恼,我們這里如果要對(duì)LV進(jìn)行擴(kuò)充拌喉,直接加進(jìn)來(lái)一塊sdc硬盤,然后將其格式化成PE俐银,然后將該P(yáng)V加入到了VG當(dāng)中尿背,這個(gè)時(shí)候我們就可以通過(guò)增加LV中PE的數(shù)量來(lái)動(dòng)態(tài)的對(duì)LV進(jìn)行擴(kuò)充了,只要我們的LV的大小不要超過(guò)我們VG空余空間的大小就行!
二捶惜、創(chuàng)建LVM邏輯卷
熟悉了LVM的工作原理田藐,首先是要將我們的物理硬盤格式化成PV,然后將多個(gè)PV加入到創(chuàng)建好的VG中吱七,最后通過(guò)VG創(chuàng)建我們的LV汽久。
三、拉伸一個(gè)邏輯卷
我們知道相比于傳統(tǒng)磁盤管理方式的各種問(wèn)題踊餐,使用LVM邏輯卷來(lái)管理我們的磁盤景醇,我們可以對(duì)其進(jìn)行動(dòng)態(tài)的管理。在傳統(tǒng)的磁盤管理方式中吝岭,我們?nèi)绻霈F(xiàn)分區(qū)大小不足的情況下啡直,我們此時(shí)只能通過(guò)加入一塊物理硬盤,然后對(duì)其進(jìn)行分區(qū)苍碟,因?yàn)榧尤氲挠脖P作為獨(dú)立的文件系統(tǒng)存在酒觅,所以對(duì)原有分區(qū)并沒(méi)有影響,如果此時(shí)我們需要擴(kuò)大分區(qū)微峰,就只能先將之前的分區(qū)先卸載掉舷丹,然后將所有的信息轉(zhuǎn)移到新的分區(qū)下,最后再將新的分區(qū)掛載上去蜓肆,如果是在生產(chǎn)環(huán)境下颜凯,這樣是不可想象的,正因?yàn)槿绱苏萄铮覀儾懦霈F(xiàn)了LVM的磁盤管理方式症概,可以動(dòng)態(tài)的對(duì)我們的磁盤進(jìn)行管理。
我們首先來(lái)看下動(dòng)態(tài)拉伸一個(gè)邏輯卷的示意圖:
我們從上圖可以看到早芭,我們?cè)趯?duì)邏輯卷進(jìn)行拉伸時(shí)彼城,其實(shí)際就是向邏輯卷中增加PE的數(shù)量,而PE的數(shù)量是由VG中剩余PE的數(shù)量所決定的退个。
【注意:】邏輯卷的拉伸操作可以在線進(jìn)行募壕,不需要卸載掉我們的邏輯卷
這樣的好處就是當(dāng)我們的邏輯卷的大小不夠用時(shí),我們不需要對(duì)其進(jìn)行卸載语盈,就可以動(dòng)態(tài)的增加我們的邏輯卷的大小舱馅,并不會(huì)對(duì)我們的系統(tǒng)產(chǎn)生任何影響。例如如果我們的服務(wù)器上運(yùn)行著一個(gè)重要的服務(wù)或者數(shù)據(jù)庫(kù)刀荒,并要求我們7*24小時(shí)不間斷保持在線代嗤,那么這樣的動(dòng)態(tài)增加邏輯卷的大小就非常的有必要了棘钞。
接下來(lái)我們來(lái)看看拉伸邏輯卷的步驟:
因?yàn)槲覀兊倪壿嬀淼睦觳僮魇强梢栽诰€進(jìn)行的,所以這里我們先將邏輯卷掛載上干毅,并在使用情況下動(dòng)態(tài)的拉伸我們的邏輯卷
四宜猜、實(shí)驗(yàn)
首先從空的硬盤sdb上創(chuàng)建分區(qū)sdb1,為接下來(lái)做LVM做準(zhǔn)備.
root@ubuntu:~# fdisk -l
Disk /dev/sdb: 160 GiB, 171798691840 bytes, 335544320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@ubuntu:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x88fc7537.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-335544319, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-335544319, default 335544319):
Created a new partition 1 of type 'Linux' and of size 160 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
創(chuàng)建邏輯卷
將新創(chuàng)建的兩個(gè)分區(qū)/dev/sdb1 轉(zhuǎn)化成物理卷,主要是添加LVM屬性信息并劃分PE存儲(chǔ)單元.
root@ubuntu:~# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
root@ubuntu:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 ubuntu-vg lvm2 a-- 9.52g 28.00m
/dev/sdb1 lvm2 --- 160.00g 160.00g
root@ubuntu:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name ubuntu-vg
PV Size 9.52 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2437
Free PE 7
Allocated PE 2430
PV UUID qOK5ke-q0K9-ndE6-bO8h-xhI8-xZiq-Fs7LL6
"/dev/sdb1" is a new physical volume of "160.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 160.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID hdHeYm-nnk2-89TZ-08OQ-P8p3-cz0G-5vqavc
創(chuàng)建卷組 vgdata ,并將剛才創(chuàng)建好的兩個(gè)物理卷加入該卷組.可以看出默認(rèn)PE大小為4MB,PE是卷組的最小存儲(chǔ)單元.可以通過(guò) –s參數(shù)修改大小溶锭。
root@ubuntu:~# vgcreate vgdata /dev/sdb1
Volume group "vgdata" successfully created
root@ubuntu:~# vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 2 0 wz--n- 9.52g 28.00m
vgdata 1 0 0 wz--n- 160.00g 160.00g
root@ubuntu:~# vgdisplay
--- Volume group ---
VG Name vgdata
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 160.00 GiB
PE Size 4.00 MiB
Total PE 40959
Alloc PE / Size 0 / 0
Free PE / Size 40959 / 160.00 GiB
VG UUID KO9v11-cMSG-wklj-Uu0x-Uj3e-4o8a-ICi5Gj
分配LV邏輯卷使用(利用vgdata卷組創(chuàng)建一個(gè)名為data的邏輯卷宝恶,大小為160G)
root@ubuntu:~# lvcreate -L 159G -n data vgdata
Logical volume "data" created.
root@ubuntu:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root ubuntu-vg -wi-ao---- 7.50g
swap_1 ubuntu-vg -wi-ao---- 2.00g
data vgdata -wi-a----- 159.00g
root@ubuntu:~# lvdisplay
--- Logical volume ---
LV Path /dev/vgdata/data
LV Name data
VG Name vgdata
LV UUID 1iGgQG-fCtw-lUXA-XczM-rcYd-JFFd-QVqjxk
LV Write Access read/write
LV Creation host, time ubuntu, 2019-03-07 15:57:16 +0800
LV Status available
# open 0
LV Size 159.00 GiB
Current LE 40704
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:3
邏輯卷使用前和分區(qū)一樣,都需要格式化一下
root@ubuntu:~# mkfs.ext4 /dev/vgdata/data
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 41680896 4k blocks and 10420224 inodes
Filesystem UUID: 23a544b0-0231-41df-a24e-94e370322815
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
查看磁盤UID,開機(jī)自動(dòng)掛載
root@ubuntu:~# blkid
/dev/sdb1: UUID="hdHeYm-nnk2-89TZ-08OQ-P8p3-cz0G-5vqavc" TYPE="LVM2_member" PARTUUID="88fc7537-01"
root@ubuntu:~# cat /etc/fstab
UUID=hdHeYm-nnk2-89TZ-08OQ-P8p3-cz0G-5vqavc /ftp ext4 defaults 0 0
報(bào)錯(cuò)
在阿里云服務(wù)器做磁盤擴(kuò)容時(shí)趴捅,我遇到了一個(gè)問(wèn)題
$ pvcreate /dev/vdb1
Can't open /dev/vdb1 exclusively. Mounted filesystem?
第一反應(yīng)就是查看這個(gè)分區(qū)是否已經(jīng)在使用了垫毙,但是并沒(méi)有
只需要 dmsetup remove xxx 移除掉就可以創(chuàng)建PV了。
$ dmsetup remove /dev/mapper/mydisk-disk
$ pvcreate /dev/vdb1
WARNING: ext4 signature detected on /dev/vdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/vdb1.
Physical volume "/dev/vdb1" successfully created
部分資料來(lái)自: https://www.cnblogs.com/fiberhome/p/8109530.html