什么是Linux的LVM:PE, PV, VG, LV 的意义是?

简介: 什么是Linux的LVM:PE, PV, VG, LV 的意义是?

🍁 1.导读



想像一个情况,你在当初规划主机的时候将 /home 只给他 50G ,等到使用者众多之后导致这

个 filesystem 不够大, 此时你能怎么作?多数的朋友都是这样:再加一颗新硬盘,然后重新

分区、格式化,将 /home 的数据完整的复制过来, 然后将原本的 partition 卸载重新挂载新的

partition 。啊!好忙碌啊!若是第二次分区却给的容量太多!导致很多磁盘容量被浪费了!

你想要将这个 partition 缩小时,又该如何作?将上述的流程再搞一遍!唉~烦死了,尤其复

制很花时间ㄟ~有没有更简单的方法呢? 有的!那就是我们这个小节要介绍的 LVM 这玩意

儿!


🍁2.概念


LVM使用分层结构,如下图所示


1f8157ca2f95454da35196e1f4e3198c.png



PE(Physical Extend) 物理拓展

PV(Physical Volume) 物理卷

VG(Volume Group) 卷组

LV(Logical Volume) 逻辑卷


2dd8268105854880af27426f27eea3fe.png

⛳️ 2.1 LVM


LVM 的全名是 Logical Volume Manager,中文可以翻译作逻辑卷轴管理员。之所以称为“卷

轴”可能是因为可以将 filesystem 像卷轴一样伸长或缩短之故吧!LVM 的作法是将几个实体的

partitions (或 disk) 通过软件组合成为一块看起来是独立的大磁盘 (VG) ,然后将这块大

磁盘再经过分区成为可使用分区 (LV), 最终就能够挂载使用了。但是为什么这样的系统可

以进行 filesystem 的扩充或缩小呢?其实与一个称为 PE 的项目有关!


⛳️ 2.2 PE


Physical Extent, PE, 实体范围区块

LVM 默认使用 4MB 的 PE 区块,而 LVM 的 LV 在 32 位系统上最多仅能含有 65534 个 PE

(lvm1 的格式),因此默认的 LVM 的 LV 会有 4M*65534/(1024M/G)=256G。这个 PE 很

有趣喔!他是整个 LVM 最小的储存区块,也就是说,其实我们的文件数据都是借由写入 PE

来处理的。简单的说,这个 PE 就有点像文件系统里面的 block 大小啦。 这样说应该就比较

好理解了吧?所以调整 PE 会影响到 LVM 的最大容量喔!不过,在 CentOS 6.x 以后,由于

直接使用 lvm2 的各项格式功能,以及系统转为 64 位,因此这个限制已经不存在了。


⛳️ 2.3 PV


Physical Volume, PV, 实体卷轴

我们实际的 partition (或 Disk) 需要调整系统识别码 (system ID) 成为 8e (LVM 的识别

码),然后再经过 pvcreate 的指令将他转成 LVM 最底层的实体卷轴 (PV) ,之后才能够将

这些 PV 加以利用!


⛳️ 2.4 VG


Volume Group, VG, 卷轴群组

所谓的 LVM 大磁盘就是将许多 PV 整合成这个 VG 的东西就是啦!所以 VG 就是 LVM 组合

起来的大磁盘!这么想就好了。 那么这个大磁盘最大可以到多少容量呢?这与下面要说明的

PE 以及 LVM 的格式版本有关喔~在默认的情况下, 使用 32位的 Linux 系统时,基本上 LV

最大仅能支持到 65534 个 PE 而已,若使用默认的 PE 为 4MB 的情况下, 最大容量则仅能

达到约 256GB 而已~不过,这个问题在 64位的 Linux 系统上面已经不存在了!LV 几乎没有

啥容量限制了!


⛳️ 2.4 LV


Logical Volume, LV, 逻辑卷轴

最终的 VG 还会被切成 LV,这个 LV 就是最后可以被格式化使用的类似分区的咚咚了!那么

LV 是否可以随意指定大小呢? 当然不可以!既然 PE 是整个 LVM 的最小储存单位,那么 LV

的大小就与在此 LV 内的 PE 总数有关。 为了方便使用者利用 LVM 来管理其系统,因此 LV

的设备文件名通常指定为“ /dev/vgname/lvname ”的样式!



96ae1a50a2e74b1b93d2959b63c1fc21.png



通过 PV, VG, LV 的规划之后,再利用 mkfs 就可以将你的 LV 格式化成为可以利用的文件系统

了!而且这个文件系统的容量在未来还能够进行扩充或减少, 而且里面的数据还不会被影

响!实在是很“福气啦!


🍁3.逻辑卷常用命令



pvcreate /dev/sda4

pvdisplay

pvs

vgcreate vg_orasoft /dev/sda4

vgdisplay

vgs

lvcreate -n lv_orasoft_u01 -L 1G vg_orasoft

lvdisplay

lvs

mkfs.ext4 /dev/vg_orasoft/lv_orasoft_u01

mkdir /u11

mount /dev/vg_orasoft/lv_orasoft_u01 /u11

–mv /u01/* /u11/

–扩展逻辑卷

vgextend vg_orasoft /dev/sdb3

–lvextend -L +9G /dev/vg_orasoft/lv_orasoft_u01

lvextend -L 20G /dev/vg_orasoft/lv_orasoft_u01

resize2fs /dev/vg_orasoft/lv_orasoft_u01 #更新文件系统

–收缩逻辑卷

lvreduce -L -4G /dev/vg_orasoft/lv_orasoft_u01

–重命名逻辑卷

lvrename /dev/vg_orasoft/lv_ora_soft_u01 /dev/vg_orasoft/lv_orasoft_u01

— /etc/fstab

/dev/vg_orasoft/lv_orasoft_u01 /u01 ext4 defaults 0 0

/dev/vg_orasoft/lv_orasoft_u02 /u02 ext4 defaults 0 0

/dev/vg_orasoft/lv_orasoft_u03 /u03 ext4 defaults 0 0

/dev/vg_orasoft/lv_oradata_u04 /u04 ext4 defaults 0 0

—找逻辑卷

lvmdiskscan

vgchange -ay

—删除逻辑卷

①首先将正在使用的逻辑卷卸载掉,通过 umount 命令

②将逻辑卷先删除,通过 lvremove 命令

③删除卷组,通过 vgremove 命令

④最后再删除的物理卷,通过 pvremove 命令


🍁4.实战案例



⛳️ 4.1 LVM 全流程操作

对/dev/sdb 进行分区

50G磁盘大约分 5个 PE,每个 PE 大约 10G


621e1585c432410288a739f002fac6d8.png

[root@rac1 ~]#  fdisk -l
[root@rac1 ~]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +10G
Command (m for help): d   #删除分区
Partition number (1-4): 4  #选择要删除分区的分区号,我们选第四个
Disk identifier: 0x000b7170
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
/dev/sdb2            1307        2612    10490445   83  Linux
/dev/sdb3            2613        3918    10490445   83  Linux
Command (m for help): P
Disk identifier: 0x000b7170
Device Boot        Start           End      Blocks   Id  System
/dev/sdb1               1           1306    10490413+  83  Linux
/dev/sdb2            1307        2612    10490445   83  Linux
/dev/sdb3            2613        3918    10490445   83  Linux
/dev/sdb4            3919        6527    20956792+   5  Extended
/dev/sdb5            3919        5224    10490413+  83  Linux
/dev/sdb6            5225        6527    10466316   83  Linux
Command (m for help): t
Partition number (1-6): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
[root@rac1 ~]# fdisk -l | grep dev
Disk /dev/sda: 53.7 GB, 53687091200 bytes
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26        2637    20971520   8e  Linux LVM
/dev/sda3            2637        6528    31251456   8e  Linux LVM
Disk /dev/sdb: 53.7 GB, 53687091200 bytes
/dev/sdb1               1        1306    10490413+  8e  Linux LVM
/dev/sdb2            1307        2612    10490445   8e  Linux LVM
/dev/sdb3            2613        3918    10490445   8e  Linux LVM
/dev/sdb4            3919        6527    20956792+   5  Extended
/dev/sdb5            3919        5224    10490413+  8e  Linux LVM
/dev/sdb6            5225        6527    10466316   8e  Linux LVM
Disk /dev/mapper/vg_root-Vol03: 2147 MB, 2147483648 bytes
Disk /dev/mapper/vg_root-Vol00: 21.5 GB, 21474836480 bytes
Disk /dev/mapper/vg_root-Vol02: 10.7 GB, 10737418240 bytes
Disk /dev/mapper/vg_root-Vol01: 10.7 GB, 10737418240 bytes
(1)创建 PV
  [root@rac1 ~]# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  vg_root lvm2 a--  20.00g 7.80g
  /dev/sda3  vg_root lvm2 a--  29.80g    0
[root@rac1 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@rac1 ~]#  pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created
root@rac1 ~]#  pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created
root@rac1 ~]#  pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created
[root@rac1 ~]# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda2  vg_root lvm2 a--  20.00g  7.80g
  /dev/sda3  vg_root lvm2 a--  29.80g     0
  /dev/sdb1          lvm2 a--  10.00g 10.00g
  /dev/sdb2          lvm2 a--  10.00g 10.00g
  /dev/sdb3          lvm2 a--  10.00g 10.00g
  /dev/sdb5          lvm2 a--  10.00g 10.00g
(2)创建 VG
[root@rac1 ~]#  vgcreate vg_orasoft /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5
  Volume group "vg_orasoft" successfully created
[root@rac1 ~]# vgs
  VG         #PV #LV #SN Attr   VSize  VFree
  vg_orasoft   4   0   0 wz--n- 40.00g 40.00g
  vg_root      2   4   0 wz--n- 49.80g  7.80g
(3)创建 LV
[root@rac1 ~]# lvcreate -n lv_orasoft_u01 -L 40G vg_orasoft
  Logical volume "lv_orasoft_u01" created
[root@rac1 ~]# lvs
  LV             VG         Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_orasoft_u01 vg_orasoft -wi-a----- 40.00g                                             
  Vol00          vg_root    -wi-ao---- 20.00g                                             
  Vol01          vg_root    -wi-ao---- 10.00g                                             
  Vol02          vg_root    -wi-ao---- 10.00g                                             
  Vol03          vg_root    -wi-ao----  2.00g   
(4)创建文件系统:
[root@rac1 ~]# mkfs.ext4 /dev/vg_orasoft/lv_orasoft_u01
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
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624
Writing inode tables: done                            
Creating journal (32768 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@rac1 ~]#  mkdir /u01
[root@rac1 ~]# mount /dev/vg_orasoft/lv_orasoft_u01 /u01
[root@rac1 ~]# df -h
Filesystem                             Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-Vol00               20G  5.6G   14G  30% /
tmpfs                                  996M   76K  996M   1% /dev/shm
/dev/sda1                              194M   35M  150M  19% /boot
/dev/mapper/vg_root-Vol01              9.9G  151M  9.2G   2% /home
/dev/mapper/vg_root-Vol02              9.9G  151M  9.2G   2% /tmp
/dev/sr0                               3.6G  3.6G     0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/sr0                               3.6G  3.6G     0 100% /media/cdrom
/dev/mapper/vg_orasoft-lv_orasoft_u01   40G  176M   38G   1% /u01
(5)加入/etc/fstab 文件
/dev/vg_orasoft/lv_orasoft_u01 /u01 ext4 defaults 0 0

⛳️ 4.2 Linux系统分区大小扩展


详细过程请参考以下博客


https://blog.csdn.net/weixin_41645135/article/details/121600400

扩展前

973198299427466abe53e590703982c2.png

扩展后

91a0f441cc4f419bad4aecef7591114f.png

目录
相关文章
|
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 介绍
52 0
|
7月前
|
存储 Linux 数据库
Linux中LVM逻辑盘卷管理
LVM (Logical Volume Manager) 是Linux系统中的一种存储管理工具,它将物理硬盘组织成物理卷(PV),然后将物理卷组合成卷组(VG),最后从卷组中创建逻辑卷(LV)。逻辑卷可以按需调整大小,跨越多个物理卷,提供更高的灵活性和可扩展性。LVM的主要优点包括:
|
7月前
|
存储 固态存储 Linux