Rexdf

The devil is in the Details.

[转]Linux LVM 逻辑卷管理

| Comments

PV(Physical Volume) 物理卷。可以是单独磁盘,也可以是硬盘分区 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 将lv1增加200M 2 ext2online /dev/rootvg/lv1 让lv1容量更改立即生效减小lv,网上很多文章介绍的是ReiserFS,这里我们是ext3文件系统,如果我们需要减少50M: 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

Comments