分类: LINUX
2006-11-20 09:24:06
学习LVM之前首先一定要弄清楚LVM的概念和LVM存在的作用,LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可,也就是我们常说的动态调整分区的大小。
LVM的一些术语,这些也是学习LVM之前必知的知识,我在网上找到一篇文章,关于这些术语方面介绍的比较详细。
物理存储介质(The
physical media)
这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical
volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume
Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical
volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
可以做这样一个设想来理解以上三者的关系:如果把PV比做地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,而在地球上划分一个区域并标记为亚洲,那么亚洲就相当于一个LVM。
PE(physical
extent)
每一个物理卷被划分为称为PE(Physical
Extents)的基本单元,(我理解为物理块,下面的LE则是对应逻辑块)具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical
extent)
逻辑卷也被划分为被称为LE(Logical
Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
首先可以看到,物理卷(PV)被由大小等同的基本单元PE组成。
一个卷组由一个或多个物理卷组成,
从上图可以看到,PE和LE有着一一对应的关系。逻辑卷建立在卷组上。逻辑卷就相当于非LVM系统的磁盘分区,可以在其上创建文件系统。
下图是磁盘分区、卷组、逻辑卷和文件系统之间的逻辑关系的示意图:
和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(Volume
Group descriptor Area卷组描述符区域)中。VGDA包括以下内容:
PV描述符、VG描述符、LV描述符、和一些PE描述符
。VGDA可以简单的理解为记录卷组的区域。
系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。
弄清楚上面的理论知识之后,就可以开始学习LVM的创建和管理了。
一、逻辑卷的创建
在红旗DC5.0里面默认自带的是LVM2,使用LVM可以查看到
# lvm lvm> version LVM version: 2.02.01 (2005-11-23) Library version: 1.02.02 (2006-01-04) Driver version: 4.4.0 |
1、创建分区
使用fdisk对磁盘进行分区,方法和创建其他一般分区的方式是一样的。如果是基于磁盘来创建LVM可以省去这一步了。
注:只有在LVM1必须将分区类型标识为8E(LVM分区)才可以使用,lvm2中没有这个限制。(这个问题曾经困扰我很久,很多文档都没有提到这一点)
创建完分区之后,可以用fdisk -l查看分区的信息
# fdisk -l /dev/sdb
Disk /dev/sdb: 5242 MB, 5242880000 bytes 255 heads, 63 sectors/track, 637 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sdb1 1 13 104391 83 Linux /dev/sdb2 14 26 104422+ 83 Linux /dev/sdb3 27 39 104422+ 83 Linux |
2、创建物理卷
创建物理卷的命令是pvcreate,这些命令都很好理解,PV是物理卷的简写,create则是创建,用pvcreate将需要添加到卷组的分区或磁盘创建为物理卷。
# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created Physical volume "/dev/sdb3" successfully created |
3、创建逻辑卷
创建完物理卷之后,就可以使用vgcreate将已创建物理卷创建为一个完整卷组
# vgcreate vgtest /dev/sdb1 /dev/sdb2 Volume group "vgtest" successfully created |
vgcreate命令第一个参数是指定该卷组的名:vgtest。后面参数是指定希望添加到该卷组的所有分区和磁盘。同时在使用vgcreate 在创建卷组时,还可以指定PE的大小,需要加上-s参数来实现,PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。一个卷组里面最多允许65534个PE存在。默认设置的PE大小为4 MB,这表示卷组上创建的所有逻辑卷都以 4 MB 为增量单位来进行扩充或缩减,所以4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷则创建卷组时指定更大的PE。
4、激活卷组
刚创建完的卷组默认是需要重新启动激活才能使用的,为了立即使用,可以使用vgchang来激活卷组:
# vgchange -a y vgtest 0 logical volume(s) in volume group "vgtest" now active |
5、创建LVM
成功完成以上的1、2、3、4步之后,就可以使用lvcreate来创建逻辑卷了
# lvcreate -L 150M -n test1 vgtest Rounding up size to full physical extent 152.00 MB Logical volume "test1" created |
上面的命令表明创建了一个名为test1的逻辑卷,大小为150M,其中-L是用来指定LVM的大小的参数,大小单位的可以用K、M、G表示KB、MB、GB。-n是用来指定LVM的名称。
注:提示信息之所以显示的是152M,是因为PE的大小为4M,而指定大小的150不能被4整除,所以在创建的时候就创建了一个152M的LVM。
如果需要把整个卷组的大小都分配给一个LVM使用,那么在创建的时候可以先查看这个卷组总的大小或PE数量,然后在创建LVM的时候指定:
# vgdisplay --- Volume group --- VG Name vgtest System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 200.00 MB PE Size 4.00 MB Total PE 50 Alloc PE / Size 0 / 0 Free PE / Size 50 / 200.00 MB VG UUID MFIkk1-f6QB-qDPP-vWxF-vbTT-0sTN-X1YT51
# lvcreate -L 200M -n test1 vgtest Logical volume "test1" created |
或者
#lvcreate -l 50 -n test1 vgtest Logical volume "test1" created |
其中的-l是用来指定划分给逻辑卷test1 PE的数量,前面提到过默认的一个PE大小为4M,所以test1的大小为50*4M,等同于上面的“lvcreate -L 200M -n test1 vgtest”这条命令创建的大小。
6、创建文件系统
在逻辑卷上创建文件系统和在分区上创建文件系统方法都是一样的,如在逻辑卷上创建ext3格式的文件系统:
# mkfs.ext3 /dev/vgtest/test1 mke2fs 1.35 (28-Feb-2004) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 51200 inodes, 204800 blocks 10240 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 25 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729
Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. |
7、挂载逻辑卷
#mount /dev/vgtest/test1 /lvmtest1/ |
如果需要系统启动的时候自动挂载逻辑卷,则编辑/etc/fstab文件加入如下内容:
/dev/vgtest/test1 /lvmtest1 ext3 defaults 0 0 |