转载来源:http://ask.apelearn.com/question/5480

卷组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卷,从下到上创建,示意图如下

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理



第一步创建物理文件系统
首先我们要创建文件系统
命令: fdisk /dev/sdb   ————  创建物理卷并修改ID为8e

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_02



第二步初始化物理卷为PV
创建PV,添加几个文件系统,然后再添加一个RAID文件系统
命令:pvcreate /dev/sdb{5,6,7,8,9}   ————   添加文件系统到PV
      pvcreate /dev/md0              ————   添加raid文件系统到PV
  pvs,pvdisplay                 ————   查看系统现有PV

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_03


第三步创建卷组VG
添加PV到卷组,创建VG卷组
命令:vgcreate  [-s=16m]     test_vg      /dev/sdk1  /dev/sdl1
              指定PE大小  VG卷组名   要添加到VG中的PV
使用man帮助看一下使用方法

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_04


看上面的例子,我们添加PV到卷组中创建VG
命令:vgcreate vg0 /dev/sdb{5,6,7,8,9} /dev/md0
      vgs,vgdisplay

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_05


注释:[-s=16m] 里面的内容可选,修改默认的PE单元大小,默认为4M,最大一个卷组是256G,修改默认单元为16M,最大的卷组单元是1024G
命令:vgdisplay testvg | grep "Total PE"
看看默认的PE大小为4M,PV个数为6个,VG的总大小为6.7.G

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_06


其他VG卷组的一些操作
激活VG 
在被激活之前,VG与LV是无法访问的
用man帮助看一下

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_07


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_08


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_09


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_10


为VG增加新PV 
当卷组空间不足时,可以加入新的物理卷来扩大VG卷组容量,这时可用命令vgextend 
pvcreate  /dev/sdb15 ———— 初始化sdb15为PV
vgextend  vg0  /dev/sdb15 ———— 把sdb15加入到卷组vg0中 
其中/dev/sdb15是新的PV,当然在这之前,它应使用pvcreate初始化

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_11


从VG移除PV 
在移除PV之前,应确认该PV没用被LV使用
命令:pvdisplay  /dev/sdb15  ———— 查看pv有没有使用 

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_12


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_13


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_14

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_15Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_16Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_17Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_18Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_19Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_20 Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_21Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_22Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_23Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_24Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_25Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_26

第四步创建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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_27


在VG卷组上创建LV逻辑卷
命令:lvcreate  -L 500M  -n lv0  vg0
           指定LV大小    LV名称   卷组VG名称

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_28


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_29


格式化LV
命令:mkfs.ext3  /dev/vg0/lv0

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_30


查看一个lv0块设备

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_31


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_32


挂载lv0并创建文件

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_33


下面最关键的来了
扩大LV

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_34


步骤如下:
首先增加逻辑卷容量(lvextend)
在线(脱机)增加ext3文件系统(resize2fs)
查看man帮助

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_35


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_36


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_37


Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_38Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_39Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_40Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_41Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_42Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_43Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_44Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_45

2013-07-07 11:32 添加评论 

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_46

0

阿铭 Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_47

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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_48


注释:为LV扩容的一个前提是,LV所在的VG有足够的空闲存储空间可用。 
在为LV扩容之后,应同时为LV之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。
扩充了LV后,重新挂载,查看大小,看到当前的LV大小并没有增大,那又该怎么办呢?

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_49


注释:ext2/ext3除非内核已有ext2online 补丁,否则在改变ext2/ext3文件系统的大小时应卸载它
在线(脱机)增加ext3文件系统(resize2fs)
再次查看的时候我们可以看到容量大小已经是扩展后的大小了

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_50


缩小LV(这个比较麻烦)

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_51


步骤如下:
卸载文件系统,使其脱机进行操作(umount)
检查文件系统(e2fsck)
缩小文件系统(resize2fs),指定缩小后的容量
缩小LV,减少卷容量(lvreduce),指定缩小后的容量
使用man 帮助看一看lvreduce的用法

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_52


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_53


卸载文件系统,使其脱机进行操作(umount)
命令:umount /lv0

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_54


检查文件系统(e2fsck)
命令:e2fsck -f /dev/vg0/lv0

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_55


缩小文件系统(resize2fs)
命令:resize2fs /dev/vg0/lv0  500M

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_56


缩小LV,减少卷容量(lvreduce)
命令:lvreduce -L 500M /dev/vg0/lv0

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_57


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_58


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_59


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

Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_60Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_61Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_62Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_63Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_64Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_65Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_66Linux LVM逻辑卷管理_Linux LVM逻辑卷管理_67