Linux-LVM逻辑卷管理

news/2024/12/23 7:38:56/

一、背景

        Linux运维过程中大家有没有想过生产环境服务器磁盘分区如果数据量越来越膨胀(这些都是重要数据,不能删除),那么此时如何来应对这个问题呢?   既要不影响正在运行的程序,同时也不能中断关机等操作。

        这么一想就很蛋疼了。假设你运行的是kafka或者mysql数据库、或者其他有状态的服务,由于之前规划存在问题或者突然情况,导致数据增长速率超过你的预期,就会出现需要分区需要扩容的情况了。

        LVM逻辑卷的机制是其中一种可以满足在线热扩容、对应用程序无关、安全的磁盘管理机制,也许可以满足你的需求。LVM(逻辑卷管理)是一种灵活的存储管理技术,允许用户将一个或多个物理硬盘的分区组合起来,形成一个物理卷集合,从而可以更灵活地管理和分配磁盘空间。

        说白了就是,应用层只管对接抽象的数据结构,无须关心底层实现,底层实际容量变动对上层无感。  接下来让我们一起来看看,LVM逻辑卷该如何使用.

        为了实现分区动态扩容机制,前期进行分区选型的时候,要根据情况判断,是否需要使用LVM方式划分分区方便后面应对动态扩容的需求,普通分区方式直接挂载,无法做到动态扩容。

二、LVM的整体实现原理

1、基本术语

  1. PE(Physical Extent):物理扩展单元

    • 定义:PE 是 LVM 中的基本分配单位,它是组成卷组(VG)的基本单元。
    • 大小:PE 的大小通常是 4MB,默认情况下是固定的,但可以根据需要进行配置。
    • 作用:PE 是物理卷(PV)上分配给逻辑卷(LV)的最小单位,逻辑卷由多个 PE 组成。
  2. PV(Physical Volume):物理卷

    • 定义:PV 是指用来创建卷组的一个或多个磁盘分区或整个磁盘。
    • 作用:PV 是 LVM 的基础,它包含了用于 LVM 的存储空间。物理卷可以是硬盘上的一个分区或整个磁盘。
    • 创建:使用 pvcreate 命令将一个或多个磁盘分区或整个磁盘转换为物理卷。
  3. VG(Volume Group):卷组

    • 定义:VG 是由一个或多个物理卷组成的集合,它提供了一个可以划分成多个逻辑卷的空间池。
    • 作用:VG 是 LVM 中的逻辑容器,它将多个物理卷组合在一起,提供了一个统一的存储池,可以在其中创建逻辑卷。
    • 创建:使用 vgcreate 命令创建卷组,并指定一个或多个物理卷作为成员。
  4. LV(Logical Volume):逻辑卷

    • 定义:LV 是在卷组内部定义的一个存储区域,它可以动态地调整大小,并且独立于底层物理存储设备。
    • 作用:LV 类似于传统的文件系统,但是提供了更多的灵活性和可扩展性。逻辑卷可以跨越多个物理卷。
    • 创建:使用 lvcreate 命令创建逻辑卷,并指定卷组和大小。

2、关系图(PV、VG、LV、PE)

        PV作为物理存储层,组成为VG抽象资源池,LV从VG中按需申请获取存储容量,不够则继续可以从VG中申请扩容,底层如何扩容,PV之间如果组织存储等等,应用层LV不需要关心、上层对下层变动无感、透明。

        如果后期需要扩容,只需要继续往VG里面添加PV,VG存在足够容量,LV就能继续从VG资源池中拿到存储容量。从而实现,分区实时在线动态热扩容的目的。 再也不怕磁盘空间不足的问题了。

三、扩容实操

1、创建PV

存在一个空白的硬盘: /dev/sdb,  直接使用这个/dev/sdb全部转换为一个PV(切割PE的过程).

pvcreate /dev/sdb

2、创建VG且添加PV

创建VG名称为: my-vg, 并且将/dev/sdb这个PV加入到VG资源池:

vgcreate my-vg /dev/sdb

3、创建LV,从VG获取存储容量

   创建LV名称为: my-lv, 并且从my-vg申请10G的存储空间.

lvcreare -n my-lv -L 10G my-vg

4、格式化LV,创建文件系统

    针对my-lv创建文件系统,文件系统类型是xfs. 

mkfs.xfs /dev/my-vg/my-lv

5、挂载LV卷到目录挂载点,实现文件写入/读取

  挂载:   mount /dev/my-vg/my-lv   /data/,   测试写文件、读文件完全没问题.

 mount /dev/my-vg/my-lv   /data/

6、扩容LV卷大小,实现动态扩容

     假设此时我们的10G存储不够了,那么可以实现实时动态无感扩容,对上层进程无感扩容,不影响业务程序和服务。

      1、LV扩容的前提那肯定是看VG资源池是否充足对吧, 巧妇难为无米之炊, VG没容量肯定申请不下来。

       2、执行lvextend扩容命令: lvextend -L +8G /dev/my-vg/my-lv

lvextend -L +10G /dev/my-vg/my-lv

       3、扩容成功后,df -h /data/ 查看容量还是10G而不是18G?  先不慌, 虽然LV扩容了,但是之前创建的文件系统是针对10G的LV当时识别的。 需要重新识别的过程

xfs_growfs /data/  #重新识别文件系统

        最后df -h /data/查看,发现容量已经扩容为18G. 

四、Centos7操作系统默认分区形式是LVM

        安装Centos7操作系统,如果选择默认分区则就是使用LVM管理硬盘的.

        查看操作系统的挂载情况和磁盘情况:

        可以发现 / 根分区, 挂载的是一个LV不是普通分区。 这样我们的/分区可以动态扩容,只要再插入一台硬盘,将硬盘制作为PV, PV加入到这个VG, LV再从VG申请容量就可以完成/分区扩容的目的。 很方便,再也不怕/分区满了.

五、总结

1、涉及到的相关命令

1、PV

创建PV:  pvcreate    例子: pvcreate /dev/sdb /dev/sdc

删除PV: pvremove

查看PV:  pvs、pvdisplay(更加详细的信息)

2、VG

创建VG:  vgcreate     例子: vgcreare myvg /dev/sdb /dev/sdc

删除VG: vgremove

查看VG:  vgs、vgdisplay(更加详细的信息)

3、LV

创建LV:  lvcreate      例子: lvcreate -n mylv -L 2G myvg

删除LV: lvremove

查看LV:  lvs、lvdisplay(更加详细的信息)

扩容:      lvextend      例子:  lvextend -L +10G /dev/myvg/mylv

4、更新文件系统扩容信息

针对 EXT2、EXT3、EXT4文件系统类型:   resize2fs /dev/myvg/mylv

针对XFS文件系统类型:   xfs_growfs /data/

创建文件系统:    mkfs.xfs /dev/myvg/mylv

2、LVM相关总结

        记住一个原则就是,这种动态扩容存储相关的,大部分的核心思想就是将上层依赖的东西,依赖于一个抽象层而非实际存储层,因为依赖抽象层以后,抽象层可以不动,底层无论怎么变都是无感、透明的,这样扩展性强。  我的容量不够直接每次都加硬盘(PV)即可,我的容量可以一直扩下去。

        包括像K8S的PV、PVC这些存储机制,大家想想是不是有异曲同工之妙。 后端PV存储类型、容量大小都不需要关心, 应用只需要申请PVC, 拿到存储空间就行,我管你后端是NFS还是Ceph、还是其它存储方式,我应用层能用就行,这个不归应用层管,对应用层透明的。


http://www.ppmy.cn/news/1526543.html

相关文章

Maven 的多种打jar包方式详细介绍、区别及使用教程——附使用命令

文章目录 1. **标准 JAR 打包****打包方式****配置示例****使用方式****优点****缺点** 2. **可执行 JAR(Executable JAR)****打包方式****配置示例****使用方式****优点****缺点** 3. **Uber JAR(Fat JAR / Shadow JAR)****打包方…

Comsol 利用多孔材料填充复合吸声器,拓宽低频完美吸声

参考文献:Cheng B , Gao N , Huang Y ,et al.Broadening perfect sound absorption by composite absorber filled with porous material at low frequency:[J].Journal of Vibration and Control, 2022, 28(3-4):410-424.DOI:10.1177/1077546320980214. 为了提高低…

优化Web性能:Varnish中精准识别并缓存移动与桌面请求

引言 在现代Web开发中,为了提升用户体验,针对不同类型的设备提供定制化的内容是一项重要的策略。Varnish作为HTTP加速器和缓存代理服务器,能够帮助我们实现这一目标。本文将详细介绍如何利用Varnish来实现基于设备类型(PC端与移动…

Pr:首选项 - 媒体缓存

Pr菜单:编辑/首选项 Edit/Preferences Premiere Pro 首选项中的“媒体缓存” Media Cache选项卡的设置用于管理和优化媒体缓存文件的存储与清理。定期清除媒体缓存是优化 Pr 性能或进行故障排除的最佳做法。 将视频和音频导入 Pr 时,它会将这些文件处理成…

企业的终端安全该怎么防护?

安装金刚钻信息网站数据防泄密系统能够有效防止终端数据泄露,提供全面的安全保障。该系统通过对终端上的敏感数据进行加密,确保只有经过授权的用户才能访问或读取数据,即使设备丢失或遭到入侵,数据也不会被轻易获取。此外&#xf…

单硬盘安装Win10和麒麟V10双系统指导建议

随着信创电脑的普及,国产操作系统也逐渐走进了大家的视野,许多人选择了国产操作系统来体验其开源、安全、高效的特性,而Windows系统也是大多数人习惯使用的操作系统。一台电脑上同时安装银河麒麟V10和Windiows10双系统也成为了非常常见的需求。那么,如何在一台电脑上安装银…

SpringBoot框架下的房产销售系统设计与实现

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了房产销售系统,它彻底改变了过去传统的…

Android12_13左上角状态栏数字时间显示右移动

文章目录 问题场景解决问题 一、基础资料二、代码追踪三、解决方案布局的角度解决更改paddingStart 的默认值设置marginLeft 值 硬编码的角度解决 问题场景 1)早期一般屏幕都是方形的,但是曲面屏,比如:好多车机Android产品、魔镜…