通过最的学习,我加深了对LVM的理解,在这里,我将它写成博客,一是方便自己记忆,二是让Linux的入门学习者一起学习一下。
首先我们引入LVM的概念,并展开详细的说明,主要是近期学习的看法,我们先看一个图
我们将会提到的名词有:PV、VG、LV、PE
在图中,最下面的,我们可以理解为物理存储介质,硬盘或是分区
PV:称为物理卷,是LVM的基本存储块。
VG:称为卷组,我们可以看卷组是由物理卷组合而成的。
LV:称为逻辑卷,是从卷组中划分出来的。
PE:physical extent,我就称为物理块,它是LVM中的最小单元。
原理:LVM技术,就是将一个个物理存储介质,生成一个个物理卷,然后再将多个物理卷构成一个或多个卷组,最后,再从卷组中划分出一个个的逻辑卷,格式化之后,挂载使用。
通俗解释:如果大家没有接触过的话,我就这么解释一下,PV就是一桶一桶的水,VG就是一个大型的水库,LV则是大家按需从水库中取得需要的水,意味着大家把自己的水放在一个水库中,然后,大家按需去索取,而且还能从外面添加进水库中,其中的关键之处就是PE,相当一滴一滴的水,它是整个划分的关键,这样说,不知道大家有没有一些了解呢
下面,我就将通过部分例子来进一步说明LVM的原理,在这之前,我们先看看部分命令。
接下来,我们将在实验中一步步的解释这些命令的意思,让读者理解LVM的创建流程
实验环境是在虚拟机中进行的,我们有一个20G的硬盘,接下来,我们将它划分为3个5G的分区(最后还剩,我们就先不管了),划分分区用fdisk命令,硬盘为/dev/sdb,结果如下图所示:
注意事项,要将分区的系统格式改为LVM(fdisk中按t更改)
开始实验:
创建物理卷(PV)
1、先将/dev/sdb1、/dev/sdb2和/dev/sdb创建成物理卷(PV)
PV:创建物理卷的命令
PV的用法:pvcreate DEVICE
2、查看我们的物理卷(PV)
从上图,我们可以看出刚刚的三个分区已经被成功的创建成物理卷了
3、将我们的任一分区移除物理卷,然后再添加回来(添加用上面的pvcreate)
pvremove:移除分区或是物理介质
pvremove的用法:pvremove DEVICE
4、我们的读者可能会提到,我们的pvdisplay呢,这也是查看物理卷的,但是,它返回的信息更详细
(以下的结果类似,就不一一解释了)
创建卷组(VG)
1、接下来,就是把刚刚创建的这些PV一起放到一个卷组(VG)中去
vgcreate:是用来创建卷组的命令
vgcreate的用法:vgcreate VG_NAME DEVICE
2、查看我们的VG情况,使用vgs命令
3、这样,我们的卷组就创建成功了,卷组就是像是一个PV的容器一样,既然是容器,应该就能改变它的容量,下面,我们就说说如何扩展和移除卷组中的物理卷
vgextend:扩展vg的命令
vgextend的用法:vgextend VG_NAME DEVICE
vgreduce:移除VG中的卷组(PV)
vgreduce的用法:vgreduce VG_NAME DEVICE
创建逻辑卷(LV)
1、LV就像是从容器里面取出的水,它可以使一个杯子的容量,也可以使一只碗的容量,但是,它一定不能超过VG这个容器里面的容量,即,逻辑边界不能大于物理边界,LV创建的方法如下:
lvcreate:这个命令是不是跟上面的两个create的相似啊,是的,它就是创建LV的
lvcreate的用法:lvcreate -L #UNIT -n LV_NAME VG_NAME
假设我们要创建一个6G的逻辑卷,创建后用lvs命令查看
2、然后,我们要如何使用这个逻辑卷呢,我们先将其格式化,再进行挂载使用
步骤如下:
#mkdir /mylv#mke2fs -t ext4 /dev/cshangvg/cshanglv #mount /dev/cshangvg/shanglv /mylv
这样,我们的LV(逻辑卷)就能够被使用了
3、卷组可以扩展和移除,那我们的逻辑卷可以吗?答案是可以的。
注意:扩展逻辑卷时,它的逻辑边界不能大于物理边界
lvextend:扩展逻辑卷的大小
lvextend的用法: lvextend -L #UNIT DEVICE_LV
我们先看看/mylv挂载时,它的大小:
然后进行扩展成7G大小,步骤就如下图所示:
然后,再次查看/mylv挂载的大小
从上面两次df命令,我们可以看到,逻辑卷的大小的确扩展了
由于逻辑卷的缩减是一个非常危险的事情,所以,大家操作时,一定要很谨慎
4、先卸载逻辑卷,然后,要进行强制检测
#umount /mylv#e2fsck -f /dev/cshangvg/cshanglv #resize /dev/cshangvg/cshanglv #UNIT
5、lvreduce:缩减逻辑卷的命令
lvreduce的用法: lvreduce -L #UNIT /dev/cshangvg/cshanglv
6、最后再把逻辑卷挂载上去,我们看看大小
可以看出,在这过程中,我们的逻辑卷从扩展到缩减的过程
创建快照卷
快照卷指的是对某个逻辑卷做快照,必须跟目录逻辑卷是在同一个卷组中的,无须指定卷组。
1、我们要查看逻辑卷是否正则被使用,如果有,则让其程序进程结束
#fuser -v /mylv#如果有进程使用中,杀掉#fuser -km /mylv
2、为了验证,我们可以拷贝一个文件到/mylv中去,例如/etc/issue
3、创建快照卷
上图中有些参数要解释一番
-L:指定快照卷的大小
-n:快照卷的名称
-p r:表示只有读权限
-s:指定该逻辑卷为快照卷
4、然后,创建一个目录,挂载起来
#mkdir /mysnap#mount /dev/cshangvg/cshang-snap
5、然后我们改变/mylv中的issue时,/mysnap中的issue不发生改变,拷贝文件进去时,是同样的效果,快照卷就很好的起到了备份作用。
总结:LVM的内容比较多,需要大家多多练习,这更是对我自己说的;对于一个服务器的存储大小的扩展有着很好的应用性,最后的快照卷对于备份也是一个很好的选择。