LVM创建逻辑卷.docx
《LVM创建逻辑卷.docx》由会员分享,可在线阅读,更多相关《LVM创建逻辑卷.docx(10页珍藏版)》请在冰豆网上搜索。
LVM创建逻辑卷
浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】
一、LVM的基本概念
在对磁盘进行分区大小规划时,有时往往不能确定这个分区要使用的总空间大小,而用fdisk对磁盘分区后,每个分区的大小已经固定了,如果分区设置的过大,就白白浪费了磁盘空间,而分区设置的过小,就会导致空间不够用的情形,此时最常见的方法是重新划分磁盘分区,或者通过软连接的方式将此分区的目录链接到另一个分区,虽然能临时解决问题,但是给管理带来了麻烦。
如何能解决这些问题呢,LVM是一个不错的方法。
LVM,是LogicalVolumeManager的缩写,中文意思是逻辑卷管理,它是linux下对磁盘分区进行管理的一种机制,LVM是建立在磁盘分区和文件系统之间的一个逻辑层,管理员利用LVM可以在磁盘不用重新分区的情况下动态的调整分区的大小。
如果系统新增了一块硬盘,通过LVM就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。
二、LVM的使用术语
通过LVM技术,屏蔽了磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统,在认识LVM之前,先熟悉下LVM中几个常用的术语,在LVM中主要涉及以下几个概念。
�8�5 物理存储设备(physicalmedia):
指系统的存储设备文件,比如:
/dev/sda、/dev/hdb等等。
�8�5 物理卷(physicalvolume):
简称PV,是指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备(比如RAID设备)。
�8�5 卷组(VolumeGroup):
简称VG,类似与非LVM系统中的物理硬盘,一个LVM卷组有一个或者多个物理卷组成。
�8�5 逻辑卷(logicalvolume):
简称LV,类似与非LVM系统上的硬盘分区,LV建立在VG上,可以在LV上创建文件系统。
�8�5 PE(physicalextent):
PV中可以分配的最小存储单元称为PE,PE的大小是可指定的,默认为4M。
�8�5 LE(logicalextent):
LV中可以分配的最小存储单元称为LE,在同一个卷组中,LE的大小和PE是一样的,且一一对应。
图1清楚的说明了LVM各个组成部分之间的对应关系:
图1LVM磁盘组织结构图
在图1中:
�8�3 有两块物理硬盘组成了LVM的底层结构,这两块硬盘的大小、型号可以不同。
�8�3 PV可以看作是硬盘上的分区,因此,可以说物理硬盘A划分了两个分区,物理硬盘B划分了3个分区。
�8�3 然后将前三个PV组成了一个卷组VG1,后两个PV组成了一个卷组VG2。
�8�3 接着在卷组VG1上划分了两个逻辑卷LV1和LV2,在卷组VG2上划分了一个独立的逻辑卷LV3。
�8�3 最后,在逻辑卷LV1、LV2和LV3上创建文件系统,分别用来挂载/usr、/home和/var分区。
三、安装LVM工具
通过下面的命令确认LVM是否已经安装:
[root@localhost~]#rpm-qa|greplvm
lvm2-2.02.16-3.el5
system-config-lvm-1.0.22-1.0.el5
如果有类似上面的输出,就说明系统中已经安装了LVM,如果没有任何输出,则说明系统中还没有安装LVM,可以从系统安装光盘或者网络上找到对应的rpm包安装即可,安装方法这里不在讲述。
现在默认的linux发行版本内核一般都支持LVM,因此只要安装好LVM工具,即可使用LVM提供的强大功能。
四、 LVM的创建与管理
LVM的创建需要经过以下几个步骤:
1.创建物理分区
在使用LVM之前,需要首先划分磁盘分区,也就是用fdisk命令划分磁盘分区,划分的方法在上个章节已经介绍过,稍微不同的是,在创建分区的时候,需要指定分区类型为linuxLVM,对应的ID为8e(其实LVM也能识别linux默认的分区类型83),
这里我们将所有分区类型都指定为8e,假定linux下新增了两块硬盘,分区后显示如下:
[root@localhost~]#fdisk-l/dev/sdb/dev/sdc
Disk/dev/sdb:
8589MB,8589934592bytes
255heads,63sectors/track,1044cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBoot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 5 Extended
/dev/sdb5 1 250 2008062 8e LinuxLVM
/dev/sdb6 251 500 2008093+ 8e LinuxLVM
/dev/sdb7 501 750 2008093+ 8e LinuxLVM
/dev/sdb8 751 1044 2361523+ 8e LinuxLVM
Disk/dev/sdc:
8589MB,8589934592bytes
255heads,63sectors/track,1044cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBoot Start End Blocks Id System
/dev/sdc1 1 1044 8385898+ 5 Extended
/dev/sdc5 1 499 4008154+ 8e LinuxLVM
/dev/sdc6 500 1044 4377681 8e LinuxLVM
由上面输出可知,/dev/sdb硬盘划分了一个扩展分区和四个逻辑分区,分区类型均为LinuxLVM,/dev/sdc磁盘划分了一个扩展分区和两个逻辑分区,分区类型也都是LinuxLVM。
这里以两块硬盘举例的主要目的是为了突出LVM可以跨磁盘操作的概念。
也就是LVM可以操作多块物理硬盘上的不同分区,通过LVM管理磁盘,屏蔽了底层物理设备的异构性。
注意,这里仅仅是进行了分区操作,磁盘分区还没有进行格式化。
2.创建物理卷(PV)
创建物理卷的命令是pvcreate,通过该命令可以将希望添加到卷组(VG)的所有磁盘分区或者整个磁盘创建为物理卷。
使用格式为:
pvcreate 磁盘分区或整个磁盘
这里将第一步中划分的所有磁盘分区创建为物理卷,操作如下:
[root@localhost~]#pvcreate /dev/sdb5/dev/sdb6/dev/sdb7/dev/sdb8/dev/sdc5/dev/sdc6
Physicalvolume"/dev/sdb5"successfullycreated
Physicalvolume"/dev/sdb6"successfullycreated
Physicalvolume"/dev/sdb7"successfullycreated
Physicalvolume"/dev/sdb8"successfullycreated
Physicalvolume"/dev/sdc5"successfullycreated
Physicalvolume"/dev/sdc6"successfullycreated
3.创建卷组
创建卷组的命令是vgcreate,使用格式为:
vgcreate卷组名物理卷
卷组名:
就是要创建的卷组的名称。
物理卷:
指定希望添加到此卷组的所有磁盘分区或者整个磁盘。
这里我们创建两个卷组myvg1和myvg2,同时两个卷组都跨越了不同的磁盘,卷组myvg1由/dev/sdb磁盘的/dev/sdb5、/dev/sdb6和/dev/sdc磁盘的/dev/sdc5分区组成。
同理,卷组myvg2由/dev/sdb磁盘的/dev/sdb7、/dev/sdb8和/dev/sdc磁盘的/dev/sdc6分区组成。
操作如下:
[root@localhost~]#vgcreatemyvg1/dev/sdb5/dev/sdb6/dev/sdc5
Volumegroup"myvg1"successfullycreated
[root@localhost~]#vgcreatemyvg2/dev/sdb7/dev/sdb8/dev/sdc6
Volumegroup"myvg2"successfullycreated
4.激活卷组
卷组创建完毕后,可以通过vgchange命令激活卷组,而无需重启系统。
Vgchange使用格式如下:
vgchange-ay卷组名(激活卷组)
vgchange-an卷组名(停用卷组)
这里我们激活卷组myvg1和myvg2,使用如下命令:
[root@localhost~]#vgchange-aymyvg1
0logicalvolume(s)involumegroup"myvg1"nowactive
[root@localhost~]#vgchange-aymyvg2
0logicalvolume(s)involumegroup"myvg2"nowactive
5.显示卷组、物理卷属性信息
vgdisplay用于显示创建的卷组信息,同理pvdisplay命令用于显示物理卷组信息,使用格式为:
vgdisplay卷组名
pvdisplay物理卷名
要显示卷组myvg1的信息,执行操作如下:
[root@localhost~]#vgdisplaymyvg1
---Volumegroup---
VGName myvg1
SystemID
Format lvm2
MetadataAreas 3
MetadataSequenceNo 1
VGAccess read/write
VGStatus resizable
MAXLV 0
CurLV 0
OpenLV 0
MaxPV 0
CurPV 3
ActPV 3
VGSize 7.65GB
PESize 4.00MB
TotalPE 1958
AllocPE/Size 0/0
Free PE/Size 1958/7.65GB
VGUUID H6RMci-9F2C-QlPw-Bnl2-07AP-J0h7-XPq4FQ
从输出可以看出此卷组所有信息,例如卷组大小为7.65GB,每个PE大小为4M,总共的PE数为1958。
6.创建逻辑卷
创建逻辑卷的命令是lvcreate,常用的使用格式为:
lvcreate[-L逻辑卷大小|-lPE数]–n逻辑卷名称 所属的卷组名
其中:
-L:
后面接逻辑卷的大小,可以用K、M、G表示。
例如100M、10G等
-l:
用PE数来计算逻辑卷的大小。
这里我们在卷组myvg1下创建两个逻辑卷mylv11和mylv12,在卷组myvg2下创建一个卷组mylv2:
[root@localhost~]#lvcreate -L4G-nmylv11myvg1
#在卷组myvg1中创建一个大小为4G的卷组mylv11
Logicalvolume"mylv11"created
[root@localhost~]#vgdisplaymyvg1|grep"Free PE"
#检查卷组myvg1中可用的卷组空间
Free PE/Size 934/3.65GB
[root@localhost~]#lvcreate -l934 -nmylv12myvg1
#将卷组myvg1中剩余的空间全部分给逻辑卷mylv12
Logicalvolume"mylv12"created
[root@localhost~]#vgdisplaymyvg1|grep"Free PE"
#检查卷组myvg1中是否还有剩余空间,从输出可知,空间全部利用,没有浪费。
Free PE/Size 0/0
[root@localhost~]#vgdisplaymyvg2|grep"Free PE"
#检查卷组myvg2的可用空间
Free PE/Size 2134/8.34GB
[root@localhost~]#lvcreate -l2134 -nmylv2myvg2
#将卷组myvg2的所有空间分配给逻辑卷mylv2
Logicalvolume"mylv2"created
7.格式化逻辑卷,创建文件系统
文件系统是创建在逻辑卷上的,这里假定使用linux默认的ext3文件系统,接下来的工作是用mkfs.ext3格式化文件系统:
[root@localhost~]#mkfs.ext3/dev/myvg1/mylv11
[root@localhost~]#mkfs.ext3/dev/myvg1/mylv12
[root@localhost~]#mkfs.ext3/dev/myvg2/mylv2
最后,建立挂载目录,挂载这些逻辑卷即可:
[root@localhost~]#mkdir/mylv11
[root@localhost~]#mkdir/mylv12
[root@localhost~]#mkdir/mylv2
[root@localhost~]#mount/dev/myvg1/mylv11 /mylv11
[root@localhost~]#mount/dev/myvg1/mylv12 /mylv12
[root@localhost~]#mount/dev/myvg2/mylv2 /mylv2
[root@localhost~]#df-h|grepmylv
Filesystem Size Used AvailUse% Mountedon
/dev/mapper/myvg1-mylv11 4.0G 137M 3.7G 4% /mylv11
/dev/mapper/myvg1-mylv12 3.6G 72M 3.4G 3% /mylv12
/dev/mapper/myvg2-mylv2 8.3G 147M 7.7G 2% /mylv2
到这里为止,新增的磁盘设备已经可以使用了,如果要开机自动挂载,编辑/etc/fstab文件,加上新增的三个逻辑分区即可。
8.添加新的物理卷到卷组
添加新的物理卷到卷组的命令为vgextend,使用格式为:
vgextend卷组名新加入的物理卷
紧接着上面的讲解实例,假定系统增加了第四块硬盘/dev/sdd,大小为4G,同时通过fdisk进行了磁盘分区,对应的分区为/dev/sdd5,现在要把新增的硬盘分区加入到卷组myvg2,操作如下:
[root@localhost~]#vgdisplaymyvg2|grep“Free PE” #首先检查myvg2卷是否有空闲空间,由输出可知,空间全部用完。
Free PE/Size 0/0
[root@localhost~]#pvcreate/dev/sdd5 #先将/dev/sdd5转换为物理卷
Physicalvolume"/dev/sdd5"successfullycreated
[root@localhost~]#vgextendmyvg2/dev/sdd5 #将新增物理卷添加到卷组myvg2中
Volumegroup"myvg2"successfullyextended
[root@localhost~]#vgdisplaymyvg2|grep"Free PE" #此时剩余卷组空间还有4G,刚好是新增物理卷的大小
Free PE/Size 1023/4.00GB
9.修改逻辑卷的大小
LVM最主要的功能就是能动态的调整分区的大小,其实也就是修改逻辑卷的大小,修改逻辑卷需要用到的命令有lvextend(扩展逻辑卷)、lvreduce(缩减逻辑卷)以及ext2resize(修改文件系统大小),下面分别进行介绍。
lvextend与lvreduce的使用格式类似,如下所示:
lvextend[-L(+size)–l(+PE数)] 逻辑卷名称
lvreduce[-L(-size)–l(-PE数)] 逻辑卷名称
-L:
“+size”表示给逻辑卷空间增加指定的大小,“-size”表示给逻辑卷空间缩减指定的大小。
size表示将逻辑卷增加(lvextend)或缩减(lvreduce)到指定的空间大小。
例如“+300”表示将逻辑卷空间增大300M,“-2G”表示将逻辑卷的空间缩减2G。
-l:
与“-L”用法相同,不同的是“-l”选项用PE数来表示逻辑卷的大小。
ext2resize的使用格式如下:
ext2resize设备文件或逻辑卷 空间大小
修改逻辑卷分为扩充逻辑卷大小和减小逻辑卷大小两种情况,下面依次介绍。
(1)扩充逻辑卷空间
扩充逻辑卷大小的一般步骤为:
�8�5 利用扩展逻辑卷命令lvextend扩展逻辑卷空间
�8�5 卸载已经挂载的逻辑卷分区
�8�5 利用ext2resize指令修改文件系统大小以实现空间扩充
�8�5 挂载扩充后的逻辑卷分区
在上个小节中,我们给卷组myvg2增加了一个新的物理卷,现在要将新增的物理卷空间扩充到逻辑卷mylv2中,操作如下:
首先扩充逻辑卷mylv2的大小,执行以下命令:
[root@localhost~]#lvextend-l+1023/dev/myvg2/mylv2
Extendinglogicalvolumemylv2to12.33GB
Logicalvolumemylv2successfullyresized
注意,“-l”选项后面的“+1023”代表的是增加的PE数,这个值是在上个小节中通过命令“vgdisplaymyvg2|grep"Free PE"”得到的,当然这里也可以使用“-L+4G”来代替“-l+1023”。
接下来的工作是卸载/dev/myvg2/mylv2分区,为修改文件系统大小做准备。
[root@localhost~]#umount/dev/myvg2/mylv2或者执行umount/mylv2
修改文件系统大小的工具是ext2resize指令,这个指令可能不包含在某些linux发行版中,RedhatLinux就默认没有这个命令,因此需要先安装这个指令对应的rpm包,下载类似ext2resize-1.1.19-1.i386.rpm的rpm文件,安装即可。
[root@localhost~]#rpm-ivhext2resize-1.1.19-1.i386.rpm
Preparing...###########################[100%]
1:
ext2resize##########################[100%]
安装完毕,系统就会出现一个ext2resize指令,利用这个指令修改文件系统的大小。
第三步,修改文件系统大小,执行如下命令:
[root@localhost~]#ext2resize /dev/myvg2/mylv2
ext2resizev1.1.18-2001/03/18forEXT2FS0.5b
由于已经将扩展的分区加入到逻辑卷mylv2中,因此上面的操作其实就是刷新逻辑卷,使更改生效。
最后,挂载逻辑卷到文件系统即可,执行如下命令:
[root@localhost~]#mount/dev/myvg2/mylv2/mylv2
[root@localhost~]#df-h|grepmylv2
Filesystem Size Used Avail Use% Mountedon
/dev/mapper/myvg2-mylv2 13G 147M 12G 2% /mylv2
可以看到,逻辑卷/dev/myvg2/mylv2的空间已经增加到13G,动态扩展逻辑卷成功。
(2)减小逻辑卷的空间
减小逻辑卷的一般步骤为:
�8�5 卸载已经挂载的逻辑卷分区
�8�5 利用ext2resize指令修改文件系统大小以实现空间缩减
�8�5 利用减小逻辑卷命令lvreduce减小逻辑卷空间
�8�5 挂载缩减后的逻辑卷分区
假定我们要对上面的逻辑卷/dev/myvg2/mylv2缩减2G的空间,可以这么操作。
首先卸载逻辑卷/dev/myvg2/mylv2分区:
umount/mylv2
然后用ext2resize指令缩减文件系统大小:
ext2resize /dev/myvg2/mylv2 11G
接着利用lvreduce指令缩减逻辑卷/dev/myvg2/mylv2到11G,执行此步骤主要目的是将缩减的空间从/dev/myvg2/mylv2释放,从而可以供其它逻辑卷使用。
[root@localhost~]#lvreduce-L11G/dev/myvg2/mylv2 #缩减逻辑卷/dev/myvg2/mylv2到11G
WARNING:
Reducingactivelogicalvolumeto11.00GB
THISMAYDESTROYYOURDATA(filesystemetc.)
Doyoureallywantt