一、LVM简介

   LVM是逻辑卷管理(Logical Volume Manager)的简写,它最早是IBM为自己的AIX系统研发的存储管理机制。Heinz Mauelshagen于1998年在Linux2.4内核上实现了LVM,它是在物理硬盘和分区直接之间建立一个逻辑层,以此来提高硬盘分区管理的灵活性,比如动态扩容和缩减。

   完美解决磁盘动态扩容缩减的方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。

二、LVM相关术语介绍

物理存储介质(The physical media):指系统的存储设备,如硬盘等,是最低层的存储单元。

   物理卷(physical volume,PV):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID)是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,包含有与LVM相关的管理参数。

   卷组(Volume Group,VG):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

   逻辑卷(logical volume,LV):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

   PE(physical extent,PE):每一个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

   LE(logical extent,LE):逻辑卷也被划分为被称为LE(LogicalExtents)的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

三、LVM的创建

   LVM的结构:

20090712100722-356822072.jpg

上图所示:LV是创建在VG之上,而VG则是由一个个的PV组成。

一)PV的创建:

    构成PV的可以是硬盘的物理分区,也可以是自行创建的RAID卷。本文先以分区为例进行说明,待后续介绍了RAID后再做补充。

1)格式化硬盘

在创建PV之前先要对硬盘进行分区,详细的分区步骤如下所示:

[root@Domain01 ~]# fdisk /dev/sdb  #对/dev/sdb进行分区Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x38607615.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It's strongly recommended to         switch off the mode (command 'c') and change display units to         sectors (command 'u').Command (m for help): n #新建一个分区Command action   e   extended   p   primary partition (1-4)p #选择分区类型,如果主分区已不够用,请选e来创建扩展分区Partition number (1-4): 1 #主分区1First cylinder (1-15665, default 1): #直接回车默认从剩余的第一个磁柱开始Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-15665, default 15665): +20G #选择大小为20GCommand (m for help): t #调整为LVM的ID号Selected partition 1 #如果只要一个分区的时候会默认选择Hex code (type L to list codes): 8e #LVM的ID号Changed system type of partition 1 to 8e (Linux LVM)Command (m for help): n #继续新增分区Command action   e   extended   p   primary partition (1-4)pPartition number (1-4): 2First cylinder (2613-15665, default 2613):Using default value 2613Last cylinder, +cylinders or +size{K,M,G} (2613-15665, default 15665): +20GCommand (m for help): tPartition number (1-4): 2Hex code (type L to list codes): 8eChanged system type of partition 2 to 8e (Linux LVM)Command (m for help): w #保存并退出The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@Domain01 ~]# partx -a /dev/sdb #让内核读到分区信息,多执行几次BLKPG: Device or resource busyerror adding partition 1BLKPG: Device or resource busyerror adding partition 2[root@Domain01 ~]# cat /proc/partitions #内核已读到/dev/sdb的分区信息major minor  #blocks  name   8        0  125829120 sda   8        1     307200 sda1   8        2  123489280 sda2   8        3    2031616 sda3   8       16  125829120 sdb   8       17   20980858 sdb1   8       18   20980890 sdb2   8       32  125829120 sdc

以相同的方法对/dev/sdc进行分区得到/dev/sdc1和/dev/sdc2。

2)创建PV

创建物理卷,物理卷(Physical Volumes)简称PV,是在磁盘的物理分区或与磁盘分区具有同样功能的设备(如RAID)上创建而来。它只是在物理分区中划出了一个特殊的区域,用于记载与LVM相关的管理参数。创建PV的命令:pvcreate 很直白也很好记忆。

[root@Domain01 ~]# pvcreate --helppvcreate: Initialize physical volume(s) foruse by LVM#用于将物理硬盘分区初始化为物理卷,以便被LVM使用pvcreate[--norestorefile][--restorefile file][-d|--debug] #调试,基本用不到[-f[f]|--force [--force]] #强制创建物理卷,无需用户确认,慎用。[-h|-?|--help] #获取帮助[--labelsector sector][-M|--metadatatype 1|2][--pvmetadatacopies #copies][--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]][--dataalignment Alignment[bBsSkKmMgGtTpPeE]][--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]][--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE][-t|--test][-u|--uuid uuid] #指定设备的UUID[-v|--verbose][-y|--yes][-Z|--zero {y|n}] 是否利用前面四个扇区[--version]PhysicalVolume [PhysicalVolume...][root@Domain01 ~]# pvcreate /dev/sd[bc][12] #将格式化出来的物理磁盘分区创建为PVPhysical volume "/dev/sdb1"successfully createdPhysical volume "/dev/sdb2"successfully createdPhysical volume "/dev/sdc1"successfully createdPhysical volume "/dev/sdc2"successfully created

[root@Domain01 ~]# pvdisplay"/dev/sdb1"is a new physical volume of "20.01 GiB"--- NEW Physical volume ---PV Name               /dev/sdb1VG Name         PV Size               20.01 GiBAllocatable           NOPE Size               0Total PE              0Free PE               0Allocated PE          0PV UUID               FVz2es-Db5F-vEYN-AjVk-f4Ft-puB5-ATTpww

至此PV创建成功。

3)删除PV

   删除PV使用pvremove。

[root@server ~]# pvremove /dev/sdb3  Labels on physical volume "/dev/sdb3" successfully wiped