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(增加到)
lvextend -L + 200M /dev/rootvg/lv1(增加)
将lv1增加200M
2 ext2online /dev/rootvg/lv1
让lv1容量更改立即生效减小lv,网上很多文章介绍的是ReiserFS,这里我们是 ext3文件系统,如果我们需要减少50M:
如果上面执行不了,执行下面
resize2fs /dev/rootvg/lv1
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
在LVM1中可以通过e2fsadm这个程序,方便的减小一个ext2/3的大小。
而LVM2中这个程序不可用。
所以在LVM2中减小EXT2/3大小时麻烦一些,因为必须要知道减少后卷的块数。
[root@NEWLFS ~]#umount /mnt/lvm_opt/
首先卸载文件系统
[root@NEWLFS ~]#mke2fs -n /dev/lvm_vg/lv_opt
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
262144 inodes, 786432 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
16 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
[root@NEWLFS ~]#
因为必须知道减少后卷的块数,所以通过mke2fs -n 列出块大小
注意: -n 参数不会使mke2fs真的创建文件系统,而只是列出文件系统的信息。千万不要少了-n 否则数据就全没了。。:( 块大小是4096(4kb) 当前有786432个blocks 现在打算减小一个G的空间。
1G占用的blocks一共是262144个,所以减少后的blocks应该是524288个。
减小FS大小:
[root@NEWLFS ~]#resize2fs /dev/lvm_vg/lv_opt 524288
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/lvm_vg/lv_var to 524288 (1k) blocks.
The filesystem on /dev/lvm_vg/lv_var is now 524288 blocks long.
减少LV大小:(注意这里设备名不能是/dev/mapper/.....应该是 /dev/卷组名/逻辑卷)
[root@NEWLFS mnt]#lvreduce -L -1G /dev/lvm_vg/lv_var
WARNING: Reducing active logical volume to 2.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_var? [y/n]: y
Reducing logical volume lv_var to 2.00 GB
Logical volume lv_var successfully resized
ok,成功缩小了1G,再重新mount上吧。
[root@NEWLFS mnt]#mount /dev/lvm_vg/lv_var lvm_var/
[root@NEWLFS mnt]#df
..........
/dev/mapper/lvm_vg-lv_var
2.0G 33M 1.9G 2% /mnt/lvm_var
[root@NEWLFS mnt]#
[root@NEWLFS mnt]#umount /dev/lvm_vg/lv_opt
必 须先关闭LV才可以删除它。
[root@NEWLFS mnt]#lvremove /dev/lvm_vg/lv_opt
Do you really want to remove active logical volume "lv_opt"? [y/n]: y
Logical volume "lv_opt" successfully removed
[root@NEWLFS mnt]
使 用lvremove命令删除一个逻辑卷,这里删除了lv_opt.
删 除VG:
首 先必须确保VG中没有任何逻辑卷存在,才可以删除一个VG。
我已经使用lvremove 删除了lv_usr lv_home。
[root@NEWLFS mnt]#lvdisplay
[root@NEWLFS mnt]#
没 有任何输出,说明已经没有lv了。
[root@NEWLFS mnt]#vgchange -a n lvm_vg
0 logical volume(s) in volume group "lvm_vg" now active
使用vgchange -a n 关闭了lvm_vg,然后才可以删除它。
[root@NEWLFS mnt]#vgremove lvm_vg
Volume group "lvm_vg" successfully removed
干 掉了 ....世界清静了 ^_^
RHEL5中LVM修复方法
LVM修复方法
现在很多人对逻辑卷不是很细心,在做逻辑卷时可能会导致系统崩溃。在此我向各位提供自己修复逻辑卷的一点心得。
首先说下因为逻辑卷而造成系统瘫痪的的原因。在做逻辑卷的时候造成文件系统和逻辑卷的大小不统一而造成的系统瘫痪。那如何修复呢?
其实修复很简单,但你的系统瘫痪后会进入Linux的修复系统。由于进入修复模式后所有的文件和目录都为只读,需要从新挂载成可读可写。
#mount -o remount,rw /
进入/etc/fstab这个文件将需要修复的逻辑卷注释掉(怎么注释不再详说)。进入系统进行修改。
或者直接进行修改:#lvm lvexdent -L 200M /dev/vgname/lvname
#resize2fs /dev/vgname/lvname 200M
在增大或缩小LVM时要注意顺序,这样可以避免在对逻辑卷进行修复。增大时先增大LV,后增大文件系统,缩小时先缩小文件系统,后缩小LV大小。