码迷,mamicode.com
首页 > 其他好文 > 详细

LVM

时间:2016-08-08 01:08:21      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:linux

LVM详解

    在我们的Linux内核上不仅支持所谓的MD(Muiti Device:多设备)模块,MD又被称为Meta Device(元设备)模块,也支持DM的相关概念。

      DM(Device Mapper:设备映射)是Linux中一种常用的机制,这种机制和MD类似,也是一种提供逻辑设备的机制,DM的主要功能是将多个物理设备映射为一个逻辑设备,功能比MD要强大,不仅可以提供RAID功能,还可以提供LVM2(逻辑卷2)的功能,LVM1(逻辑卷1)并不需要DM提供支持,DM可以用来实现RAID0,RAID1,JBOD等功能,但是实现RAID5很困难,所以说DM和MD模块的功能并不是完全重叠的,这是二者可以共存的原因,所以我们现在经常使用MD来实现RAID,使用DM来实现LVM2,DM和MD是Linux内核中两种不同的工作模块,是两种不同的生成逻辑设备的机制,DM同样也是LVM2这种技术依赖的核心,DM和MD一样都包含多种子模块,用来实现多种不同的组织方式(将物理设备组织为逻辑设备的方式):

    ->linear:线性设备,类似于JBOD,可以将多块存储空间拼接成一块来进行使用

    ->mirror:类似于RAID中的镜像设备

    ->snapshot:快照设备,这是MD模块所不具备的功能

         快照也是一种备份机制,它可以将数据保留在你使用快照的那一刻,快照其实就是访问同一个数据的另外一条路径一样,类似于我们的软链接,软链接文件的大小很小,但是它所指向的数据有可能会很大,快照的机制和软链接的机制是近似的,快照卷的大小也是比原来的卷要小很多,因为快照中保存的只是原来路径中访问的到的那些数据中被修改过的数据未被修改时候的数据,意思就是原来路径中所保存的那些数据在修改之前都会先在快照中保存一份然后再进行修改,而其他的数据仍然保存在原路径中,所以快照很小,但是快照可以让我们的数据停留在过去的某一个时刻,快照的作用就是为了实现数据备份,和RAID中的数据恢复机制不一样的,RAID中的数据恢复机制是在硬件级别上,为了保证数据不在硬件损坏的前提下发生丢失的一种恢复机制。

    ->multipath:多路径功能,同样也是MD模块所不具备的功能,多路径是为了实现数据传送的负载均衡,或者说是为了提供数据冗余能力,多路径功能就需要借助于DM模块来配置,让我们能够实现数据存储设备的循路。

    总的来说DM模块的能力就是将多块物理设备组织成为一块逻辑设备,DM所映射出来的逻辑设备在容量大小上可以实现动态增减,体现在物理层面就是增减物理设备。


·DM模块实现将多块物理设备映射为一块逻辑设备的整体架构分为三部分:

   1,pv(physical volume:物理卷)

        物理卷是底层真正提供支持的物理设备,我们的物理卷可以是磁盘,也可以是磁盘分区,还可以是RAID,只要是一个块设备就行

        管理物理卷的命令:

        ->创建pv:将物理设备创建为物理卷

            pvcreate命令

            使用格式:pvcreate 设备文件名

            创建pv之前必须得创建好磁盘分区,而且磁盘分区的类型必须得改为8e,还有我们的fdisk命令创建分区的时候最多只能创建15个分区

            技术分享

            然后利用这两个磁盘分区来创建物理卷

            技术分享

        ->查看pv:

            pvdisplay命令

                默认查看当前系统上所有pv的详细信息

                技术分享

                如果命令后面接上具体的设备文件名的话,就会查看该设备对应的pv的详细信息

                技术分享

            pvs命令

                默认查看系统上所有的pv的缩略信息

                技术分享

                同样后面如果跟上具体的设备文件名的时候会显示该设备对应的pv的缩略信息

                技术分享

        ->删除pv:将pv中的元数据全部抹掉

            pvremove命令

            使用格式:pvremove 设备文件名

            技术分享      

        ->扫描pv:扫描当前系统所存在的pv

            pvscan命令

           技术分享

        ->把pv中的数据挪到另一个pv上面去:将一个物理pv上的PE(我们在下面解释)挪到另一个物理pv上去

            pvmove命令

            使用格式:pvmove 设备文件名

    2,vg(volume group:卷组)

        卷组相当于我们的扩展分区,不可以直接使用,在一个卷组中可以包含多个物理卷进来,我们的卷组边界大小取决于我们所有物理卷加起来的边界大小,因为我们的卷组的大小主要取决于我们的物理卷的大小,所以卷组不能简单地作为一个上层使用的文件系统来使用,而必须要在其上继续创建一个叫做逻辑卷的东西,如果我们的卷组不够用的话,我们可以增加新的物理卷进来,然后进行卷组的扩展,最后就可以再创建新的逻辑卷以供我们使用了,当我们将我们的物理卷加入到卷组当中的时候,我们的物理卷所提供的存储空间就被划分成了一个一个的存储块,我们就是以这种方式来实现将多个物理设备组织成一个逻辑设备的,这些存储块就叫做PE(Physical Extent->物理盘区):是一种逻辑存储单位,当我们的物理卷加入到卷组当中的时候,它所使用的PE和我们的卷组所提供的PE必须是相同的,所以我们在创建卷组的时候必须是事先指定好PE的大小,物理卷在加入到卷组中之后它的逻辑存储单元才能被称为PE,而且它的存储空间才能被分为一个一个的PE,所以说我们的卷组实际上就是由一大堆的PE所组成的。

        管理卷组的命令:

        ->创建卷组

            vgcreate命令

            使用格式:vgcreate 卷组名(自定义) 设备文件名

                        -s #(带单位)选项:指定PE大小,默认为4M

                        我们在创建了卷组之后,利用pvdisplay命令就可以看到PE的信息了,所以说在我们的物理卷加入到卷中之后,它的存储空间才可以被分成一个一个的PE。

            技术分享

        ->查看卷组信息

            vgdisplay命令:查看卷组的详细信息

            技术分享

            vgs命令:查看卷组的缩略信息

            技术分享

        ->删除卷组

            vgremove命令:如果我们的卷组上面已经创建了逻辑卷且已经存储了数据的话,是不可以随便删除的。

            使用格式:vgremove 卷组名

             技术分享       

        ->扩展卷组

            vgextend命令:相当于是在卷组中加入一个物理卷

            使用格式:vgextend 卷组名 设备文件名

            技术分享    

        ->缩减卷组:相当于是从卷组中移除一个物理卷

            vgreduce命令:只是将物理卷从卷组上拿下里,而不是删除物理卷

            在执行vgreduce命令之前一定要先执行pvmove命令将要移除的那个物理卷上原有的数据移到其他物理卷上面。

            使用格式:vgreduce 卷组名 设备文件名

            技术分享

        ->扫描当前系统上的卷组

            vgscan命令

            技术分享

    3,lv(logical volume:逻辑卷,真正存储数据的地方)

        我们的可以在卷组上划分多个逻辑卷,但是这多个逻辑卷的容量之和不能超过卷组的容量大小,逻辑卷才是一个真正的有动态缩减意义的逻辑设备,我们的逻辑卷有两种边界,一种叫做逻辑卷的物理边界,就是我们逻辑卷真正的边界,一种叫做逻辑卷的逻辑边界,逻辑边界又称为文件系统边界,我们就在这个文件系统边界里面格式化我们的逻辑卷,创建文件系统,每一个独立的逻辑卷就是一个独立的文件系统,可以被当成一个独立的分区来使用,我们创建快照就指的是对我们的逻辑卷创建快照,而且快照卷和逻辑卷必须在同一个卷组当中,所以我们在卷组中必须预留出空间,给某一个逻辑卷创建快照来使用,而后把这个快照卷当做我们的访问逻辑卷的另一个入口,我们创建逻辑卷的过程,其实就是将卷组中的PE分给逻辑卷的过程,分给了多少个PE,逻辑卷就有多少个PE大小的空间,不过在逻辑卷的层面上,PE不再被称为PE,而是称为LE(Logical Extent:逻辑盘区),二者在本质上还是一样的,逻辑卷的扩展就是往逻辑卷中新增PE的过程,逻辑卷的缩减就是把其中的PE移除的过程,创建逻辑卷的时候也提供类似镜像的功能来完成数据的备份,逻辑卷创建完后我们就可以对其进行格式化并挂载使用。

        管理逻辑卷的命令:

        ->创建逻辑卷

            lvcreate命令

            使用格式:lvcreate -n 逻辑卷名(自定义) -L 逻辑卷的大小(自定义) 卷组名

                        卷组大小得带单位(M,G,...)

                        在创建逻辑卷的时候我们的指定逻辑卷的大小有两种方式:

                                -L->指定空间容量的大小

                                -l->指定PE的个数

            技术分享

            创建完成之后,我们就可以引用逻辑卷名进行格式化并挂载使用了,挂载的时候我们是这样来引用逻辑卷的名字的,在我们创建完成我们的逻辑卷之后,我们在系统上就会有一个/dev/卷组名/逻辑卷名 的文件,我们就引用这个名字进行挂载和使用,但是这个文件并不是我们真正的逻辑设备文件,它只是一个指向我们真正逻辑设备文件的一个软链接,真正的逻辑卷设备文件是/dev/mapper/卷组名-逻辑卷名  这个文件。

            技术分享

            技术分享

            上图中好像有点小问题。。。。。。。尴尬,不过马哥是这么讲的。。。。

            不过我们在格式化和挂载的时候使用哪种文件名都可以

            格式化:

                技术分享

            挂载:

                技术分享

        ->查看当前系统上所有的逻辑卷的信息:

            lvdisplay命令:查看逻辑卷的详细信息

            后面也可以接上特定逻辑卷的名字而查看特定逻辑卷的详细信息

            技术分享

            lvs命令:查看当前系统上所有的逻辑卷的缩略信息

            后面也可以接上特定的逻辑卷而查看特定逻辑卷的缩略信息

            技术分享

        ->删除逻辑卷

            lvremove命令

            我们在执行该命令之前必须先将逻辑卷卸载

            使用格式:lvremove 引用逻辑卷名

            技术分享

        ->扩展逻辑卷:

            可以直接在线扩展,而不用卸载逻辑卷,而且逻辑卷的扩展不会影响到逻辑卷中原有的数据,我们在创建磁盘分区的过程实际上是在创建物理边界的过程,然后我们再在我们的物理边界里面创建文件系统边界,这个边界叫做逻辑边界,最后在逻辑边界里面创建我们的文件系统,所以说,我们的逻辑边界能够存出多少数据是由我们的逻辑边界来决定的,逻辑边界是紧靠在我们的物理边界上创建的,它们二者几乎是一样的,所以我们在扩展逻辑卷的时候,得先扩展我们逻辑卷的物理边界,然后再扩展我们逻辑卷的逻辑边界。

            扩展逻辑边界的命令:

            lvextend -L [+]#(带单位) 引用逻辑卷名

                   -L选项后面的+号表示:

                      带上加号表示扩展了多少容量

                      不带加号表示扩展至多少容量

                      但是扩展的容量不能超过卷组的容量

            不带加号:

                技术分享

            带加号:

            技术分享

            扩展逻辑边界的命令:

            resize2fs命令->只能针对ext系列的文件系统

                使用格式:resize2fs -p 引用文件系统名

                    -p选项表示扩展至物理边界一样的大小

                技术分享

        ->缩减逻辑卷

            我们缩减逻辑卷的时候同样不能影响到逻辑卷中原有的数据,故我们在缩减之前先得执行df命令,看看我们的逻辑卷中已经用去了多大的空间,不能缩减成比这个空间还小的空间,并且缩减逻辑卷的风险很大,很有可能会造成数据的损坏,所以一定不可以在线缩减,我们在缩减之前必须将逻辑卷卸载,而且在缩减之前还得强制检查一次文件系统,以保证文件系统处于一致性状态,(温故:强制检查文件系统的命令是e2fsck -f 设备文件名)缩减完逻辑边界之后再缩减物理边界,然后再重新挂载即可使用。

          缩减逻辑边界的格式:

            resize2fs 引用逻辑卷名 #(带单位)->缩减至多大

          缩减物理边界的格式:

            lvreduce -L [-]#(带单位) 引用逻辑卷名

                减号的解释同上

            

        缩减逻辑卷的顺序如下:

        ->先执行df命令来查看我们要缩减的逻辑卷用了多少空间

            技术分享

        ->卸载我们要缩减的逻辑卷

            技术分享

        ->强制检查该逻辑卷的文件系统

            技术分享

        ->缩减逻辑边界

            技术分享

        ->缩减物理边界

            技术分享

        ->重新挂载

            技术分享

    我们还有一个既能扩展逻辑卷又能缩减逻辑卷的命令

        lvresize命令


·快照卷

    创建快照卷的命令

        lvcreate命令

            -s选项:表示这是在创建快照卷

            -p(perm) r|w选项:指定权限

    快照卷可以不用卸载逻辑卷而直接在线创建,但是快照卷不允许用户修改,所以我们在创建快照卷的时候必须将快照卷创建为只读方式,快照卷的生命周期是整个数据访问时长,在这段时长内数据的增长量不能超过快照卷的大小,如果超过,快照卷会放弃一切操作而自我损毁。

        使用格式:lvcreate -s -L #(带单位,指定大小) -n 快照卷名 -p r 引用逻辑卷名

        技术分享

        快照存在的主要目的就是为了数据备份,快照的这种备份机制称为基础备份或完全备份,因为它只能还原我们备份时刻的数据,而不能还原我们文件出错那一刻的数据,所以必须结合增量备份才能完后真正意义上的备份,所以说这种备份机制是不完善的,它只是我们完成备份过程中的一个阶段。

        温故:tar命令在使用的时候,选项中的-是可以省略的,tar命令的-C选项指定解压在什么地方,如果不指定默认解压在当前目录。

            

            

            

            

            




            

            

            

            

                   

      

            


本文出自 “菜鸟的技术文档” 博客,请务必保留此出处http://zhubo.blog.51cto.com/11395641/1835415

LVM

标签:linux

原文地址:http://zhubo.blog.51cto.com/11395641/1835415

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!