您的位置:首页 > 运维架构 > Linux

linux下LVM相关知识(动态增减LVM,快照功能)的总结

2017-05-13 13:17 232 查看
转自:http://blog.chinaunix.net/uid-24648486-id-3025159.html

一,什么是LVM  

  LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM是磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷(physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

 

二,LVM解决了什么难题

  每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。 

  虽然现在有 很多动态调整磁盘的工具可以使用,例如PartationMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。 

  因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。  

  归纳来讲LVM提供两种比较厉害的功能:

     1):可以动态的增大或者缩小磁盘的大小而不影响磁盘原有的数据

     2):提供一种实现数据备份的通道--快照功能

 

三,LVM的逻辑结构





这里要说明以下几点:

  1),pv被创建后是由很多的PE(physical extension物理盘区)组成的,物理盘区就相当于我们说的block,不过通常比一般的block大,可以是4M,8M,16M等,

  2),当VG被创建后,我们才能正常查看PE的数量

  3),其实最后的LV就是由这些PE组成的,不过在LV里面这些PE叫做LE

  4),一个系统上可以有很多个PV,VG,LV

 

以下是LVM管理的相关命令:





 

四,LVM创建过程

   这里我们在虚拟机里面创建在底层准备两个10G的分区作为PV(两个分区的大小不一定非得相等)

  1),创建两个分区sdb1和sdb2         //这里不再列出创建过程,注意创建分区的ID号为8e

 

  2),把这两个分区创建成PV 

     #pvcreate /dev/sdb1 /dev/sdb2  //创建成PV

     #pvdisplay                     //查看创建的PV详细信息

  

  3),把创建的PV做成VG

     #vgcreate vg0 /dev/sdb1 /dev/sdb2 //创建成VG(记得指定创建的VG名字)

     #vgdisplay vg0                  //查看创建好的vg信息

 

  4),创建LV

     #lvcreate -L 5G -n lvm1 vg0    //创建LV (-L指定LV大小,-n指定LV名字,注意要制定要在哪个vg中创建LV,因为一个磁盘上是可以存在多个卷组vg的)

     #lvdisplay /dev/vg0/lvm1       //查看创建的LV信息(注意这里不能使用lvdisplay lvm1,需要指定lvm1的路径或者指定卷组名称才能显示出来详细信息。例如#lvdisplay vg0)

 

     到这里我们的lv已经创建完毕,它跟我们的基本磁盘分区一样,要想使用必须先格式化。

 

  5),格式化创建的LV

     #mke2fs -j /dev/vg0/lvm1        //格式化成ext3文件系统

     #mount /dev/vg0/lvm1  /mnt      //挂载新的分区到/mnt

     #ls /mnt                        //会有lost+found文件,证明磁盘分区建立成功

 

  其他的命令介绍:

     #pvremove  /dev/sdb2            //删除一个pv

     #vgextend  vg0 /dev/sdb3        //扩展vg的大小(要先创建sdb3作为pv)

     #vgreduce  vg0 /dev/sdb3        //缩小vg的大小(缩减的时候要先使用pvmove /dev/sdb3,把数据移除)

 

五,扩展或者缩减一个LVM的大小

  这里我们要引入两个概念:物理边界和逻辑边界

  物理边界:我们对一个磁盘进行分区的分区边界

  逻辑边界:我们格式化分区,建立文件系统后形成的分区边界

在我们对LVM扩展的时候,我们要先扩展物理边界,然后再扩展逻辑边界;缩减LVM的时候则相反(读者这里可以好好体会下为什么这样做)

 

  扩展LVM:

    #lvextend -L +2G /dev/vg0/lvm1   //为LVM1增加2G的大小(注意这里是扩展的物理边界)

    #df -lh                        //显示发现LVM1的大小没有变化(因为我们还没有扩展逻辑边界)

    #resize2fs -p /dev/vg0/lvm1      //扩展其逻辑边界(-p显示扩展的过程)

    #df -lh                          //这时候发现lvm1的大小已经增加了2G,表明扩展成功

 

  缩减LVM:缩减存在一定的风险,所以在生产环境中我们一般不缩减LVM大小

    #umount  /dev/vg0/lvm1           //必须先卸载掉

    #e2fsck  -f /dev/vg0/lvm1        //对这个逻辑卷进行自检,保证其数据的一致性

    #resize2fs  /dev/vg0/lvm1 3G     //缩减逻辑卷到3G大小(缩减的是逻辑边界)

    #lvreduce -L 3G /dev/vg0/lvm1    //缩减的是物理边界

    #mount  /dev/vg0/lvm1 /mnt       //挂载逻辑卷到/mnt

    #ls /mnt                         //查看数据是否被损坏

    

六,快照snapshot(主要是用作在线备份)

  介绍几个概念,关于数据的备份

    冷备份:卸载掉文件系统,不能读不能写

    温备份:不卸载文件系统,能读取文件系统内容但是不能写

    热备份:不卸载文件系统,既能读取文件系统内容又能写入

  注意两点:

  1),快照其实也是一个逻辑卷  

  2),快照只能对逻辑卷LVM进行备份,并且只能对同一个卷组的逻辑卷进行备份

 

  创建过程:

    #lvcreate -L 512M -s -n lvm1-snap -p r /dev/vg0/lvm1   //创建一个512M的快照(-s指定这是一个快照,-n指定快照名字,-p指定这个快照的权限) 

    #mkdir /snap                       //创建一个目录作为快照卷的挂载点

    #tar -jcf /tmp/snap.tar.gz  /snap/* //备份快照卷的内容到/tmp下

  这个时候无论你在逻辑卷上做什么变化都不用担心数据丢失了,从备份的快照文件里面可以恢复之前的文件,这就是快照卷的强大之处了……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: