LVM(Logical Volume Manager)
试想一种情况,当初我们在规划磁盘的时候,只给某一个文件系统之划分了30G的容量,但是后来,随着业务的需求,该文件系统的使用量会越来越大,等到以后再有数据存放时,发现该文件系统的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载文件系统等过程就可以使用这个文件系统了,再将原来文件系统的数据完全的复制过来。等到后来又发现,规划的这个文件系统又太大了,然后又使用上述方法来减少文件系统的大小。虽然这种方法可行,但是效率低,比较复杂。不应该是我们首选的方法。
当然,我们可以这样做,将多个分区(PV)组合成一个更大的磁盘(VG),这个更大的磁盘(VG)由许多的区块(PE)组成。在将这个更大的磁盘分割成许多分区(LV),这些分区(LV)经过格式化,然后挂载在某个目录下就可以使用了。而挂载在某个目录下的文件系统下的容量大小,就是当初由这个更大的磁盘(VG)分给这些分区(LV)的区块(PE)的数量。区块的数量决定了文件系统的大小,所以想增加某个文件系统大小,可以增加区块的数量;要想减少文件系统的大小,减少区块的数量即可。而这就是所谓的LVM。
LVM可以弹性的调整文件系统的大小,通过调整区块的数量就可以调整文件系统的大小。而这个区块就叫做PE。
LVM中的相关概念
接下来就介绍LVM的中的相关概念,什么是PE,PV,VG,LV?
PE:Physical Extend,实体延伸区块,每一个PE的大小默认为4M,PE是LVM中最小的存储单元。LVM中的PE类似于文件系统的Block。而之所以能够调整文件系统的大小就是通过添加或减少PE的数量来实现的。
LE:Logical Extend,逻辑延伸区块,就是将PE分给了LV之后,PE在LV里就叫做LE。
PV:Physical Volume,实体卷,使用fdisk来修改分区类型为8e后,然后在使用pvcreate指令就可以创建一个PV。
VG:Volume Group,卷组,就是将多个PV组合起来,使用vgcreate指令就形成了一个卷组。上述所说的PE就是在VG里产生的。VG里的PE数量最大支持65534个。
LV:Logical Volume,逻辑卷,将VG经过格式化以后,在使用lvcreate指令就可以形成一个LV。而LV的大小就是VG分配的PE的数量决定的。LV在经过格式化、挂载后就可以使用了。
LVM的创建流程图
创建整个LVM的过程如图所示:
创建LVM的步骤如下:
一、创建PV使用的指令
pvcreate 设备名:将实体分区创建成PV
pvscan:搜寻系统上有PV的磁盘或分区
pvdisplay:显示PV的详细信息
pvremove:删除PV,该分区不再具有PV属性
pvs:显示PV的信息
注意:在使用fdisk device命令创建完分区后,执行partprobe device让内核重读分区表
二、创建VG使用的指令
vgcreate VG名称 PV名称:将多个PV创建成一个VG。
-s #:指定PE的大小,默认是4M
vgscan:搜寻系统上是否有VG。
vgdisplay:显示VG的详细信息。
vgextend VG名称 PV名称:将某个PV增加到某个VG中去。
vgreduce VG名称 PV名称:在某个VG内移除某个PV。
vgremove VG名称:删除VG。
vgchange:设定VG是否启动。
vgs:简单的显示VG的信息。
三、创建lv使用的命令
lvcreate [option] LV名称 VG名称:创建lv
-L #:指定LV的空间大小
-l #:接PE的个数
-n :后面必须接LV的名称
lvscan:显示系统上LV是否存在
lvdisplay [/path/to/lv]:显示LV的详细信息
lvs:简单的显示LV的信息
lvremove /PATH/TO/LV:删除LV
lvextend:用来扩展或缩减LV的容量
-L [+]#:增加lv的容量到#,+表示lv增加的容量为#
lvreduce:缩减lv的容量
-L [-]#:减少lv的容量到#,-表示lv减少的容量为#
经过上面的步骤,将创建的lv经过格式化、挂载以后就是一个可以使用的文件系统了。
LVM容量的扩展和缩减
由于文件系统是经过分区格式化以后形成的,所以文件系统的大小取决分区的大小。分区的大小决定了磁盘的物理边界,而文件系统的大小决定了磁盘的逻辑边界。一般情况下,逻辑边界和物理边界基本重合。所以想要增加一个文件系统的大小,首先的增加磁盘的物理边界,再增加磁盘的逻辑边界即可。相反减少文件系统的大小,是先减少磁盘的逻辑边界,再减少磁盘的物理边界的。
一、扩展逻辑卷
1、使用lvextend来扩展逻辑卷(lv)的物理边界大小。
语法格式:lvextend [option] /PATH/TO/LV
-L [+]#:增加lv的容量到#,+表示lv增加的容量为#,需要指定单位。
-l [+]n:表示增加的PE个数。
为什么使用df命令和lvs命令显示的效果不一样,这是因为虽然增大了lv的物理边界,但是没有增加它的逻辑边界。只要再改变lv的逻辑边界,显示效果就一样。
2、使用resize2fs来改变lv的逻辑边界
语法格式:resize2fs [-p] /path/to/lv [size]
-p:表示能增加多大就增加多大 ,也可以用来减少。
size:表示LV的大小,需要指定单位。
说明:增大某个lv的容量可以在线增加,就是说不需要卸载就可以增加,而且增大lv的容量风险较小,基本上无影响。
二、缩减逻辑卷的容量
在缩减逻辑卷之前要注意一下三点:
(1)、确保缩小后的容量依然可以存储原来的数据,可以使用df -hP来查看。
(2)、缩小逻辑卷不能在线缩小,必须先卸载文件系统。
(3)、在缩减之前必须先强行检查文件系统,以确保文件系统处于一致性状态,可以使用e2fsck -f /path/to/lv来强行检查。
当然缩减lv的容量过程与增大lv的容量过程正好相反,先减少文件系统的逻辑边界,在减少分区的物理边界即可。
1、使用resize2fs来减少物理边界。
语法格式:resize2fs /PATH/TO/LV [size]。
size:指定lv的容量,需要指定单位。
2、减少lv的逻辑边界,使用lvreduce指令。
语法格式:lvreduce [option] /PATH/TO/LV。
-L [-]#:表示减少的lv容量到#,-表示减少的lv容量为#,需要指定单位。
-l [-]n:指定要缩减的PE个数。
然后再使用mount命令重新挂载就可以使用逻辑卷了。
转载于:https://blog.51cto.com/xslwahaha/1436419