分享交流
合作共赢!

Linux LVM逻辑卷配置过程详解(创建、增加、减少、删除、卸载)

Linux LVM逻辑卷配置过程详解(创建、增加、减少、删除、卸载)

许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。

一.LVM原理

要想理解好LVM的原理,我们必须首先要掌握4个基本的逻辑卷概念。

PE  (Physical Extend)  物理拓展

PV  (Physical Volume)  物理卷

VG  (Volume Group)  卷组

LV  (Logical Volume)  逻辑卷

我们知道在使用LVM对磁盘进行动态管理以后,我们是以逻辑卷的方式呈现给上层的服务的。所以我们所有的操作目的,其实就是去创建一个LV(Logical Volume),逻辑卷就是用来取代我们之前的分区,我们通过对逻辑卷进行格式化,然后进行挂载操作就可以使用了。那么LVM的工作原理是什么呢?所谓无图无真相,咱们下面通过图来对逻辑卷的原理进行解释!!

https://images0.cnblogs.com/blog/432441/201305/22184844-e3c3745b0d7b4f569c0f2e13853695b6.jpg

1.将我们的物理硬盘格式化成PV(Physical Volume)

我们看到,这里有两块硬盘,一块是sda,另一块是sdb,在LVM磁盘管理里,我首先要将这两块硬盘格式化为我们的PV(Physical Volume),也就是我们的物理卷,其实格式化物理卷的过程中LVM是将底层的硬盘划分为了一个一个的PE(Physical Extend),我们的LVM磁盘管理中PE的默认大小是4M大小,其实PE就是我们逻辑卷管理的最基本单位。比如说我有一个400M的硬盘,那么在将其格式化成PV的时候,其实际就是将这块物理硬盘划分成了100个的PE,因为PE默认的大小就是4M。这个就是我们的第一步操作。

2.创建一个VG(Volume Group)

在将硬盘格式化成PV以后,我们第二步操作就是创建一个卷组,也就是VG(Volume Group),卷组在这里我们可以将其抽象化成一个空间池,VG的作用就是用来装PE的,我们可以把一个或者多个PV加到VG当中,因为在第一步操作时就已经将该硬盘划分成了多个PE,所以将多个PV加到VG里面后,VG里面就存放了许许多多来自不同PV中的PE,我们通过上面的图片就可以看到,我们格式化了两块硬盘,每个硬盘分别格式化成了3个PE,然后将两块硬盘的PE都加到了我们的VG当中,那么我们的VG当中就包含了6个PE,这6个PE就是两个硬盘的PE之和。通常创建一个卷组的时候我们会为其取一个名字,也就是该VG的名字。

3.基于VG创建我们最后要使用的LV(Logical Volume)

注意】PV以及VG创建好以后我们是不能够直接使用的,因为PV、VG是我们逻辑卷底层的东西,我们其实最后使用的是在VG基础上创建的LV(Logical Volume),所以第三步操作就是基于VG来创建我们最终要使用的LV。

当我们创建好我们的VG以后,这个时候我们创建LV其实就是从VG中拿出我们指定数量的PE,还是拿上图来说,我们看到我们此时的VG里面已经拥有了6个PE,这时候我们创建了我们的第一个逻辑卷,它的大小是4个PE的大小,也就是16M(因为一个PE的默认大小是4M),而这4个PE有三个是来自于第一块硬盘,而另外一个PE则是来自第二块硬盘。当我们创建第二个逻辑卷时,它的大小就最多只有两个PE的大小了,因为其中的4个PE已经分配给了我们的第一个逻辑卷。

所以创建逻辑卷其实就是我们从VG中拿出我们指定数量的PE,VG中的PE可以来自不同的PV,我们可以创建的逻辑卷的大小取决于VG当中PE存在的数量,并且我们创建的逻辑卷其大小一定是PE的整数倍(即逻辑卷的大小一定要是4M的整数倍)。

4.将我们创建好的LV进行文件系统的格式化,然后挂载使用

在创建好LV以后,这个时候我们就能够对其进行文件系统的格式化了,我们最终使用的就是我们刚创建好的LV,其就相当于传统的文件管理的分区,我们首先要对其进行文件系统的格式化操作,然后通过mount命令对其进行挂载,这个时候我们就能够像使用平常的分区一样来使用我们的逻辑卷了。

我们在创建好LV以后,我们会在 /dev 目录下看到我们的LV信息,例如 /dev/vgname/lvname, 我们每创建一个VG,其会在/dev目录下创建一个以该VG名字命名的文件夹,在该VG的基础上创建好LV以后,我们会在这个VG目录下多出一个以LV名字命名的逻辑卷。

下面我们来对整个LVM的工作原理进行一个总结:

(1)物理磁盘被格式化为PV,空间被划分为一个个的PE

(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内

(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘

(4)LV直接可以格式化后挂载使用

(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

https://images0.cnblogs.com/blog/432441/201305/22193028-b0bdd5c6f4a64d958f6e2f43da90aaeb.jpg

我们看到,我们这里如果要对LV进行扩充,直接加进来一块sdc硬盘,然后将其格式化成PE,然后将该PV加入到了VG当中,这个时候我们就可以通过增加LV中PE的数量来动态的对LV进行扩充了,只要我们的LV的大小不要超过我们VG空余空间的大小就行!

二、创建LVM逻辑卷

https://images0.cnblogs.com/blog/432441/201305/23232123-639bc606018a46e28d9a4ddff539eaa7.jpg

 

熟悉了LVM的工作原理,首先是要将我们的物理硬盘格式化成PV,然后将多个PV加入到创建好的VG中,最后通过VG创建我们的LV。

三、拉伸一个逻辑卷

我们知道相比于传统磁盘管理方式的各种问题,使用LVM逻辑卷来管理我们的磁盘,我们可以对其进行动态的管理。在传统的磁盘管理方式中,我们如果出现分区大小不足的情况下,我们此时只能通过加入一块物理硬盘,然后对其进行分区,因为加入的硬盘作为独立的文件系统存在,所以对原有分区并没有影响,如果此时我们需要扩大分区,就只能先将之前的分区先卸载掉,然后将所有的信息转移到新的分区下,最后再将新的分区挂载上去,如果是在生产环境下,这样是不可想象的,正因为如此,我们才出现了LVM的磁盘管理方式,可以动态的对我们的磁盘进行管理。

我们首先来看下动态拉伸一个逻辑卷的示意图:

https://images0.cnblogs.com/blog/432441/201305/24203450-e7004c094af84838b88e2c032227969e.jpg

 

我们从上图可以看到,我们在对逻辑卷进行拉伸时,其实际就是向逻辑卷中增加PE的数量,而PE的数量是由VG中剩余PE的数量所决定的。

注意:逻辑卷的拉伸操作可以在线进行,不需要卸载掉我们的逻辑卷

这样的好处就是当我们的逻辑卷的大小不够用时,我们不需要对其进行卸载,就可以动态的增加我们的逻辑卷的大小,并不会对我们的系统产生任何影响。例如如果我们的服务器上运行着一个重要的服务或者数据库,并要求我们7*24小时不间断保持在线,那么这样的动态增加逻辑卷的大小就非常的有必要了。

接下来我们来看看拉伸逻辑卷的步骤:

因为我们的逻辑卷的拉伸操作是可以在线进行的,所以这里我们先将逻辑卷挂载上,并在使用情况下动态的拉伸我们的逻辑卷

lvm逻辑卷创建及使用

创建逻辑卷

pvcreate /dev/md0

pvs 查看创建的pv组

pvdisplay /dev/md0  查看磁盘详细信息

  

添加vg组:

创建vg组: vgcreate vg1 /dev/md0

扩展vg组: vgextend vg1 /dev/md1

         vgextend vg1 /dev/md5

vgs    vgdisplay vg1

  

lv划分逻辑盘:

lvcreate -L 300M(逻辑盘大小) -n lv01(逻辑盘名称) vg1(逻辑盘所在的vg组)

增加逻辑盘的空间:lvextend -L +200 /dev/mapper/vg1-lv01

减小逻辑盘的空间:lvreduce -L -100 /dev/mapper/vg1-lv01

  

  

删除lv,vg,pv

删除的过程是先lv,再vg,然后再pv

  

删除lv:

lvremove /dev/mapper/vg1-lv01

  

删除vg:

vgremove vg1

  

删除pv

pvremove /dev/md0

pvremove /dev/md1

pvremove /dev/md5

  

  

1、将把我们新添加的8个磁盘做成raid0,raid1,raid5

  

2、将raid0,1,5做成pvs物理盘

命令:

pvcreate /dev/md0

pvcreate /dev/md1

pvcreate /dev/md5

  

使用命令pvs 查看创建的pv组

  

查看磁盘详细信息:pvdisplay /dev/md0

  

3、将添加到pv的磁盘做成一个vg组

命令:

创建vg组:vgcreate vg01 /dev/md0

扩展vg组的空间:vgextend vg01 /dev/md1

         vgextend vg01 /dev/md5

  

查看vg组的磁盘及可用空间及vg名称:vgs

查看vg组信息信息:vgdisplay vg01

  

4、pv和vg都创建成功后,使用lv划分逻辑盘

命令:

创建lv逻辑盘:lvcreate -L 300m -n lv01 vg01

给lv逻辑盘增大空间:lvextend -L +500M /dev/mapper/vg01-lv01

给lv逻辑盘减少空间:lvreduce -L -300M /dev/mapper/vg01-lv01

  

  

5、删除lv ,vg, pv

创建的过程是先pv,再vg,然后再lv

删除的过程是先lv,再vg,然后再pv

  

删除的命令:

先删除lv

lvremove /dev/mapper/vg01-lv01

lvremove /dev/mapper/vg01-lv02

  

再删除vg

vgremove vg01

  

再删除pv

pvremove /dev/md0

pvremove /dev/md1

pvremove /dev/md5

  

  

6、在线实时扩容lv的容量

命令:

给lv添加容量:lvextend -L +400M /dev/mapper/vg01-lv01

刷新lv实时的容量:resize2fs /dev/mapper/vg01-lv01

  

  

7、在线实时缩小lv的容量

mkfs.ext4 /dev/mapper/vg01-lv01

  

  

命令:

先umount /dev/mapper/vg01-lv01

再刷新磁盘:e2fsck -f /dev/mapper/vg01-lv01

重置lv磁盘容量:resize2fs /dev/mapper/vg01-lv01 200m(磁盘减少到200M)

lv逻辑管理处也要重置:lvreduce -L 200M(剩20M) /dev/mapper/vg01-lv01

使用lvscan刷新:lvscan

再挂载:mount /dev/mapper/vg01-lv01 /mnt

  

  

8、lvm 快照备份功能

命令:

创建快照:lvcreate -s -L 100m(增、删、改达到100M后快照失效) -n snap01 /dev/mapper/vg01-lv01

-s 代表创建快照

-L 代表指定有效值:每当原始盘有增、删、改动作时会使用data%值增加,当增加到指定的值时,快照就失效

-n 代表名称

快照失效   umount: /dev/mapper/vg1-snap: not mounted

  

做了快照后,如果想恢复数据直接挂载快照:mount /dev/mapper/vg01-snap01

  

删除快照:lvremove /dev/maaper/vg01-snap01

参考:https://www.cnblogs.com/xiebo-6371/p/7995150.html

赞(0) 打赏
未经允许不得转载:琼杰笔记 » Linux LVM逻辑卷配置过程详解(创建、增加、减少、删除、卸载)

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏