Chinaunix首页 | 论坛 | 博客
  • 博客访问: 303855
  • 博文数量: 58
  • 博客积分: 2763
  • 博客等级: 少校
  • 技术积分: 731
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 19:07
文章分类

全部博文(58)

文章存档

2011年(55)

2009年(1)

2008年(2)

LVM

分类: LINUX

2011-08-04 17:17:32

今天我来讲一讲神奇的LVM,logical Volume Manager(逻辑卷管理器)
那有人就会问,LVM到底是什么,有什么特殊功能呢?我来举个例子,假如你当初规划主机
的时候,给/home划分了10G的大小,但用着用着,你发现空间越来越小,这时候你就会想要
是文件系统的容量能大能小该多好,而LVM就可以弹性调整文件系统的容量,只要你学会了
LVM,就不用再为这样的问题而困扰了。LVM基于不同的块设备,无论你是分区还是磁盘,都
可以做成LVM。那好,下面我就来具体说明一下,该如何使用。

我先来说一说最基本的概念:

PV :Physical Volume,物理卷。是最底层的设备。我们在实际的分区中需要调整系统标识
符(system ID)为8e ,8e是LVM的系统标识符。在分区之后,用t来作调整。
VG:Volume Group,卷组。是经过pv创建之后整合而成的。大小是物理卷之和。
LV:Logical Volume,逻辑卷。从VG中切割出来的可以被格式化,挂载,并且能够使用的。
我还得补充说一下PE。PE:Physical Extend(物理扩展块),一般大小有4M,8M,16M,32M,
默认值是4M。它是在创建VG时,才会出现的。是LVM的最小存储单位,我们之前说的可以弹
性调整文件系统容量,其实就是通过交换PE来实现的,就是说将LV内的PE转移到其它设备中
来降低LV容量,后者将其它设备的PE加到LV中来扩大容量。现在你该有点眉目了吧。

要想创建一个LVM,必须要经过3个步骤:PV阶段,VG阶段,LV阶段
我用一个图来简要的说明一下,希望对你有帮助。




经过PV阶段,把底层的分区(或块设备)创建成PV,在经过VG阶段,将PV整合成一个VG,在经
过LV阶段,划分出一个逻辑卷,可以格式化挂载使用。那下面我们就来玩玩吧
创建分区我就不再多说了,你使用fdisk命令,不过你得将系统标识号改为8e。假如我创建
了两个各5G的分区,分别是/dev/sda6,/dev/sda7
PV阶段:
    pvcreate:将物理分区创建成PV
    pvscan:查询目前系统里面任何具有PV的磁盘
    pvdisplay:显示系统上的PV状态
    pvremove:将PV属性删除,让该分区不具有PV属性
pvcreate /dev/sda{6,7}
你可以使用pvscan,pvdisplay来查看PV信息,我这里就不在演示了。

VG阶段:
    vgcreate: 新建VG
        -s  指定PE的大小,单位可以是m,g,t(大小写均可)
    vgscan:查找系统上是否有VG存在
    vgdisplay:显示目前系统上的VG状态
    vgextend:在VG中增加额外的PV
    vgreduce:在VG内删除PV
    vgremove:删除一个VG

为了演示需要,我就一个一个PV添加。添加VG的时候,要自己定义VG的名字。
vgcreat myvg /dev/sda6
你用vgdisplay查看一下,是否创建成功。
接下来我们来看一下扩展和缩减。
扩展:vgextend myvg /dev/sda7,再用vgdisplay查看一下。
刚才不是把/dev/sda7给加到VG中了,那我们再把它给缩减出来
缩减:vgreduce myvg /dev/sda7,再用vgdisplay查看一下。    

LV阶段:
    lvcreate:新建LV
        -l  指定PE的数量
        -L  直接指定LV大小
        -n  指定逻辑卷的名字
    lvscan:查看系统上面的LV
    lvdisplay:显示系统上面的LV状态
    lvextend:在LV里增加容量
    lvextend:在LV里减少容量
    lvremove:删除一个LV
lvcreate -L 2G -n mylv myvg
查看:lvdisplay myvg
接下来就是格式化挂载了:
格式化:
    mke2fs -j /dev/myvg/mylv
挂载:
    mkdir /backup
    mount /dev/myvg/mylv /backup
这样就做成了一个LVM了,就可以使用了。
那有人就会问,它怎么实现放大与缩小文件容量呢。下面我们就来实现一下。
不过,首先你得搞清楚一个问题,什么是物理边界,什么是逻辑边界。分区就是创建物理边
界的过程,而文件系统则是划分出来逻辑边界。对文件进行扩展,首先要扩展物理边界,然
后扩展逻辑边界。而缩减正好相反。我用图来说明一下,如图所示:




外面的圆弧就好比物理边界,里面的圆弧就好比逻辑边界。要想使里面的空间变大,你就得
先把外面的圆扩大,然后才能把里面的圆扩大,这样才能使里面的空间变大。这下你明白了
吗?那下面我们就来操作吧。
    
扩张LV:
先扩大物理边界:lvextend -L +2G /dev/myvg/mylv
其中加号表示扩展了多少,不带加号表示扩展到多少。
调整逻辑边界:resize2fs -p /dev/myvg/mylv

缩减LV:
必须先卸载:umount /backup
先缩减逻辑边界,但是你如果直接执行会提示你自检,所以你得自检了。使用e2fsck -f
/dev/myvg/mylv,然后开始缩减逻辑边界:resize2fs /dev/myvg/mylv 3G
缩减物理边界:lvreduce -L 3G /dev/myvg/mylv
然后挂载就可以了:mount /dev/myvg/mylv /backup



如果你想移除/dev/sda6,那你得先缩减LV,将/dev/sda6的PE归到VG里,然后将/dev/sda6移
除myvg这个VG。不过你得先确定/dev/sda6里面的PE完全不被使用后才能将/dev/sda6移出。
如果/dev/sda6中有PE被使用,那得先把PE移到没有使用的地方,使用pvmove,比如说pvmove
/dev/sda6 /dev/sda7。然后使用vgreduce myvg /dev/sda6。这样就把/dev/sda6移出了VG
,接下来就是移除/dev/sda6了,使用pvremove /dev/sda6。这样/dev/sda6就被移出来了。


现在你知道LVM的好处了,那LVM还有什么其他的功能吗?当然有,那就是系统快照。什么是
系统快照,就是将当时系统上的数据给记录下来,以方便系统数据恢复。当有数据发生改变
时,会把原来的数据拷贝到快照区中。快照区的建立必须与被快照的LV在同一个VG上面,VG
上面必须还有空间。
创建快照:lvcreate -L 512M -s -n mylv-snap -p r /dev/myvg/mylv
-s 表示使用快照功能
-n 表示快照区名称
-p 表示权限

接下来备份快照:
mkdir /snap
mount /dev/myvg/mylv-sanp /snap
tar jcf /tmp/backup.tar.bz2 /snap/*
umount /snap
当你的系统出现问题时,直接使用备份的快照恢复就可以了。

阅读(1598) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~