认识Linux中的LVM PV VG LV

简介:

 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,他是磁盘管理的一种工具,就目前基本上所有操作系统均支持,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“DBdata”和“DBSoft”,而不是使用物理磁盘名“sda”和“sdb”或”hda”和”hdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可,架构可以参考如下图:

wKiom1kVYH2BoTpXAACMblYojJA055.png

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

wKiom1kVY8_BOBySAACeNYzuqv8009.png

wKiom1kVZP6xYHQiAABTHWh703o985.png

2)创建PV,使用sdb和sdc

1
2
3
4
5
6
7
8
9
[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

1
2
3
4
5
6
[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

1
2
3
4
5
6
7
8
9
10
[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创建文件系统并挂载到操作系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[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分别做了扩展,但在操作系统上还没有显示为扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[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






      本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1925107,如需转载请自行联系原作者


相关文章
|
3月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
4月前
|
存储 监控 Linux
|
4月前
|
存储 Linux
在Linux中,LVM是什么?
在Linux中,LVM是什么?
|
4月前
|
存储 监控 Linux
在Linux中,如何使用LVM管理逻辑卷?
在Linux中,如何使用LVM管理逻辑卷?
|
4月前
|
存储 数据挖掘 Linux
在Linux中,LVM(逻辑卷管理)的主要优势是什么?如何扩展LVM卷?
在Linux中,LVM(逻辑卷管理)的主要优势是什么?如何扩展LVM卷?
|
4月前
|
Linux
【Linux逻辑卷全解】带你玩转linux LVM 逻辑卷
【Linux逻辑卷全解】带你玩转linux LVM 逻辑卷
|
7月前
|
存储 Linux C++
linux信号量与PV操作知识点总结
linux信号量与PV操作知识点总结
|
6月前
|
存储 Linux 存储虚拟化
46. 【Linux教程】逻辑卷与 LVM 介绍
46. 【Linux教程】逻辑卷与 LVM 介绍
53 0
|
7月前
|
存储 Linux 数据库
Linux中LVM逻辑盘卷管理
LVM (Logical Volume Manager) 是Linux系统中的一种存储管理工具,它将物理硬盘组织成物理卷(PV),然后将物理卷组合成卷组(VG),最后从卷组中创建逻辑卷(LV)。逻辑卷可以按需调整大小,跨越多个物理卷,提供更高的灵活性和可扩展性。LVM的主要优点包括:
|
7月前
|
存储 固态存储 Linux