linux pvm逻辑卷的实现

来源:互联网 发布:亲爱的程序员txt 编辑:程序博客网 时间:2024/05/05 11:44
 

    LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建         立文件系统。首先我们讨论以下几个LVM术语:
*物理存储介质(
*物理卷(physical volume,PV)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
*卷组(Volume Group,VG)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
*逻辑卷(logical volume,LV)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
*PE(physical extent,PE)
每一个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
好了,上面几个术语是比较重要的,如果还不清楚,可以先谷歌或者百度一下。
1 创建pv  
     比如我要创建sdb这块硬盘和sdc1这个硬盘的地一个分区:pvcreate /dev/sdb /dev/sdc1  
     假设sdb和sdc1都是10g。
     要注意,如果创建整个硬盘为pv的话,那么这个硬盘必须没有分区,要不然不会成功,会提示: Device /dev/sdb not found (or ignored by filtering).这个要注意。
     查看pv的命令:详细pv信息:pvdisplay  简略pv信息:pvs
2 创建vg
      vgcreate newvg /dev/sdb /dev/sdc1
      这个newvg为你创建vg的名字,此时就会在/dev/下有一个newvg的目录,/dev/newvg
      查看vg的命令:详细vg信息:vgdisplay  简略vg信息:vgs
3 创建lv
      lvcreate -n newlv -L 5G newvg

      记得这个vg不要加路径,否则会提示:

      Volume group name expected (no slash)

      Run `lvcreate --help' for more information.

     n后接lv的名字 L后接要创建lv的大小

      这时就会在这个newvg目录下创建了一个newlv文件
      查看lv命令: 详细lv信息:lvdisplay 简略lv信息:lvs
      此时你用lvs就可以看到你的lv信息了,但还不能使用,要格式化后才可以
4 使用lv
      mkfs.ext4 /dev/newvg/newlv
      挂载并使用
      mount /dev/newvg/newlv /mnt
5 扩大lv
      扩大lv的操作可以在线进行,意思就是可以不用卸载这个lv设备就可以动态扩充lv大小
      lvextend -L +3G /dev/newvg/newlv
      要注意,L参数后加要扩充的大小,而且这个大小必须比你的vg剩余空间要小,你可以先用vgs看一下你的vg剩余空间是多少。
      此时,你用lvs查看已经看到newlv已经变为8g了,但实际上你用df -h查看发现还是5g,因为新加的文件系统并没有被格式化,系统并不识别,所以还得加这样一行命令
      resize2fs /dev/newvg/newlv,这个有可能提示让你先运行e2fsck -f这个命令先检查一下磁盘。
      好了,现在df -h查看你的newlv是不是已经变为8g了呢!
6 扩大vg
      比如我现在想把/dev/sdc2 这个分区加到newvg里来,假设这个分区为20g,该怎么实现呢?
      创建pv: pvcreate /dev/sdc2
      扩大vg: vgextend /dev/sdc2
      好了,vg已经扩容完毕了,执行vgs查看一下,发现newvg已经变为40g了,但是空余的空间只有32G,因为之前的newpv已经占        用了8g了
7 减小lv
      这个操作不常用,而且需要注意的一点是,这个操作必须离线进行,也就是说你要先卸载要操作的lv设备,不然数据会     丢失
      好了,先卸载:umount /dev/newvg/newlv
      然后再减小格式化的系统文件:reszie2fs /dev/newvg/newlv 5G  这个后面跟的是你要减小为多大
      然后减小lv大小:lvreduce -L -3G /dev/newvg/newlv这个L后跟你要减小多少(注意和上面的区别),而且要注意的是,这个减       小后剩余的空间绝对不能比上面resize2fs后剩余的空间小,一般这个剩余的空间会比上面resize后剩余的空间大       1G作为缓冲区,因为有些系统换算单位不一样,我这里让他们相等,不过做实验的时候最好大1g比较好。
      查看lvs,并挂载: mount/dev/newvg/newlv /mnt
8 减小vg
      比如我现在要把sdc2这个分区拿出来,可以这么做:

      vgreduce newvg /dev/sdc2

      发现了没,对vg操作都不要加路径!!!

      要注意的是:你要保证你当前的这个分区并没有lv在使用,才可以减小,否则会提示 
      Please enter physical volume paths or option -a Run `vgreduce --help' for more information.

9 取消pv 

      pvremove /dev/sdc2 这个没什么说的

最后要说的就是,lvm并不受操作系统限制,把这两块硬盘放到别的电脑上,照样会有一个newlv的lv。lvm和操作系统无关。

 好了,今天lvm教程就讲这么多,明天来写一下acl的权限机制      
原创粉丝点击