linux中的高级存储管理之逻辑卷管理器lvm(代码片段)

N-W N-W     2023-01-03     543

关键词:


前言

在linux提升五中,我们介绍了关于磁盘分区等的内容。但是在生产环境中往往会出现这样的情况,在项目初始我们规划主机时给了/home了50G,但是随着项目发展,用户数量不断上升,此时文件系统50G的大小将无法满足项目的要求,这是我们该如何解决这个问题呢?

第一种比较直接的方法,就是增加一个新硬盘,重新格式化,将原本/home的内容复制过来,然后将原本的分区卸载重新挂载新的分区。这的确是解决这个问题的一个方法,但是显然复制将会很花时间,而且若是在后期发现第二次分区时给的容量过大将会浪费大量磁盘空间,那有没有更好的办法来解决我们的问题呢?这就是我们本节要讲的内容——逻辑卷管理器。


1. 什么是LVM?

LVM全名为Logucal Volume Manager,中文翻译为逻辑卷管理器,它可以将几个物理的分区通过软件组合成一块看起来是独立的大磁盘VG,然后将这块大磁盘在经过划分成为可使用的分区LV,最终可以挂载使用。那么其中的原理是什么呢?

我们首先需要了解一下我们以上提到的一些名词,和一些相关的概念。

物理卷(Physical Volume,PV):物理卷就是组成我们需要的大磁盘的最底层,它是怎么来的呢?首先将我们实际中的分区通过gdisk命令将系统标识符转化为LVM的标识符后,在经过pvcreate命令就可以将其转换为我们的物理卷了。

卷组(Volume Group,VG):卷组其实就是物理卷族,它就是我们在以上提到的由物理卷PV组成的大磁盘。

逻辑卷(Logical Volume,LV):逻辑卷就是将我们的卷组分割后的产物,可以像被格式化的分区一样使用的东西。

物理扩展块(Physical Extent,PE):PE是整个LVM最小的存储数据单位,换句话说,我们的文件数据都是借由写入PE来完成的,它类似于文件系统中的block的大小。

了解完以上的概念,我们接着讲LVM是如何工作的,在前言中我们提到的问题是怎样通过LVM来解决。LVM最主要的功能就是可以弹性的修改文件系统的容量,它是通过交换PE来进行数据转换,将原本LV中的PE转移到其他设备中以降低LV容量,或将其他设备的PE加到LV中增大容量。这样说有些抽象,我们用一个图来理解一下。
如上图,将VG内的PE划分9个给一个逻辑卷LV,若未来这个LV需要扩充的话,增加VG中没有使用的PE即可完成扩充。如果整个VG此时都不够用了,则需要增添新的物理卷PV来扩充VG。

如果到了这里还觉得不好理解,那就来做个实验吧!

2. LVM实验

1. LVM各组件实现流程表

需要注意的是,PV是组成VG的物理卷,而PE是最小存储数据单位。

2. 创建LVM及挂载

首先需要初始化设备,具体步骤如下:

创建一个物理分区作为物理卷,具体如下:


物理分区创建好后,就可以使用pvcreate 分区名称创建pv了

pv创建成功后就可以创建vg啦,直接使用vgcreate VG名称 组成VG的PV名来创建VG,但此时默认创建得到的VG的最小存储单位PE大小为4G,我们可以使用-s来指定PE大小,我在这里选择的PE大小为2M,并且可以使用vgdisplay来查看VG相关详细信息如下:

我们的大磁盘VG得到了,接下来就可以划分可以被初始化使用的LV了,具体步骤如下:
初始化完成后就可以挂载使用我们的逻辑卷了,具体如下:

3. LVM的拉伸

1. VG容量充足时

在VG,也就是我们的大磁盘容量充足时,我们想要扩展我们的逻辑卷LV的容量时,可以使用lvextend -L 容量大小 LV名称来扩展我们的逻辑卷。

但若是只扩展了我们逻辑卷,却未能扩展该卷上的文件系统,这个逻辑卷是无法使用的,所以在扩展完设备后我们应该也要扩展我们的操作系统。扩展文件系统的命令如下:

xfs_growfs  挂载点              在rhel8.0中只能使用挂载点来扩展xfs型文件系统
xfs_growfs  挂载点/挂载设备      在rhel7中可以使用挂载点或者挂载设备来扩展xfs型文件系统
resize2fs  挂载设备             扩展ext型文件系统

具体操作如下:
需注意,在这整个扩展过程中无需卸载设备。

2. 当VG不足时

当VG不足时,我们想要扩展我们正在使用的逻辑卷LV的大小时,需要先对VG进行扩展,再对LV进行扩展。我们知道VG其实是由我们的物理卷PV组成的,所以扩展VG其实就是给VG增添新的物理卷。具体操作如下:
若此时你的主机中没有未使用的物理卷,你首先需要新建一个物理卷,具体操作如上文中所示,须先增添一个序列号类型为linux LVM型的磁盘分区:

然后创建物理卷PV,再利用vgextend VG名 PV名对VG进行扩充,具体操作如下:


然后就回到我们LVM扩充的第一种情况——VG充足的情况下扩充LV,先扩展LV设备再扩展该设备上的文件系统,具体操作如下:

这就完成啦,以上就是我们LVM的扩充的内容,接下来我们看一下如何缩减LVM呢。

4.LVM的缩减

并不是所有文件系统类型都可以进行文件系统的缩减,我们的xfs文件系统就不能够进行缩减,但ext文件系统是可以的。

逻辑卷或者说的更大一些,设备(磁盘分区等存储设备)其实是文件系统的载体,在之前的扩充阶段我们扩展LVM时需要先扩充设备在扩充文件系统,而在LVM缩减阶段我们需要先缩减文件系统再缩减该文件系统所在设备。

实验具体步骤如下:
由于我们之前使用的文件系统类型为xfs,所以我们必须要将文件系统类型先转化ext类型。需注意我们转化文件系统前要卸载设备。

和LVM的扩展不同,LVM的缩减必须要卸载设备才能进行,卸载设备后,使用lvreduce -L 指定逻辑卷容量大小 逻辑卷名缩减设备,具体如下:

5. LVM的LV磁盘快照

什么是LV的磁盘快照呢?

快照就是将当时的系统情况记录下来,就好像照相记录一样。最初创建LV磁盘快照时,未来若有任何数据修改,则原始数据就会搬移到快照区,没有被修改的区域则由快照区和文件系统共享。

所以,我们可以认为LVM是很好的 备份工具,它只有备份又被修改的数据,文件系统中没有被修改的数据依旧被保持在原本的数据快内,但是LVM快照功能会知道哪些数据被放置在哪里,因此快照当时的文件系统就会被备份下来,且快照所占用的容量非常小

关于快照的命令如下:

lvcreate -L 容量大小 快照名称 -s 被照的对象          ##创建快照
lvremove 快照名称                                  ##删除快照

在建立快照之前我们先在我们的逻辑卷中建立一个文件,来验证一下快照的备份功能。

接下来我们建立marslv0的快照,需注意建立快照须卸载设备,


将快照挂载好之后,我们可以查看之前建立的文件如下,

为了验证快照的备份功能,我们先删除快照中的文件,然后重新挂载原逻辑卷,然后查看原文件是否存在,具体操作如下:


我们可以看到原文件依旧存在。

至于删除快照就很简单了,具体操作如下:

6. LVM的删除

LVM的删除也很重要,因为我们的物理分区已经被LVM使用,如果在没有关闭LVM的情况下直接删除分区或转为其他用途,系统很容易出问题,删除流程如下:

  1. 卸载系统上面的LVM文件系统(包括快照和LV)
  2. 删除LV
  3. 先使用vgchange -a n VG名称 使得这个VG不再具有Active的标记,再删除VG,
  4. 删除PV
  5. 将该物理分区的ID修改回83

具体操作过程如下:



以上就完成了LVM的删除了。

7. 如何移除正在使用的PV

如若我们正在使用的vg中有大量剩余未使用空间,此时若是就这样闲置就会浪费这些空间,如何移除组成VG中的某个PV呢?相关命令如下:

vgreduce VG名称 PV名称    ##删除组成该VG的该PV

现在假设我们遇到这样的一个情况,在某个项目中我们预先给我们的卷组分配了两块PV,一个是1G大小,一个是500M大小,再项目即将完成后我们发现该VG中仅使用了不到500M的空间,为了充分利用资源我们需要移除1G大小的PV,但是由于1G大小的PV正在使用中,无法直接移除,我们该如何解决呢?

具体操作如下:

解决办法:须先将/dev/vdb1中的数据移除到/dev/vdb2中,再将/dev/vdb1这个物理卷移除。

pvmove PV1名称 PV2名称    #将PV1中的数据转移到PV2中去

3.LVM相关命令集合

在此,结合鸟哥的linux私房菜,来总结一下相关的命令,如下表:

任务PV阶段VG阶段LV阶段文件系统(xfs/ext4)
查找 scanpvscanvgscanlvscanlsblk,blkid
建立 createpvcreatevgcreatelvcreatemkfs.xfs / mkfs.ext4
列出 displaypvdisplayvgdisplaylvdisplaydf,mount
扩展 extendvgextendlvextend(lvresize)xfs_growfs / resize2fs
缩减 reducevgreducelvresuce(lvresize)不支持缩减/resize2fs
删除 removepvremovevgremovelvremove先卸载,再重新初始化
修改容量 resizelvresizexfs_growfs / resize2fs
修改属性 attributepvchangevgchangelvchange/etc/tstab / remount

linux入门之磁盘管理lvm逻辑卷的使用

Linux入门之磁盘管理(8)LVM逻辑卷的使用在Linux中虽然有raid来保证数据的稳定以及磁盘性能的提高,但是其扩展性并不是很好,在很多生产环境中,都是数据正在使用中,在这时如果中断一段时间就会有很大的损失,因此Linux提供... 查看详情

lvm逻辑卷创建管理(代码片段)

...r(逻辑卷管理器)的简写,它为主机提供了更高层次的磁盘存储管理能力。LVM可以帮助系统管理员为应用与用户方便地分配存储空间。在LVM管理下的逻辑卷可以按需改变大小或添加移除。另外,LVM可以为所管理的逻辑卷提供定制的... 查看详情

ii第五单元使用逻辑卷管理器管理灵活存储

...lvmpv 物理卷vg 物理卷组pe 物理拓展,lvm最小的存储单元lvm逻辑卷,时最终我们使用的可以伸缩的设备为什么使用逻辑卷逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空 查看详情

逻辑卷管理器(lvm)(代码片段)

一、什么是LVM?LVM(LogicalVolumeManager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及win... 查看详情

linux入门之磁盘管理lvm逻辑卷案例

Linux入门之磁盘管理(9)LVM逻辑卷案例案例介绍阶段(1):创建一个由两个物理卷组成的大小未20G的卷组myvg,要求其PE大小为16M;而在此卷组中创建一个大小未5G的逻辑卷lvtest,此逻辑卷要能在开机后自动挂载至/mnt/lvtest目录,且... 查看详情

linux磁盘管理:lvm逻辑卷

Linux磁盘管理:LVM逻辑卷LVM简介  LVM(LogicalVolumeManager逻辑卷管理),是Linux操作系统的逻辑卷管理器。  LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继... 查看详情

lvm逻辑卷管理器

LogicalVolumeManager    LVM(逻辑卷管理)是Linux环境下对磁盘分区进行管理的一种机制。    普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,    某个分区空间耗尽时,... 查看详情

第二本书unit5.使用逻辑卷管理器管理灵活存储

unit5使用逻辑卷管理器管理灵活存储1.lvm(可溶性磁盘扩展)1).lvm建立(设备可以无限扩大,但是文件系统之支持18eb)1.划分物理分区并把分区id修改为8epvs|pvdisplayvdb1,2    /*显示pvvgs|vgdisplaywestos    /*... 查看详情

linux磁盘管理高级

...的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量。LVM还有快照的功能,快照区与原本的LV共用很多PE的区块,因此快照区与被快照的LV必须要要在同一个VG上!系统 查看详情

逻辑卷管理器(lvm)以及快照(特殊逻辑卷)的用法

...sp;      LVM:LogicalVolumeManager,逻辑卷管理,是Linux下对磁盘分区进行管理的一种机制 & 查看详情

磁盘空间的扩展与减少------逻辑卷管理器lvm

...、基本理论知识   LVM是LogicalVolumeManager(逻辑卷管理)的简写,是Linux环境下对磁盘分区进行管理的一种机制。逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整... 查看详情

转载linux磁盘管理:lvm逻辑卷管理

...LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!!一、传统的磁盘管理其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(MasterBootRecorder... 查看详情

逻辑卷管理器(lvm)

1、逻辑卷管理器(LVM)(1)逻辑卷管理器(LVM,logicalvolumemanager)可以整合多个物理分区在一起,让这些分区看起来就像一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个LVM管理的磁盘中删除。这样可以实现磁... 查看详情

逻辑卷管理器(lvm)(代码片段)

...意:在生产中逻辑卷需要配合硬件raid来使用逻辑卷怎么管理和创建呢  1、把块设备,普通的硬盘设备变成物理卷PhysicalV 查看详情

lvm逻辑卷管理

...LogicalVolumeManager)是基于内核的一种逻辑卷管理器,适合大存储设备,并允许动态的调整文件系统的大小。LVM的概念示意图: 650)this.width=650;"src="http://118.89.243.118/wp-content/uploads/2017/04/LVM.png"alt="LVM"style="margin-top:0px 查看详情

逻辑卷管理器(lvm)

 一、什么是LVM?LVM(LogicalVolumeManager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以... 查看详情

lvm逻辑卷管理

...磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻 查看详情

linux中的逻辑卷lvm管理完整初学者指南

参考技术A这是Linux中LVM(逻辑卷管理)的完整初学者指南。在本教程中,您将了解LVM的概念、它的组件以及为什么要使用它。我不会仅限于理论上的解释,我还将展示在Linux中创建和管理LVM的动手示例。简而言之,我将为您提供... 查看详情