LVM邏輯卷配置過(guò)程

LVM邏輯卷配置過(guò)程詳解

LVM原理

要想理解好LVM的原理,我們必須首先要掌握4個(gè)基本的邏輯卷概念。

①PE  (Physical Extend)  物理拓展

②PV  (Physical Volume)  物理卷

③VG  (Volume Group)  卷組

④LV  (Logical Volume)  邏輯卷

我們知道在使用LVM對(duì)磁盤(pán)進(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)行解釋?zhuān)。?/p>

圖片.png

1.將我們的物理硬盤(pán)格式化成PV(Physical Volume)

我們看到,這里有兩塊硬盤(pán),一塊是sda,另一塊是sdb,在LVM磁盤(pán)管理里,我首先要將這兩塊硬盤(pán)格式化為我們的PV(Physical Volume),也就是我們的物理卷,其實(shí)格式化物理卷的過(guò)程中LVM是將底層的硬盤(pán)劃分為了一個(gè)一個(gè)的PE(Physical Extend),我們的LVM磁盤(pán)管理中PE的默認(rèn)大小是4M大小,其實(shí)PE就是我們邏輯卷管理的最基本單位。比如說(shuō)我有一個(gè)400M的硬盤(pán),那么在將其格式化成PV的時(shí)候,其實(shí)際就是將這塊物理硬盤(pán)劃分成了100個(gè)的PE,因?yàn)镻E默認(rèn)的大小就是4M。這個(gè)就是我們的第一步操作。

2.創(chuàng)建一個(gè)VG(Volume Group)

在將硬盤(pán)格式化成PV以后,我們第二步操作就是創(chuàng)建一個(gè)卷組,也就是VG(Volume Group),卷組在這里我們可以將其抽象化成一個(gè)空間池,VG的作用就是用來(lái)裝PE的,我們可以把一個(gè)或者多個(gè)PV加到VG當(dāng)中,因?yàn)樵诘谝徊讲僮鲿r(shí)就已經(jīng)將該硬盤(pán)劃分成了多個(gè)PE,所以將多個(gè)PV加到VG里面后,VG里面就存放了許許多多來(lái)自不同PV中的PE,我們通過(guò)上面的圖片就可以看到,我們格式化了兩塊硬盤(pán),每個(gè)硬盤(pán)分別格式化成了3個(gè)PE,然后將兩塊硬盤(pán)的PE都加到了我們的VG當(dāng)中,那么我們的VG當(dāng)中就包含了6個(gè)PE,這6個(gè)PE就是兩個(gè)硬盤(pán)的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)自于第一塊硬盤(pán),而另外一個(gè)PE則是來(lái)自第二塊硬盤(pán)。當(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)物理磁盤(pán)被格式化為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)自不同的物理磁盤(pán)

(4)LV直接可以格式化后掛載使用

(5)LV的擴(kuò)充縮減實(shí)際上就是增加或減少組成該LV的PE數(shù)量,其過(guò)程不會(huì)丟失原始數(shù)據(jù)

圖片.png

我們看到,我們這里如果要對(duì)LV進(jìn)行擴(kuò)充,直接加進(jìn)來(lái)一塊sdc硬盤(pán),然后將其格式化成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邏輯卷

圖片.png

熟悉了LVM的工作原理,首先是要將我們的物理硬盤(pán)格式化成PV,然后將多個(gè)PV加入到創(chuàng)建好的VG中,最后通過(guò)VG創(chuàng)建我們的LV。

三、拉伸一個(gè)邏輯卷

我們知道相比于傳統(tǒng)磁盤(pán)管理方式的各種問(wèn)題,使用LVM邏輯卷來(lái)管理我們的磁盤(pán),我們可以對(duì)其進(jìn)行動(dòng)態(tài)的管理。在傳統(tǒng)的磁盤(pán)管理方式中,我們?nèi)绻霈F(xiàn)分區(qū)大小不足的情況下,我們此時(shí)只能通過(guò)加入一塊物理硬盤(pán),然后對(duì)其進(jìn)行分區(qū),因?yàn)榧尤氲挠脖P(pán)作為獨(dú)立的文件系統(tǒng)存在,所以對(duì)原有分區(qū)并沒(méi)有影響,如果此時(shí)我們需要擴(kuò)大分區(qū),就只能先將之前的分區(qū)先卸載掉,然后將所有的信息轉(zhuǎn)移到新的分區(qū)下,最后再將新的分區(qū)掛載上去,如果是在生產(chǎn)環(huán)境下,這樣是不可想象的,正因?yàn)槿绱?,我們才出現(xiàn)了LVM的磁盤(pán)管理方式,可以動(dòng)態(tài)的對(duì)我們的磁盤(pán)進(jìn)行管理。

我們首先來(lái)看下動(dòng)態(tài)拉伸一個(gè)邏輯卷的示意圖:


圖片.png

我們從上圖可以看到,我們?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)

首先從空的硬盤(pá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     

查看磁盤(pán)UID,開(kāi)機(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ù)器做磁盤(pán)擴(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容