首页 > 代码库 > Linux下的LVM创建以及Linux快照卷

Linux下的LVM创建以及Linux快照卷

   通过最的学习,我加深了对LVM的理解,在这里,我将它写成博客,一是方便自己记忆,二是让Linux的入门学习者一起学习一下。

   首先我们引入LVM的概念,并展开详细的说明,主要是近期学习的看法,我们先看一个图

wKioL1PGBRrTXGPIAAIcOi_5TiM515.jpg  

  我们将会提到的名词有:PV、VG、LV、PE


  在图中,最下面的,我们可以理解为物理存储介质,硬盘或是分区

     PV:称为物理卷,是LVM的基本存储块。

     VG:称为卷组,我们可以看卷组是由物理卷组合而成的。

     LV:称为逻辑卷,是从卷组中划分出来的。

     PE:physical extent,我就称为物理块,它是LVM中的最小单元。


    原理:LVM技术,就是将一个个物理存储介质,生成一个个物理卷,然后再将多个物理卷构成一个或多个卷组,最后,再从卷组中划分出一个个的逻辑卷,格式化之后,挂载使用。

   通俗解释:如果大家没有接触过的话,我就这么解释一下,PV就是一桶一桶的水,VG就是一个大型的水库,LV则是大家按需从水库中取得需要的水,意味着大家把自己的水放在一个水库中,然后,大家按需去索取,而且还能从外面添加进水库中,其中的关键之处就是PE,相当一滴一滴的水,它是整个划分的关键,这样说,不知道大家有没有一些了解呢


    下面,我就将通过部分例子来进一步说明LVM的原理,在这之前,我们先看看部分命令。wKiom1PGEwHgSeXBAAENcav2FPA976.jpg

  

接下来,我们将在实验中一步步的解释这些命令的意思,让读者理解LVM的创建流程

实验环境是在虚拟机中进行的,我们有一个20G的硬盘,接下来,我们将它划分为3个5G的分区(最后还剩,我们就先不管了),划分分区用fdisk命令,硬盘为/dev/sdb,结果如下图所示:

注意事项,要将分区的系统格式改为LVM(fdisk中按t更改)

  wKiom1PGFs2SV6iJAACcYKO8nQQ406.jpg


 开始实验:

创建物理卷(PV)

    1、先将/dev/sdb1、/dev/sdb2和/dev/sdb创建成物理卷(PV)

        PV:创建物理卷的命令

        PV的用法:pvcreate DEVICE

   wKiom1PGGC6x28HXAABRRJqHgJ0657.jpg

  2、查看我们的物理卷(PV)

    wKiom1PGGJbgUgeQAABEaMbQAhc512.jpg

    从上图,我们可以看出刚刚的三个分区已经被成功的创建成物理卷了

   3、将我们的任一分区移除物理卷,然后再添加回来(添加用上面的pvcreate)

    pvremove:移除分区或是物理介质

    pvremove的用法:pvremove  DEVICE

    wKioL1PGGsOxjRaqAACki54UH2M703.jpg

  4、我们的读者可能会提到,我们的pvdisplay呢,这也是查看物理卷的,但是,它返回的信息更详细

   (以下的结果类似,就不一一解释了)

    wKiom1PGGiDTYf2XAABZaR_fRXc622.jpg


创建卷组(VG)

1、接下来,就是把刚刚创建的这些PV一起放到一个卷组(VG)中去

    vgcreate:是用来创建卷组的命令

    vgcreate的用法:vgcreate  VG_NAME  DEVICE

   wKiom1PGG4PzmlCjAAAxvUdQm9Q685.jpg

2、查看我们的VG情况,使用vgs命令

  wKioL1PGHQ7TjSrXAABAHTqzDv4694.jpg

3、这样,我们的卷组就创建成功了,卷组就是像是一个PV的容器一样,既然是容器,应该就能改变它的容量,下面,我们就说说如何扩展和移除卷组中的物理卷

    vgextend:扩展vg的命令

    vgextend的用法:vgextend  VG_NAME DEVICE

  wKiom1PGHNuAazEVAAA3hsOZ5eg619.jpg

   vgreduce:移除VG中的卷组(PV)

   vgreduce的用法:vgreduce VG_NAME   DEVICE

  wKiom1PGHUfToGSoAAA3OQOZlXY244.jpg


创建逻辑卷(LV)

1、LV就像是从容器里面取出的水,它可以使一个杯子的容量,也可以使一只碗的容量,但是,它一定不能超过VG这个容器里面的容量,即,逻辑边界不能大于物理边界,LV创建的方法如下:

  lvcreate:这个命令是不是跟上面的两个create的相似啊,是的,它就是创建LV的

  lvcreate的用法:lvcreate  -L #UNIT -n LV_NAME VG_NAME 

 假设我们要创建一个6G的逻辑卷,创建后用lvs命令查看

  wKioL1PGIFfApNjDAABpJfX8JjE583.jpg

2、然后,我们要如何使用这个逻辑卷呢,我们先将其格式化,再进行挂载使用

  步骤如下:

#mkdir /mylv
#mke2fs -t ext4 /dev/cshangvg/cshanglv 
#mount /dev/cshangvg/shanglv /mylv

  这样,我们的LV(逻辑卷)就能够被使用了

3、卷组可以扩展和移除,那我们的逻辑卷可以吗?答案是可以的。

   注意:扩展逻辑卷时,它的逻辑边界不能大于物理边界

  lvextend:扩展逻辑卷的大小

  lvextend的用法: lvextend  -L #UNIT DEVICE_LV

 

  我们先看看/mylv挂载时,它的大小:

 wKioL1PGJeuQHd3_AABr_LuYWW4867.jpg

 然后进行扩展成7G大小,步骤就如下图所示:

 wKiom1PGJWfRPORgAACSSgjNbeo581.jpg

  然后,再次查看/mylv挂载的大小

 wKiom1PGJb3wmapYAABw7uJGkUQ692.jpg

从上面两次df命令,我们可以看到,逻辑卷的大小的确扩展了


由于逻辑卷的缩减是一个非常危险的事情,所以,大家操作时,一定要很谨慎

4、先卸载逻辑卷,然后,要进行强制检测

#umount  /mylv
#e2fsck  -f  /dev/cshangvg/cshanglv 
#resize  /dev/cshangvg/cshanglv  #UNIT

5、lvreduce:缩减逻辑卷的命令

    lvreduce的用法: lvreduce  -L #UNIT /dev/cshangvg/cshanglv

  wKioL1PGKT6iXDLEAAC4-f3ThzE774.jpg

6、最后再把逻辑卷挂载上去,我们看看大小

  wKiom1PGKHOQ9KstAABqZYff4EY865.jpg

可以看出,在这过程中,我们的逻辑卷从扩展到缩减的过程


创建快照卷

 快照卷指的是对某个逻辑卷做快照,必须跟目录逻辑卷是在同一个卷组中的,无须指定卷组。

 1、我们要查看逻辑卷是否正则被使用,如果有,则让其程序进程结束

#fuser -v /mylv
#如果有进程使用中,杀掉
#fuser -km  /mylv

 2、为了验证,我们可以拷贝一个文件到/mylv中去,例如/etc/issue

 

 3、创建快照卷

  wKioL1PGK5nSQWxqAAA6ZUzaDC0279.jpg

  上图中有些参数要解释一番 

    -L:指定快照卷的大小

    -n:快照卷的名称

    -p r:表示只有读权限

    -s:指定该逻辑卷为快照卷

 4、然后,创建一个目录,挂载起来

#mkdir /mysnap
#mount /dev/cshangvg/cshang-snap

 5、然后我们改变/mylv中的issue时,/mysnap中的issue不发生改变,拷贝文件进去时,是同样的效果,快照卷就很好的起到了备份作用。


总结:LVM的内容比较多,需要大家多多练习,这更是对我自己说的;对于一个服务器的存储大小的扩展有着很好的应用性,最后的快照卷对于备份也是一个很好的选择。



  



本文出自 “牛叉的孩子光着屁屁” 博客,请务必保留此出处http://cshang.blog.51cto.com/6143980/1438982