辛星整理Linux中的lvm

     第一,什么是LVM

        在传统上,如果一个分区大小是静态的。如果用户在这个分区上没有空间了,那么他要么重新分区(可能需要重装系统),要么像符号连接一样使用组装机。

        一个分区就是物理磁盘上一系列连续数据块的概念演变而来。多数类Unix系统现在有能力分解物理磁盘到许多单元。多个驱动器上的存储单元可以汇聚成一个逻辑卷,它们可以分配给分区,另外,单元可以随着空间要求的改变从分区中添加和删除。

        比如我们有一个1G的硬盘,我们创建/home分区花了600MB,设想我们没有空间了,那么我们决定/home需要1GB。那么用传统分区的观念,我们需要有另外一个1GB大小的驱动器,接着我们才能增加这个磁盘,创建新的/home,并且将现有的数据拷贝过去。

       但是使用lvm,我们只需要给其增加400MB的磁盘,并且将它的存储单元添加到/home分区中,其他工具可以让我们调整原来文件系统的大小,我们只需要调整/home的大小来使用更大的分区,接着我们返回到商务中即可。

       当然,lvm还可以对它自身做快照,这就可以使得我们对某些不可移动的目标做备份。

   

     第二,LVM的基本组成

         物理介质-----The  Physical  Media ,它表示仅仅是一个硬盘或者一个分区,比如/dev/hda,/dev/sda,/dev/sda4等等。

        物理卷-----Physical  Volume(PV)   一个pv只不过是有许多管理数据添加在他里面的物理介质,一旦我们添加了它,lvm可以认为它是硬盘的持有者。

       物理分区----Physical  Extents(PE)    这里的物理分区很像一些数据块,默认是4MB。

       卷组--------Volume   Group(VG)  一个VG有许多物理分区组成(可能来自多个物理卷或者硬盘),虽然这很可能会让我们一味一个VG由几块硬盘组成,比如/dev/hda和/dev/sda,但是更确切来说,它是包含由这些硬盘提供的许多PE。

     逻辑卷-----Logic  Volume(LV)     一个逻辑卷通常就是我们工作的最终结果,这里是我们存储信息的地方,这等同于我们的传统分区。

      逻辑分区----Logical  Extents(LE),在同一个卷组中,LE的大小和PE的大小是相同的,并且一一对应。


      第三,LVM制作的基本步骤

         第一步:实现分区阶段,我们的常用命令就是fdisk,我们的目标就是把System  ID改写为8e,我们可以得到一些分区比如/dev/hda1,/dev/hda5,/dev/hb1等等。

        第二步:PV阶段,我们的常用命令就是pvcreate和pvscan,我们的目标就是建立并观察pv,我们可以得到一些的pv,比如/dev/hda1,/dev/hda5,/dev/hb1等等。

        第三步:VG阶段,我们的主要命令是vgcreate和vgdisplay,我们的目标是使用pv来建立vg,我们可以得到一个对应的vg,它可以包含若干个pe。

        第四步:LV阶段,我们的主要命令是lvcreate和lvdisplay,我们从vg来分割出lv,我们可以得到若干个lv。

        第五步:档案系统使用阶段,我们的主要命令时mkfs和mount,我们格式化系统,直接挂载到Linux的档案系统中。


       第四,一些说明

           在Linux内核2.6.9开始,device-mapper模块就已经包含在内,我们只需要加载它即可。加载mapper模块我们使用命令modprobe   dm_mod  来进行,查看是否加载我们使用lsmod  | grep  dm_mod 来实现。如果我们的内核高于2.6.9却没有此模块,我们可以使用yum   install   device-mapper命令来安装,如果我们的内核低于2.6.9,那就需要编译安装device-mapper模块了。

        

       第五,常用命令

         创建PV的常用命令:

               (1)pvcreate   将实体partion创建称为pv

               (2)pvscan     搜索目前系统里面任何具有pv的磁盘或分区

               (3)pvdisplay    显示出目前系统上面的pv状态

               (4)pvremove    将pv属性移除,让该partition不再具有pv属性

        创建PV命令范例:

               (1)在磁盘上创建PV  :   pvcreate   /dev/hdb

               (2)在分区上创建PV(首先需要使用fdisk设置分区类型为8e)   :   pvcreate   /dev/dhb1

        创建VG的常用命令:

               (1)vgcreate     创建vg命令

               (2)vgscan      搜索系统上面是否有vg存在

               (3)vgdisplay    显示目前系统上面的vg状态

               (4)vgextend    在vg内添加额外的pv

               (5)vgreduce    在vg内移除pv

               (6)vgchange    配置vg是否qidong(active)

               (7)vgremove    删除一个vg

         创建VG范例:

               (1)比如我们把/dev/hda1和/dev/hdb1添加进xin这个卷组:  vgcreate  xin  /dev/hda1  /dev/hdb1

         创建LV命令:

               (1)lvcreate   创建lv

               (2)lvscan     查询系统上面的lv

               (3)lvdisplay     显示系统上面的lv状态

               (4)lvextend      在lv里面添加容量

               (5)lvreduce      在lv里面减少容量

               (6)lvremove      删除一个lv

               (7)lvresize        对lv进行容量大小的调整

        创建LV范例:

              (1)创建一个1500MB名称为star的lv :     lvcreate  -L   1500M  -n   star   xin

              (2)创建一个名为star,PE个数为100的lv:     lvcreate   -l  100  -n    star   xin

       格式挂载命令:

              (1)mkdir     创建目录

              (2)mkfs      创建文件系统

              (3)mount     挂载

          格式化并挂载范例:

             (1)创建文件系统范例: mkfs  -t  ext3   /dev/xin/star

  

          第六,其他功能

             停止vg:            vgchange   -a     n     xin

             删除vg:            vgremove      xin

             添加pv到vg:     vgextend    xin     /dev/hdc1

             从vg中删除pv:   vgreduce    xin    /dev/hda1

             删除一个lv:          umount   /dev/xin/star                  

                                         lvremove   /dev/xin/star

            扩展lv到12G:    lvextend   -L 12G   /dev/xin/star

            增加lv到1G:      lvextend   -L  +1G   /dev/xin/star

            

          第七,一个参数讲解

                我们通常使用lvcreate有如下两种格式:

                  (1)lvcreate    [-L    N[mgt]]   [-n  LV名称]     VG名称

                  (2)lvcreate    [-L    N ]         [-n   LV名称]     VG名称

                参数选项解读:

                  (1)-L:后面接容量,容量的单位可以是M,G,T等等,需要注意的是,最小单位为PE,因此这个数量必须为PE的倍数,如果不相符,系统会自动计算最相近的容量。

                  (2)-l :后面可以接PE的个数,而不是容量。如果要这么做的话,请自行计算PE的数量。

                  (3)-n  :后面跟的是LV的名称

             

           第八,附注

                之前也写过一篇关于lvm的,但是那篇感觉总结性不强,有兴趣的朋友也可以读一下,这篇的总结性相对好一些。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。