Username: Password:

lvm的介绍和常用功能流程实验
来源:linuxfans作者:linuxfans 发布时间:2008-04-07 02:56:57

1) 前言

  2) lvm组成和概念

  3) 怎样使用lvm,创建逻辑卷的流程和实例

  4) 怎样动态放大/缩小一个逻辑卷/逻辑卷组

  5) 怎样删除逻辑卷/逻辑卷组

  6) lvm相关命令

  1) 前言

  一直想写一个简单的lvm方面的文章,能够作个背忘,主要以流程和实例为主,希望文章能起到抛砖引玉的

  作用.

  LVM=(Logical Volume Mamager)逻辑卷管理器,LVM最先是用在IBM AIX系统上,他的最大作用是能够动态分

  配磁盘分区,并且能够让多个分区或物理硬盘作为一个逻辑卷(相当于一个逻辑硬盘).这种机制能够让磁

  盘分区容量划分变得很灵活.

  我们先举个简单例子.比如我们有一个硬盘/dev/hda,分了3个主分区:hda1,hda2,hda3,后面磁盘空间没有

  划分,分别对应的挂载点是/boot,/,/home,假如我们的/home空间不够了,怎么办?传统的方法是在未划分的

  空间中分割一个分区,挂载到/home下,并且把hda3的内容复制到这个新分区上.或把这个新分区挂载到另

  外的挂载点上,然后在/home下创建链接,链接到这个新挂载点.

  这两种方法都不大好,第一种方法浪费了hda3,并且假如后面的分区容量小于hda3怎么办?第二种方法不大

  浪费容量,但是每次要额外创建链接,比较麻烦.那么,假如用lvm呢?lvm的好处在于,能够动态放大一个逻辑

  卷(相当于一个逻辑分区),也就是说,hda3假如是个逻辑分区,比如/dev/rootvg/lv3,那么lv3能够被动态

  放大.这样就解决了动态容量调整的问题.当然,前提是系统已设定好lvm支持,并且需要动态缩放的挂载点

  对应的设备是逻辑卷.

  在这里,我任何例子都是基于RHEL 4/CentOS 4.x和LVM2的。

  2) lvm组成和概念

  这里参考了IBM 林?明(Alex Lin)的>)

  PV(Physical Volume) 物理卷。能够是单独磁盘,也能够是硬盘分区

  VG(Volume Group) 卷组。是PV的组合,能够看成单独的逻辑磁盘

  LV(Logical Volume) 逻辑分区。相当于物理分区的/dev/hdaX

  PE(Physical Extent) 物理范围。VG单元,类似于RAID的条带大小。

  当多个PV组成一个VG时,LVM会在任何PV上做类似格式化的动作,

  将每个PV切成一块块的空间,这一块块的空间就称为PE, 通常是4MB。

  LE(Logical Extent) 逻辑范围。LV的组成单位。大小为PE的倍数(通常为1:1)

  那么,最常用的3个名词和意义列表如下:

  名词 意义 操作系统对应设备

  PV 物理卷 /dev/hdaX

  VG 卷组 /dev/ (通常是个目录)

  LV 逻辑卷 /dev//

  假如我们要使用lvm,顺序是pv->vg->lv。

  就是说,我们先创建一个物理卷(对应一个物理硬盘分区或一个物理硬盘),然后把这些分区/硬盘加入

  一个卷组中(相当于一个逻辑上的大硬盘),然后我们在这个大硬盘上划分分区lv(逻辑上的分区,就是逻

  辑卷)

  这样,我们把lv逻辑卷格式化以后,就能够像使用一个传统分区那样,把他挂载到一个挂载点上,需要的

  时候,这个逻辑卷能够被动态缩放。

  我们能够用一个长方蛋糕来说明这个对应关系。物理硬盘相当于一个长方蛋糕,我们把他切割成许多快,

  每个小块相当于一个pv,然后我们把其中的某些pv重新放在一起,抹上奶油,那么这么些个pv的组合就是

  一个新的蛋糕,也就是vg。最后,我们切割这个新蛋糕vg,切出来的小蛋糕就叫做lv。

  有一点需要注意,就是/boot区不能够是lvm,因为引导程式lilo/grub并不能识别lvm,就像/boot同样不

  能够是软raid设备相同。

  3) 怎样使用lvm,创建逻辑卷的流程和实例

  好了,我们来创建一个lv。

  比如说,在一个物理硬盘/dev/hda上,我们需要将/dev/hda5,/dev/hda6作为pv

  1 fdisk划分hda5,hda6,并且将这两个分区的标志(键入t改)改为(0x)8e

  然后用partprobe通知OS磁盘分区的变化

  2 pvcreate /dev/hda5 /dev/hda6(-s xxM可设定PE大小)

  创建pv hda5,hda6

  3 vgcreate rootvg /dev/hda5 /dev/hda6

  将hda5,hda6加入逻辑卷组rootvg中

  4 lvcreate -L 100M -n lv1 rootvg

  从我们的rootvg中,创建一个100M的逻辑卷lv1

  5 mkfs.ext3 /dev/rootvg/lv1

  格式化我们的lv1,文档系统用ext3

  6 mkdir /mnt/lvm;mount /dev/rootvg/lv1 /mnt/lvm

  将lv1挂载到/mnt/lvm下

  好了,这样一个创建lv的例子完成

  4) 怎样动态放大/缩小一个逻辑卷/逻辑卷组

  我们怎样放大lv?比如上面的lv1?流程:

  1 lvextend -L+200M /dev/rootvg/lv1

  将lv1增加200M

  2 ext2online /dev/rootvg/lv1

  让lv1容量更改立即生效

  减小lv,网上很多文章介绍的是ReiserFS,这里我们是ext3文档系统,假如我们需要减少50M:

  1 umount /mnt/lvm

  这里,需要先卸载分区

  2 mke2fs -n /dev/rootvg/lv1

  计算lv1的block数

  这里一定要加-n参数,这是计算lv1的block数,而不是格式化分区,注意。

  并且注意,从MB->KB这些的计算,都是乘1024,不是1000,这是个细节问题

  3 计算减少50M后的block数。从mke2fs -n /dev/rootvg/lv1,我们能够得出2个需要的信息:

  Block size和blocks,这两个数的乘积就是分区大小A(单位字节),

  我们把需要减小的容量50M换算成字节B,然后A-B的结果除以Block size,就是剩余的block数

  4 resize2fs -f /dev/rootvg/lv1 剩余的block数

  调整文档系统大小

  5 lvreduce -L-50M /dev/rootvg/lv1

  调整lv分区大小,减小50M

  6 重新mount,df察看一下容量的减小

  动态加大VG:

  这里我们新增一个PV并加入VG

  1 fdisk增加一个(0x)8e标志的分区/dev/hda7

  2 vgextend rootvg /dev/hda7

  好了,vg增大了

  缩小逻辑卷组VG:

  1 搬移PV中的资料(只限于同一VG中)

  #pvmove [-n ] []

  如

  #pvmove /dev/hda5 /dev/hda6

  将VG中pv hda5的内容搬移到hda6中

  pvmove /dev/hda5(也能够这样,lvm决定hda2的内容被复制到哪里)

  2 vgreduce rootvg /dev/hda5

  把vg hda5移除

  5) 怎样删除逻辑卷/逻辑卷组

  删除VG流程:

  1 umount /挂接点

  2 lvremove /dev/rootvg/lv1

  移除逻辑卷,这里是lv1

  3 vgchange -a n rootvg(关闭rootvg)

  4 vgremove rootvg

  移除rootvg

  6) lvm相关命令

  这个表格,您能够在RHCE_Study_Guide.pdf上找到

  Physical Volume Volume Group Logical Volume

  scan pvscan vgscan lvscan

  create pvcreate vgcreate lvcreate

  display pvdispaly vgdisplay lvdisplay

  remove pvremove vgremove lvremove’

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅