制做人:wqmslide
博客地址:http://wqmsl.blog.51cto.com性能
卷组volume group (VG)
卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池。
物理卷physical volume (PV)
典型的物理卷是硬盘分区,但也能够是整个硬盘或已建立的Software RAID 卷。
物理块physical extent (PE)
物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。
逻辑块logical extent (LE)
逻辑卷按“块”为单位存储,在一卷组中的全部逻辑卷的块大小是相同的。3d
逻辑卷logical volume (LV)
逻辑卷至关于非LVM系统中的分区,它在卷组上创建,是一个标准的块设备,能够在其上创建文件系统blog
线性映射
线性映射-把必定范围的物理块按顺序分配给逻辑卷,如LV的LE 1-99映射到PV1,LE 100-347映射到PV2。ip
交错模式
交错模式-将把逻辑块交错映射到不一样的物理卷中,如 LV的LE 1映射为PV1的PE1,LE 2映射为PV2的PE1,LE 3映射为PV1的PE2.。这种方式能够提升逻辑卷的性能,可是采用这种方式创建的逻辑卷将不能在它们所在的物理卷中扩展。rem
建立LVM卷,从下到上建立,示意图以下get
第一步建立物理文件系统博客
首先咱们要建立文件系统it
命令: fdisk /dev/sdb ———— 建立物理卷并修改ID为8eio
第二步初始化物理卷为PV
建立PV,添加几个文件系统,而后再添加一个RAID文件系统
命令:pvcreate /dev/sdb{5,6,7,8,9} ———— 添加文件系统到PV
pvcreate /dev/md0 ———— 添加raid文件系统到PV
pvs,pvdisplay ———— 查看系统现有PV
第三步建立卷组VG
添加PV到卷组,建立VG卷组
命令:vgcreate [-s=16m] test_vg /dev/sdk1 /dev/sdl1
指定PE大小 VG卷组名 要添加到VG中的PV
使用man帮助看一下使用方法
看上面的例子,咱们添加PV到卷组中建立VG
命令:vgcreate vg0 /dev/sdb{5,6,7,8,9} /dev/md0
vgs,vgdisplay
注释:[-s=16m] 里面的内容可选,修改默认的PE单元大小,默认为4M,最大一个卷组是256G,修改默认单元为16M,最大的卷组单元是1024G
命令:vgdisplay testvg | grep "Total PE"
看看默认的PE大小为4M,PV个数为6个,VG的总大小为6.7.G
其余VG卷组的一些操做
激活VG
在被激活以前,VG与LV是没法访问的
用man帮助看一下
命令:vgchange -a y vg0 ———— 激活vg0卷组
当再也不使用VG时,休眠了vg0卷组
命令:vgchange -a n vg0 ———— 使之再也不可用
移除VG
在移除一卷组前应确认卷组中再也不有逻辑卷
命令:vgchange -a n vg0 ———— 休眠卷组
vgremove vg0 ———— 移除该卷组
为VG增长新PV
当卷组空间不足时,能够加入新的物理卷来扩大VG卷组容量,这时可用命令vgextend
pvcreate /dev/sdb15 ———— 初始化sdb15为PV
vgextend vg0 /dev/sdb15 ———— 把sdb15加入到卷组vg0中
其中/dev/sdb15是新的PV,固然在这以前,它应使用pvcreate初始化
从VG移除PV
在移除PV以前,应确认该PV没用被LV使用
命令:pvdisplay /dev/sdb15 ———— 查看pv有没有使用
如这个PV仍在被使用,在确认它未被使用后,可用命令vgreduce把它从VG中删除
命令:vgreduce vg0 /dev/sdb15 ———— 从vg中删除pv
若是所在PV上有数据,则应把数据传移到其它PV上
注释:若要把一个PV从VG中移除,应首先把其上全部活动PE中的数据转移到其它PV上,而新的PV必须是本VG的一部分,有足够的空间,如要把PV1:/dev/md0上的数据移到PV2:/dev/sdb6上可用,建议在转移数据以前备份LV中的数据,若是在该PV之上的LV采用交错方式存放,则这个转移过程不能被打断。
命令:pvmove /dev/md0 /dev/sdb6
第四步建立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
在VG卷组上建立LV逻辑卷
命令:lvcreate -L 500M -n lv0 vg0
指定LV大小 LV名称 卷组VG名称
查看整个卷组VG总大小6.7G,剩余的空间为6.21G
命令:vgs
格式化LV
命令:mkfs.ext3 /dev/vg0/lv0
查看一个lv0块设备
删除LV
为删除一个逻辑卷,必须首先从系统卸载其上的文件系统,而后可用lvremove删除,如:
umount /lv1 先卸载LV文件系统
lvremove /dev/vg0/lv1 移除lv1逻辑卷
挂载lv0并建立文件
下面最关键的来了
扩大LV
步骤以下:
首先增长逻辑卷容量(lvextend)
在线(脱机)增长ext3文件系统(resize2fs)
查看man帮助
查看lv扩展后的VG卷组剩余空间
首先增长逻辑卷容量(lvextend)
指定扩容后的尺寸: lvextend -L 2G /dev/vg0/lv0
将扩大逻辑卷lv0的容量为2GB。
指定要增长的尺寸: lvextend -L +512M /dev/vg0/lv0
将为LV v0再增大容量1GB至1.5GB。
注释:为LV扩容的一个前提是,LV所在的VG有足够的空闲存储空间可用。
在为LV扩容以后,应同时为LV之上的文件系统扩容,使两者相匹配。对不一样的文件系统有相对应的扩容方法。
扩充了LV后,从新挂载,查看大小,看到当前的LV大小并无增大,那又该怎么办呢?
注释:ext2/ext3除非内核已有ext2online 补丁,不然在改变ext2/ext3文件系统的大小时应卸载它
在线(脱机)增长ext3文件系统(resize2fs)
再次查看的时候咱们能够看到容量大小已是扩展后的大小了
缩小LV(这个比较麻烦)
步骤以下:
卸载文件系统,使其脱机进行操做(umount)
检查文件系统(e2fsck)
缩小文件系统(resize2fs),指定缩小后的容量
缩小LV,减小卷容量(lvreduce),指定缩小后的容量
使用man 帮助看一看lvreduce的用法
注释:逻辑卷可扩展一样也可缩小,但应在缩小LV以前首先减少文件系统,不然将可能致使数据丢失。
下面来缩小lv0的容量,现容量为800M容量,我要缩小到500M
卸载文件系统,使其脱机进行操做(umount)
命令:umount /lv0
检查文件系统(e2fsck)
命令:e2fsck -f /dev/vg0/lv0
缩小文件系统(resize2fs)
命令:resize2fs /dev/vg0/lv0 500M
缩小LV,减小卷容量(lvreduce)
命令:lvreduce -L 500M /dev/vg0/lv0
挂载lv0文件系统并查看其大小
系统启动激活
在RHEL 5之后都会自动激活LVM,以下,在系统启动的时候会自动激活的
若是没有激活的话请作以下操做:
系统启动/关闭 "为使系统启动时可自动激活并使用LVM,可将如下几行添加到启动 rc 脚本中: /sbin/vgscan /sbin/vgchange -a y 这些行将浏览全部可用的卷组并激活它们。要注意的是,它们应在安装卷组上的文件系统操做以前被执行,不然将没法正常安装文件系统。 "在系统关机时,要关闭LVM,这可将如下这行添加到关机 rc 脚本中,并确保它在卸装了全部文件系统后执行:/sbin/vgchange -a n