想象一种情况,在最初规划主机是/home目录分配了50G空间,随着用户量的增大及用户文件的增多,这50G空间无法满足需求,这个时候作为系统管理员的你应该怎么办呢?也许你可以通过添加硬盘,重新分区,格式化让后重新挂载/home将原来/home目录中的文件copy过来,但是如果过一段时间之后你发现又无法满足需求了呢?或者你上一次分配的空间过大造成了很大的浪费呢?当然,你可以再重新分区,格式化后再次挂载,但是这给系统管理员带来了很多的工作,Linux为我们提供了逻辑卷管理器(LVM)来轻松的满足我们的需求

LVM的重点在于可以弹性调整文件系统的容量,而并非在于性能与数据保护上面,LVM可以整合多个物理分区,让这些分区看起来就像一个磁盘一样,而且,还可以在将来添加其他的物理分区或将物理分区从这个LVM中删除

LVM的做法是将几个物理的分区或磁盘,通过软件组合成为一块看起来是独立的大磁盘(VG),然后再将这块大磁盘分成若干个可以使用的LV,在创建LV之前,先熟悉几个概念

PV(physicalvolume)物理卷:我们实际的分区需要调整系统id成为8e(LVM的标识符),然后再经过pvcreate的命令将它转换成LVM最低层的物理卷(PV),之后才能否将这些PV

加以利用,可以通过fdisk调整system id

VG(volumegroup)卷组,VG就是讲若干的PV组合在一起,看起来就是一个大磁盘,磁盘的容量与PE 有关,每个VG最多仅能包含65534个PE.

PE(physicalextend)物理扩展块,LVM默认使用4M的PE,它是整个LVM的最小存储块,我们的文件数据都是由写入PE来处理的,简单的说,这个PE有点像文件系统里面的block

LV(Logicalvolume)逻辑卷,最终的VG还会被切成LV,LV 就是最终可以被格式化使用的分区,LV弹性更改容量就是通过调整PE数量来实现的

下面就是LVM的创建,更改及删除流程介绍,任然以虚拟机演示,在前面,我已经为我的虚拟机添加了一块硬盘/dev/sdb,空间大小为20G,下面我想将其分成4个5G的分区,使用fdisk

Linux LVM逻辑卷管理器_Linux

调整分区的system id,使其成为8e(lvm的标识符)

Linux LVM逻辑卷管理器_Linux_02

完成后使用pvcreate创建pv

Linux LVM逻辑卷管理器_主机_03

接下来创建VG,使用vgcreate ,-s可以指定PE的大小,单位可以是m,g,t。下面就新建VG,PE设置为8M,不用-s选项的话默认4M

Linux LVM逻辑卷管理器_Linux_04

上面就已经创建了一个VG,现在如果想个这个VG增加容量,就可以使用vgextend

Linux LVM逻辑卷管理器_Linux_05

此时已经看到我的myvg空间已经是10G,接下来,我就要为我的myvg创建LV,我先创建一个大小为6G的mylv

lvcreate用法:

lvcreate –L LVSIZE |-l PE的个数  -n LVname  VGname

Linux LVM逻辑卷管理器_主机_06

接下来就要对这个LV 进行格式化和挂载,然后就可以使用了

Linux LVM逻辑卷管理器_空间_07

使用mkfs或mke2fs对/dev/myvg/mylv进行格式化后将其挂载到目录就可以使用了,如下图,我是将其挂载到/mydata目录下

Linux LVM逻辑卷管理器_用户_08

copy文件到/mydata目录,在使用一段时间后发现、mydata目录6G空间已经无法满足需求,这时就要扩展逻辑卷,上面我们创建的VG还有空间,这里我就直接扩展LV,如果VG没有多余空间可用,则可以新建PV,扩展VG,然后再扩展LV.

LV的扩展分为物理扩展和逻辑扩展,需要先进行物理扩展然后才能逻辑扩展

物理扩展:lvextend –L SIZE | –l PE数量  lvname ;lvresize –L SIZE | –l PE数量  lvname

Linux LVM逻辑卷管理器_系统管理员_09

完成上面的物理扩展后看到文件系统的容量却没有相应的增加,这时我们需要对其进行逻辑扩展

逻辑扩展,可以选择将完整的LV 容量扩展到文件系统,也可以选择要扩展的容量大小

resize2fs  device  [size] 注意这里的size一定是要跟扩大到多少而不能输入扩大多少,看我下面的错误,我再size处输入+1G,完成后却发现空间反而比原来还要小,幸好这只是测试。所以执行时一定要谨慎。

Linux LVM逻辑卷管理器_系统管理员_10

Linux LVM逻辑卷管理器_空间_11

再次resize到6G,

Linux LVM逻辑卷管理器_Linux_12

Linux LVM逻辑卷管理器_系统管理员_13

如果我们不在resize2fs后面跟size则默认将其扩展到与lv一下大小

Linux LVM逻辑卷管理器_系统管理员_14

Linux LVM逻辑卷管理器_用户_15

缩减逻辑卷,前面一直说的都是放大容量,如果减小容量的话该怎么操作呢,其实就是前面的流程反过来,在缩减之前,需要确认缩减为多大,必须要能容乃原有的数据。

缩减也分为逻辑缩减和物理缩减,需要先进行逻辑缩减。

逻辑缩减,就是上面提到的resize2fs

Linux LVM逻辑卷管理器_系统管理员_16

物理缩减,现在讲mylv的容量缩减5G

Linux LVM逻辑卷管理器_空间_17

接下来,将/dev/sdb2移出myvg,首先需要确定/dev/sdb2里面的PE完全不被使用后才能移出,所有的按如下步骤进行:

Linux LVM逻辑卷管理器_用户_18

这时再来看,vg和pv都变小

Linux LVM逻辑卷管理器_主机_19

最后再将/dev/sdb2移出pv

Linux LVM逻辑卷管理器_Linux_20