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

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

一.LVM原理ide

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

PE  (Physical Extend)  物理拓展post

PV  (Physical Volume)  物理卷spa

VG  (Volume Group)  卷组操作系统

LV  (Logical Volume)  逻辑卷3d

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

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数量,其过程不会丢失原始数据

咱们看到,咱们这里若是要对LV进行扩充,直接加进来一块sdc硬盘,而后将其格式化成PE,而后将该PV加入到了VG当中,这个时候咱们就能够经过增长LV中PE的数量来动态的对LV进行扩充了,只要咱们的LV的大小不要超过咱们VG空余空间的大小就行!

2、建立LVM逻辑卷

 

熟悉了LVM的工做原理,首先是要将咱们的物理硬盘格式化成PV,而后将多个PV加入到建立好的VG中,最后经过VG建立咱们的LV。

3、拉伸一个逻辑卷

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

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

 

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

注意:逻辑卷的拉伸操做能够在线进行,不须要卸载掉咱们的逻辑卷

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

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

由于咱们的逻辑卷的拉伸操做是能够在线进行的,因此这里咱们先将逻辑卷挂载上,并在使用状况下动态的拉伸咱们的逻辑卷

四.实验环境:

clip_image001

clip_image003

首先从空的硬盘sdb上建立两个分区sdb1 1G,sdb2 2G. 为接下来作LVM作准备.

clip_image004

clip_image006

clip_image008

为了后期便于维护管理,记得给分区加上标示,这样即便你不在的状况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存

clip_image010

clip_image012

一、建立逻辑卷

将新建立的两个分区/dev/sdb1 /dev/sdb2转化成物理卷,主要是添加LVM属性信息并划分PE存储单元.

clip_image014

建立卷组 vgdata ,并将刚才建立好的两个物理卷加入该卷组.能够看出默认PE大小为4MB,PE是卷组的最小存储单元.能够经过 –s参数修改大小。

clip_image016

从物理卷vgdata上面分割500M给新的逻辑卷lvdata1.

clip_image018

使用mkfs.ext4命令在逻辑卷lvdata1上建立ext4文件系统.

clip_image020

将建立好的文件系统/data1挂载到/data1上.(建立好以后,会在/dev/mapper/生成一个软链接名字为”卷组-逻辑卷”)

clip_image022

clip_image024

便于之后服务器重启自动挂载,须要将建立好的文件系统挂载信息添加到/etc/fstab里面.UUID能够经过 blkid命令查询.

clip_image026

为了查看/etc/fstab是否设置正确,能够先卸载逻辑卷data1,而后使用mount –a 使内核从新读取/etc/fstab,看是否可以自动挂载.

clip_image028

二、逻辑卷lvdata1不够用了,如何扩展。

给逻辑卷增长空间并不会影响之前空间的使用,因此无需卸载文件系统,直接经过命令lvextend –L +500M /dev/vgdata/lvdata1或者lvextend –l 2.5G /dev/vgdata/lvdata1 给lvdata1增长500M空间(lvdata1目前是2G空间)设置完成以后,记得使用resize2fs命令来同步文件系统。

clip_image030

clip_image032

三、当卷组不够用的状况下,如何扩大卷组

从新从第二块硬盘上建立一个分区sdb3,具体操做步骤省略。并将建立好的分区加入到已经存在的卷组vgdata中。经过pvs命令查看是否成功。

clip_image034

clip_image036

四、当硬盘空间不够用的状况下,若是减小逻辑卷的空间释放给其余逻辑卷使用。

减小逻辑卷空间,步骤以下

一、 先卸载逻辑卷data1

二、 而后经过e2fsck命令检测逻辑卷上空余的空间。

三、 使用resize2fs将文件系统减小到700M。

四、 再使用lvreduce命令将逻辑卷减小到700M。

注意:文件系统大小和逻辑卷大小必定要保持一致才行。若是逻辑卷大于文件系统,因为部分区域未格式化成文件系统会形成空间的浪费。若是逻辑卷小于文件系统,哪数据就出问题了。

clip_image038

完成以后,就能够经过mount命令挂载从新使用了。

clip_image040

五、若是某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其余的空间去。

一、经过pvmove命令转移空间数据

二、经过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。

三、经过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。

四、手工拆除硬盘或者经过一些工具修复分区。

clip_image042

clip_image044

六、删除整个逻辑卷

一、先经过umount命令卸载掉逻辑卷lvdata1

二、修改/etc/fstab里面逻辑卷的挂载信息,不然系统有可能启动不起来。

三、经过lvremove 删除逻辑卷lvdata1

四、经过vgremove 删除卷组vgdata

五、经过pvremove 将物理卷转化成普通分区。

clip_image046

删除完了,别忘了修改分区的id标识。修改为普通Linux分区便可。

clip_image048

总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,由于分区在没有格式化的状况下是没有办法加大或者放小的。经过LVM能够将你的磁盘空间作到灵活自如。