首頁 > 軟體

LVM邏輯卷管理LVM PV VG LV 理解

2020-06-16 17:15:12

LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,他是磁碟管理的一種工具,就目前基本上所有作業系統均支援,LVM是建立在硬碟和分割區之上的一個邏輯層,來提高磁碟分割區管理的靈活性。通過LVM系統管理員可以輕鬆管理磁碟分割區,如:將若干個磁碟分割區連線為一個整塊的捲組(volume group),形成一個儲存池。管理員可以在捲組上隨意建立邏輯卷組(logical volumes),並進一步在邏輯卷組上建立檔案系統。管理員通過LVM可以方便的調整儲存卷組的大小,並且可以對磁碟儲存按照組的方式進行命名、管理和分配,例如按照使用用途進行定義:“DBdata”和“DBSoft”,而不是使用物理磁碟名“sda”和“sdb”或”hda”和”hdb”。而且當系統新增了新的磁碟,通過LVM管理員就不必將磁碟的檔案移動到新的磁碟上以充分利用新的儲存空間,而是直接擴充套件檔案系統跨越磁碟即可,架構可以參考如下圖:

1、基本概念介紹 

物理儲存媒介(The physical media)

這裡指系統的儲存裝置:硬碟,如:/dev/hda、/dev/sda等等,是儲存系統最低層的儲存單元。

 

物理卷(PV physical volume)

物理捲就是指硬碟分割區或從邏輯上與磁碟分割區具有同樣功能的裝置(如RAID),是LVM的基本儲存邏輯塊,但和基本的物理儲存媒介(如分割區、磁碟等)比較,卻包含有與LVM相關的管理引數。

 

卷組(VG Volume Group)

LVM捲組類似於非LVM系統中的物理硬碟,其由物理卷組成。可以在捲組上建立一個或多個“LVM分割區”(邏輯卷),LVM捲組由一個或多個物理卷組成。

 

邏輯卷(LV logical volume)

LVM的邏輯卷類似於非LVM系統中的硬碟分割區,在邏輯卷之上可以建立檔案系統(比如/home或者/usr等)。

 

PE(physical extent)

每一個物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM定址的最小單元。PE的大小是可設定的,預設為4MB。

 

LE(logical extent)

邏輯卷也被劃分為被稱為LE(Logical Extents) 的可被定址的基本單位。在同一個捲組中,LE的大小和PE是相同的,並且一一對應。

      首先可以看到,物理卷(PV)被由大小等同的基本單元PE組成。

      一個捲組由一個或多個物理卷組成:

從上圖可以看到,PE和LE有著一一對應的關係。邏輯卷建立在捲組上。邏輯卷就相當於非LVM系統的磁碟分割區,可以在其上建立檔案系統。

      下圖是磁碟分割區、捲組、邏輯卷和檔案系統之間的邏輯關係的示意圖:

 

        和非LVM系統將包含分割區資訊的後設資料儲存在位於分割區的起始位置的分割區表中一樣,邏輯卷以及捲組相關的後設資料也是儲存在位於物理捲起始處的VGDA(捲組描述符區域)中。VGDA包括以下內容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。

      系統啟動LVM時啟用VG,並將VGDA載入至記憶體,來識別LV的實際物理儲存位置。當系統進行I/O操作時,就會根據VGDA建立的對映機制來存取實際的物理位置。

2、LVM建立和管理

1)虛擬機器新增兩塊磁碟,並識別為sdb和sdc

 

 

2)建立PV,使用sdb和sdc

 
[root@localhost ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
[root@localhost ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda2  vg00 lvm2 a--  7.80g    0 
  /dev/sdb   vgzx lvm2 a--  8.00g 8.00g
  /dev/sdc   vgzx lvm2 a--  8.00g 8.00g
 
 

3)建立VG,使用剛建立的兩個PV

 
[root@localhost ~]# vgcreate vgzx /dev/sdb /dev/sdc
  Volume group "vgzx" successfully created
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg00   1   2   0 wz--n-  7.80g     0 
  vgzx   2   0   0 wz--n- 15.99g 15.99g
 

4)建立LV,在剛建立的VG上建立兩個LV

 
[root@localhost ~]# lvcreate -L 2G -n lvzx01 vgzx
  Logical volume "lvzx01" created.
[root@localhost ~]# lvcreate -L 2G -n lvzx02 vgzx
  Logical volume "lvzx02" created.
[root@localhost ~]# lvs
  LV     VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data   vg00 -wi-ao---- 5.85g                                                   
  swap   vg00 -wi-ao---- 1.95g                                                   
  lvzx01 vgzx -wi-a----- 2.00g                                                   
  lvzx02 vgzx -wi-a----- 2.00g
 

5)使用剛建立的LV建立檔案系統並掛載到作業系統

 
[root@localhost ~]# mkfs.ext4 /dev/vgzx/lvzx01 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912
  
Writing inode tables: done                           
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
  
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mkfs.ext4 /dev/vgzx/lvzx02 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912
  
Writing inode tables: done                           
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
  
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mkdir /orasoft
[root@localhost ~]# mkdir /oradata
[root@localhost ~]# mount /dev/mapper/vgzx-lvzx01 
mount: can't find /dev/mapper/vgzx-lvzx01 in /etc/fstab or /etc/mtab
[root@localhost ~]# mount /dev/mapper/vgzx-lvzx01 /oradata/
[root@localhost ~]# mount /dev/mapper/vgzx-lvzx02 /orasoft/
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-data
                      5.7G  1.9G  3.6G  34% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             190M   36M  145M  20% /boot
/dev/mapper/vgzx-lvzx01
                      2.0G  3.0M  1.9G   1% /oradata
/dev/mapper/vgzx-lvzx02
                      2.0G  3.0M  1.9G   1% /orasoft
 

如果想掛載隨機啟動需要修改/etc/fastab檔案。

6)擴充套件LV

 
[root@localhost ~]# lvextend -L +2G /dev/mapper/vgzx-lvzx01 
  Size of logical volume vgzx/lvzx01 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume lvzx01 successfully resized
[root@localhost ~]# lvextend -L +3G /dev/mapper/vgzx-lvzx02
  Size of logical volume vgzx/lvzx02 changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
  Logical volume lvzx02 successfully resized
[root@localhost ~]# lvs
  LV     VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data   vg00 -wi-ao---- 5.85g                                                   
  swap   vg00 -wi-ao---- 1.95g                                                   
  lvzx01 vgzx -wi-ao---- 4.00g                                                   
  lvzx02 vgzx -wi-ao---- 5.00g                                                   
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-data
                      5.7G  1.9G  3.6G  34% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             190M   36M  145M  20% /boot
/dev/mapper/vgzx-lvzx01
                      2.0G  3.0M  1.9G   1% /oradata
/dev/mapper/vgzx-lvzx02
                      2.0G  3.0M  1.9G   1% /orasoft
 

7)擴充套件檔案系統resize2fs

從上面可以看出,LV分別做了擴充套件,但在作業系統上還沒有顯示為擴充套件

 

[root@localhost ~]# resize2fs /dev/mapper/vgzx-lvzx01 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vgzx-lvzx01 is mounted on /oradata; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vgzx-lvzx01 to 1048576 (4k) blocks.
The filesystem on /dev/mapper/vgzx-lvzx01 is now 1048576 blocks long.
  
[root@localhost ~]# resize2fs /dev/mapper/vgzx-lvzx02
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vgzx-lvzx02 is mounted on /orasoft; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vgzx-lvzx02 to 1310720 (4k) blocks.
The filesystem on /dev/mapper/vgzx-lvzx02 is now 1310720 blocks long.
  
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-data
                      5.7G  1.9G  3.6G  34% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             190M   36M  145M  20% /boot
/dev/mapper/vgzx-lvzx01
                      3.9G  4.0M  3.7G   1% /oradata
/dev/mapper/vgzx-lvzx02
                      4.9G  4.0M  4.7G   1% /orasoft

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-05/143724.htm


IT145.com E-mail:sddin#qq.com