zoukankan      html  css  js  c++  java
  • LVM介绍以及使用

    LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。关于LVM有很多术语,如下:

    卷组volume group (VG) 
    卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池。 
    物理卷physical volume (PV) 
    典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的Software RAID 卷。 
    物理块physical extent (PE) 
    物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。 
    逻辑块logical extent (LE) 
    逻辑卷按“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。

    逻辑卷logical volume (LV) 
    逻辑卷相当于非LVM系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上建立文件系统

    线性映射 
    线性映射-把一定范围的物理块按顺序分配给逻辑卷,如LV的LE 1-99映射到PV1,LE 100-347映射到PV2。

    交错模式 
    交错模式-将把逻辑块交错映射到不同的物理卷中,如 LV的LE 1映射为PV1的PE1,LE 2映射为PV2的PE1,LE 3映射为PV1的PE2.。这种方式可以提高逻辑卷的性能,但是采用这种方式建立的逻辑卷将不能在它们所在的物理卷中扩展。

    创建LVM卷,从下到上创建,示意图如下

    wps_clip_image-30736

     

     

      LVM操作的相关命令

      fdisk -l:查看系统中都认到了那些物理硬盘

      pvdisplay:查看系统中已经创建好的物理卷

      pvcreate:创建一个新的物理卷

      pvremove:删除一个物理卷(也就是从物理卷中删除一个LVM标签)

      vgdisplay:查看系统中的卷组

      vgcreate:创建一个新的卷组

      vgreduce:从卷组中删除一个物理卷(也就是缩小卷组)

      vgremove:删除一个卷组

      lvdisplay:查看系统中已经创建好的逻辑卷

      lvcreate:创建一个新的逻辑卷

      lvreduce:缩小逻辑卷(也就是从一个逻辑卷中减少一些Logical Extents)

      lvremove:从系统中删除一个逻辑卷

      mkfs:基于逻辑卷创建一个相应类型的文件系统

      创建好的文件系统位于:/dev/$create_vg_name/$lv_name

      mount /dev/$create_vg_name/$lv_name$mount_piont:挂载文件系统

      vgscan:读取系统中创建的所有卷组

     vgchange-a y:激活所有卷组(开机执行,redhat可在/etc/rc.d/rc.sysinit系统启动初始化脚本里可以找到)

     vgchange-a n:关闭所有卷组(提示:必须在umount所有的文件系统后,才能成功执行)

     

     

    以下来自:http://wqmsl.blog.51cto.com/847418/471784

     

      LVM使用

     

    第一步创建物理文件系统

    首先我们要创建文件系统

    命令: fdisk /dev/sdb   ————  创建物理卷并修改ID为8e

    wps_clip_image-1310

    第二步初始化物理卷为PV

    创建PV,添加几个文件系统,然后再添加一个RAID文件系统

    命令:pvcreate /dev/sdb{5,6,7,8,9}   ————   添加文件系统到PV

          pvcreate /dev/md0              ————   添加raid文件系统到PV

      pvs,pvdisplay                 ————   查看系统现有PV

    wps_clip_image-11233

    第三步创建卷组VG

    添加PV到卷组,创建VG卷组

    命令:vgcreate  [-s=16m]     test_vg      /dev/sdk1  /dev/sdl1

                  指定PE大小  VG卷组名   要添加到VG中的PV

    使用man帮助看一下使用方法

    wps_clip_image-10120

    看上面的例子,我们添加PV到卷组中创建VG

    命令:vgcreate vg0 /dev/sdb{5,6,7,8,9} /dev/md0

          vgs,vgdisplay

    wps_clip_image-6066

    注释:[-s=16m] 里面的内容可选,修改默认的PE单元大小,默认为4M,最大一个卷组是256G,修改默认单元为16M,最大的卷组单元是1024G

    命令:vgdisplay testvg | grep "Total PE"

    看看默认的PE大小为4M,PV个数为6个,VG的总大小为6.7.G

    wps_clip_image-17668

    其他VG卷组的一些操作

    激活VG 
    在被激活之前,VG与LV是无法访问的

    用man帮助看一下

    wps_clip_image-3599

    命令:vgchange -a y vg0  ———— 激活vg0卷组

    wps_clip_image-8347

    当不再使用VG时,休眠了vg0卷组 
    命令:vgchange -a n vg0  ———— 使之不再可用

    wps_clip_image-15836 
    移除VG 
    在移除一卷组前应确认卷组中不再有逻辑卷 
    命令:vgchange -a n vg0    ———— 休眠卷组 
    vgremove  vg0        ———— 移除该卷组

    wps_clip_image-19868

    为VG增加新PV 
    当卷组空间不足时,可以加入新的物理卷来扩大VG卷组容量,这时可用命令vgextend 
    pvcreate  /dev/sdb15 ———— 初始化sdb15为PV

    vgextend  vg0  /dev/sdb15 ———— 把sdb15加入到卷组vg0中 
    其中/dev/sdb15是新的PV,当然在这之前,它应使用pvcreate初始化

    wps_clip_image-30014

    从VG移除PV 
    在移除PV之前,应确认该PV没用被LV使用

    命令:pvdisplay  /dev/sdb15  ———— 查看pv有没有使用 
    wps_clip_image-4450 
    如这个PV仍在被使用,在确认它未被使用后,可用命令vgreduce把它从VG中删除 
    命令:vgreduce  vg0  /dev/sdb15  ———— 从vg中删除pv

    wps_clip_image-31946

    如果所在PV上有数据,则应把数据传移到其它PV上

    注释:若要把一个PV从VG中移除,应首先把其上所有活动PE中的数据转移到其它PV上,而新的PV必须是本VG的一部分,有足够的空间,如要把PV1:/dev/md0上的数据移到PV2:/dev/sdb6上可用,建议在转移数据之前备份LV中的数据,如果在该PV之上的LV采用交错方式存放,则这个转移过程不能被打断。

    命令:pvmove /dev/md0 /dev/sdb6

    wps_clip_image-20552

    第四步创建LV逻辑卷

    lvcreate命令的常用方法和参数: 
    lvcreate  [options]  -n  逻辑卷名  卷组名 [PV1...] 
    -i  Stripes :采用交错(striped)方式创建LV,其中Stripes指卷组中PV的数量。 
    -I  Stripe_size :采用交错方式时采用的块大小(单位为KB),Stripe_size必须为2的指数:2N ,N=2,3...9

    -l  LEs :指定LV的逻辑块数。 
    -L  size :指定LV的大小,其后可以用K、M、G表示KB、MB、GB。 
    -s  :创建一已存在LV的snapshot卷。 
    -n  name :为LV指定名称。

    看看man帮助如何创建LV

    wps_clip_image-21790

    在VG卷组上创建LV逻辑卷

    命令:lvcreate  -L 500M  -n lv0  vg0

               指定LV大小    LV名称   卷组VG名称

    wps_clip_image-18267

    查看整个卷组VG总大小6.7G,剩余的空间为6.21G

    命令:vgs

    wps_clip_image-12883

    格式化LV

    命令:mkfs.ext3  /dev/vg0/lv0

    wps_clip_image-8334

    查看一个lv0块设备

    wps_clip_image-11239

    删除LV 
    为删除一个逻辑卷,必须首先从系统卸载其上的文件系统,然后可用lvremove删除,如: 
    umount /lv1               先卸载LV文件系统 
    lvremove /dev/vg0/lv1     移除lv1逻辑卷

    wps_clip_image-7534

    挂载lv0并创建文件

    wps_clip_image-3345

    下面最关键的来了

    扩大LV

    wps_clip_image-13491

    步骤如下:

    首先增加逻辑卷容量(lvextend)

    在线(脱机)增加ext3文件系统(resize2fs)

    查看man帮助

    wps_clip_image-20637

    查看lv扩展后的VG卷组剩余空间

    wps_clip_image-8480 
    首先增加逻辑卷容量(lvextend)

    指定扩容后的尺寸: lvextend -L 2G /dev/vg0/lv0 
    将扩大逻辑卷lv0的容量为2GB。

    wps_clip_image-27842 
    指定要增加的尺寸: lvextend -L +512M  /dev/vg0/lv0 
    将为LV v0再增大容量1GB至1.5GB。

    wps_clip_image-5259 
    注释:为LV扩容的一个前提是,LV所在的VG有足够的空闲存储空间可用。 
    在为LV扩容之后,应同时为LV之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。

    扩充了LV后,重新挂载,查看大小,看到当前的LV大小并没有增大,那又该怎么办呢?

    wps_clip_image-30354

    注释:ext2/ext3除非内核已有ext2online 补丁,否则在改变ext2/ext3文件系统的大小时应卸载它

    在线(脱机)增加ext3文件系统(resize2fs)

    再次查看的时候我们可以看到容量大小已经是扩展后的大小了

    wps_clip_image-6153

    缩小LV(这个比较麻烦)

    wps_clip_image-8686

    步骤如下:

    卸载文件系统,使其脱机进行操作(umount)

    检查文件系统(e2fsck)

    缩小文件系统(resize2fs),指定缩小后的容量

    缩小LV,减少卷容量(lvreduce),指定缩小后的容量

    使用man 帮助看一看lvreduce的用法

    wps_clip_image-10895 
    注释:逻辑卷可扩展同样也可缩小,但应在缩小LV之前首先减小文件系统,否则将可能导致数据丢失。 
    下面来缩小lv0的容量,现容量为800M容量,我要缩小到500M

    wps_clip_image-2604

    卸载文件系统,使其脱机进行操作(umount)

    命令:umount /lv0

    wps_clip_image-31112

    检查文件系统(e2fsck)

    命令:e2fsck -f /dev/vg0/lv0

    wps_clip_image-20683

    缩小文件系统(resize2fs)

    命令:resize2fs /dev/vg0/lv0  500M

    wps_clip_image-11056

    缩小LV,减少卷容量(lvreduce)

    命令:lvreduce -L 500M /dev/vg0/lv0

    wps_clip_image-19176

    挂载lv0文件系统并查看其大小

    wps_clip_image-12469

    系统启动激活

    在RHEL 5以后都会自动激活LVM,如下,在系统启动的时候会自动激活的

    wps_clip_image-31581

    如果没有激活的话请做如下操作:

    系统启动/关闭 
    "为使系统启动时可自动激活并使用LVM,可将以下几行添加到启动 rc 脚本中: 
    /sbin/vgscan 
    /sbin/vgchange -a y 
    这些行将浏览所有可用的卷组并激活它们。要注意的是,它们应在安装卷组上的文件系统操作之前被执行,否则将无法正常安装文件系统。 
    "在系统关机时,要关闭LVM,这可将以下这行添加到关机 rc 脚本中,并确保它在卸装了所有文件系统后执行:/sbin/vgchange -a n

  • 相关阅读:
    JavaScript进阶系列06,事件委托
    JavaScript进阶系列05,事件的执行时机, 使用addEventListener为元素同时注册多个事件,事件参数
    JavaScript进阶系列04,函数参数个数不确定情况下的解决方案
    JavaScript进阶系列03,通过硬编码、工厂模式、构造函数创建JavaScript对象
    JavaScript进阶系列02,函数作为参数以及在数组中的应用
    JavaScript进阶系列01,函数的声明,函数参数,函数闭包
    委托、Lambda表达式、事件系列07,使用EventHandler委托
    委托、Lambda表达式、事件系列06,使用Action实现观察者模式,体验委托和事件的区别
    委托、Lambda表达式、事件系列05,Action委托与闭包
    委托、Lambda表达式、事件系列04,委托链是怎样形成的, 多播委托, 调用委托链方法,委托链异常处理
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/2678343.html
Copyright © 2011-2022 走看看