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


哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程,B站及腾讯课堂讲师,直播量破10W
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 1.导读
    • 2.概念
      • ⛳️ 2.1 LVM
      • ⛳️ 2.2 PE
      • ⛳️ 2.3 PV
      • ⛳️ 2.4 VG
      • ⛳️ 2.4 LV
    • 3.逻辑卷常用命令
    • 4.实战案例
      • ⛳️ 4.1 LVM 全流程操作
      • ⛳️ 4.2 Linux系统分区大小扩展

前言

近期正在给客户部署几套新的Linux操作系统,讲LVM的基本知识做了下总结

1.导读

想像一个情况,你在当初规划主机的时候将 /home 只给他 50G ,等到使用者众多之后导致这
个 filesystem 不够大, 此时你能怎么作?多数的朋友都是这样:再加一颗新硬盘,然后重新
分区、格式化,将 /home 的数据完整的复制过来, 然后将原本的 partition 卸载重新挂载新的
partition 。啊!好忙碌啊!若是第二次分区却给的容量太多!导致很多磁盘容量被浪费了!
你想要将这个 partition 缩小时,又该如何作?将上述的流程再搞一遍!唉~烦死了,尤其复
制很花时间ㄟ~有没有更简单的方法呢? 有的!那就是我们这个小节要介绍的 LVM 这玩意
儿!

2.概念

LVM使用分层结构,如下图所示
什么是Linux的LVM:PE, PV, VG, LV 的意义是?_第1张图片

PE(Physical Extend) 物理拓展
PV(Physical Volume) 物理卷
VG(Volume Group) 卷组
LV(Logical Volume) 逻辑卷

什么是Linux的LVM:PE, PV, VG, LV 的意义是?_第2张图片

⛳️ 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 ”的样式!

什么是Linux的LVM:PE, PV, VG, LV 的意义是?_第3张图片

通过 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

什么是Linux的LVM:PE, PV, VG, LV 的意义是?_第4张图片

[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

扩展前

什么是Linux的LVM:PE, PV, VG, LV 的意义是?_第5张图片

扩展后

什么是Linux的LVM:PE, PV, VG, LV 的意义是?_第6张图片
大家点赞、收藏、关注、评论啦 微信公众号

你可能感兴趣的:(RHEL,Linux,linux,运维,服务器)