認識Linux中的LVM PV VG LV

 LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,他是磁盤管理的一種工具,就目前基本上全部操做系統均支持,LVM是創建在硬盤和分區之上的一個邏輯層,來提升磁盤分區管理的靈活性。經過LVM系統管理員能夠輕鬆管理磁盤分區,如:將若干個磁盤分區鏈接爲一個整塊的卷組(volume group),造成一個存儲池。管理員能夠在卷組上隨意建立邏輯卷組(logical volumes),並進一步在邏輯卷組上建立文件系統。管理員經過LVM能夠方便的調整存儲卷組的大小,而且能夠對磁盤存儲按照組的方式進行命名、管理和分配,例如按照使用用途進行定義:「DBdata」和「DBSoft」,而不是使用物理磁盤名「sda」和「sdb」或」hda」和」hdb」。並且當系統添加了新的磁盤,經過LVM管理員就沒必要將磁盤的文件移動到新的磁盤上以充分利用新的存儲空間,而是直接擴展文件系統跨越磁盤便可,架構能夠參考以下圖:node

wKiom1kVYH2BoTpXAACMblYojJA055.png

一、基本概念介紹sql


物理存儲介質(The physical media)bash

這裏指系統的存儲設備:硬盤,如:/dev/hda、/dev/sda等等,是存儲系統最低層的存儲單元。架構

 

物理卷(PV physical volume)app

物理卷就是指硬盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。ide

 

卷組(VG Volume Group)工具

LVM卷組相似於非LVM系統中的物理硬盤,其由物理卷組成。能夠在卷組上建立一個或多個「LVM分區」(邏輯卷),LVM卷組由一個或多個物理卷組成。ui

 

邏輯卷(LV logical volume)spa

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創建的映射機制來訪問實際的物理位置。

二、LVM建立和管理

1)虛擬機添加兩塊磁盤,並識別爲sdb和sdc

wKiom1kVY8_BOBySAACeNYzuqv8009.png

wKiom1kVZP6xYHQiAABTHWh703o985.png

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

若是是文件系統是xfs格式的,須要使用xfs_growfs命令執行擴展文件系統。


參考:http://blog.csdn.net/lenovouser/article/details/54233570

相關文章
相關標籤/搜索