参考地址:http://www.it165.net/os/html/201301/4475.html
一、LVM的基本概念
在对磁盘进行分区大小规划时,有时往往不能确定这个分区要使用的总空间大小,而用fdisk对磁盘分区后,每个分区的大小已经固定了,如果分区设置的过大,就白白浪费了磁盘空间,而分区设置的过小,就会导致空间不够用的情形,此时最常见的方法是重新划分磁盘分区,或者通过软连接的方式将此分区的目录链接到另一个分区,虽然能临时解决问题,但是给管理带来了麻烦。如何能解决这些问题呢,LVM是一个不错的方法。
LVM,是Logical Volume Manager的缩写,中文意思是逻辑卷管理,它是linux下对磁盘分区进行管理的一种机制,LVM是建立在磁盘分区和文件系统之间的一个逻辑层,管理员利用LVM可以在磁盘不用重新分区的情况下动态的调整分区的大小。如果系统新增了一块硬盘,通过LVM就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。
二、 LVM的使用术语
通过LVM技术,屏蔽了磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统,在认识LVM之前,先熟悉下LVM中几个常用的术语,在LVM中主要涉及以下几个概念。
物理存储设备(physical media):指系统的存储设备文件,比如:/dev/sda、/dev/hdb等等。
物理卷(physical volume):简称PV,是指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备(比如RAID设备)。
卷组(Volume Group):简称VG,类似与非LVM系统中的物理硬盘,一个LVM卷组有一个或者多个物理卷组成。
逻辑卷(logical volume):简称LV,类似与非LVM系统上的硬盘分区,LV建立在VG上,可以在LV上创建文件系统。
PE(physical extent):PV中可以分配的最小存储单元称为PE,PE的大小是可指定的,默认为4M。
LE(logical extent):LV中可以分配的最小存储单元称为LE,在同一个卷组中,LE的大小和PE是一样的,且一一对应。
说明:1.PV可以看作是硬盘上的分区(多个硬盘的大小、型号可以不同)
2.将前多个PV组成了一个卷组VG
3.卷组VG上划分了两个逻辑卷LV1和LV2
4. 在逻辑卷LV1、LV2上创建文件系统,分别用来挂载/home等分区
三、 安装LVM工具
通过下面的命令确认LVM是否已经安装:
[root@localhost ~]# rpm -qa|grep lvm
lvm2-2.02.16-3.el5
system-config-lvm-1.0.22-1.0.el5
如果有类似上面的输出,就说明系统中已经安装了LVM,如果没有任何输出,则说明系统中还没有安装LVM,可以从系统安装光盘或者网络上找到对应的rpm包安装即可,安装方法这里不在讲述。
现在默认的linux发行版本内核一般都支持LVM,因此只要安装好LVM工具,即可使用LVM提供的强大功能。
LVM的管理命令:
四、 LVM的创建与管理
我们创建LVM是从物理分区-物理卷-卷组-逻辑卷-挂载到目录这个顺序来的
第一步:划分物理分区 和刚才的命令一样
fdisk /dev/sdX x表示a或者b 代表第一块或者第二块硬盘
用n创建分区,在保存之前用t来改变分区的的ID号.82是交换分区,83是主分区,5是扩展分区,需要指定分区类型为linux LVM 为8e,(LVM也能识别linux默认的分区类型83)这样就可以用w保存退出。
用partprobe命令使其立即生效。
[root@localhost ~]# fdisk -l /dev/sdb /dev/sdc //查看分区情况
注意,这里仅仅是进行了分区操作,磁盘分区还没有进行格式化。
第二步:创建LVM的物理卷
pvcreate /dev/sdxx sdxx就是刚才创建的分区。
pvdisplay可以显示已经创建好的物理卷。
第三步:创建卷组
#vgcreate 卷组名 物理卷(磁盘,分区皆可)
如:
#vgcreate VolGroup01 /dev/sdxx 创建卷组
可以用vgdisplay来显示已经存在的卷组
卷组创建完毕后,可以通过vgchange命令激活卷组,而无需重启系统。Vgchange使用格式如下:
vgchange -a y 卷组名 (激活卷组)
vgchange -a n 卷组名 (停用卷组)
这里我们激活卷组myvg1和myvg2,使用如下命令:
[root@localhost ~]# vgchange -a y VolGroup01
0 logical volume(s) in volume group "myvg1" now active
第四步:创建逻辑卷 (重点)
语法:
Lvcreate [-L 逻辑卷大小| -l PE数 ] -n 逻辑卷名 卷组名
-L:后面接逻辑卷的大小,可以用K、M、G表示。例如100M、10G等
-l:用PE数来计算逻辑卷的大小。
我就从卷组里面分100M出来创建一个逻辑卷
# lvcreate -L 1G -n ceshi VolGroup00
#lvcreate -l 256 -n ceshi VolGroup00
同样可以用lvdisplay来显示存在的逻辑卷
第五步:格式化、挂载逻辑卷
mkfs.ext3 /dev/VolGroup00/ceshi 其中mkfs.ext3与mkfs -t exte功能一样
mkdir /lpc
mount -t ext3 /dev/VolGroup00/ceshi /lpc/
然后进入这个目录,能够看见lost+fount目录就成功了
这个逻辑卷使用fdisk -l 是查看不到的,只有使用lvdisplay 查看
如果要查看这个逻辑卷挂在到哪了,可以使用mount 查看
到这里为止,新增的磁盘设备已经可以使用了,如果要开机自动挂载,编辑/etc/fstab文件,加上新增的三个逻辑分区即可。
更高级的操作:逻辑卷的拉伸缩减以及卷组的拉伸。
1.添加新的物理卷到卷组
添加新的物理卷到卷组的命令为vgextend,使用格式为:
vgextend 卷组名 新加入的物理卷
现在要把新增的硬盘分区加入到卷组myvg2,操作如下:
#vgdisplay VolGroup00|grep "Free PE" #首先检查VolGroup00卷是否有空闲空间由输出可知,空间全部用完。
Free PE / Size 0 / 0
# pvcreate /dev/sdd1 #先将/dev/sdd1转换为物理卷
Physical volume "/dev/sdd1" successfully created
# vgextend VolGroup00 /dev/sdd1 #将新增物理卷添加到卷组VolGroup00中
Volume group " VolGroup00" successfully extended
# vgdisplay VolGroup00|grep "Free PE" #此时剩余卷组空间还有4G,刚好是新增物理卷的大小
Free PE / Size 1023 / 2.00 GB
2.修改逻辑卷的大小
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)扩充逻辑卷空间
扩充逻辑卷大小的一般步骤为:
1.利用扩展逻辑卷命令lvextend扩展逻辑卷空间
2.卸载已经挂载的逻辑卷分区
3.利用ext2resize指令修改文件系统大小以实现空间扩充
4.挂载扩充后的逻辑卷分区
在上个小节中,我们给卷组VolGroup00增加了一个新的物理卷,现在要将新增的物理卷空间扩充到逻辑卷mylv2中,操作如下:
首先扩充逻辑卷mylv2的大小,执行以下命令:
# # lvextend -L +1G /dev/VolGroup00/ceshi
Extending logical volume ceshi to 1.0 GB
Logical volume ceshi successfully resized
注意,“-l”选项后面的“+567”代表的是增加的PE数,这个值是在上个小节中通过命令“vgdisplay VolGroup00|grep "Free PE"”得到的,当然这里也可以使用“-L +1G”来代替“-l +256”。
接下来的工作是卸载/dev/VolGroup00/ceshi分区,为修改文件系统大小做准备。
#umount /dev/mapper/VolGroup00-ceshi或者执行 umount /lpc (mount查看得到)
修改文件系统大小的工具是ext2resize指令,这个指令可能不包含在某些linux发行版中,Redhat Linux就默认没有这个命令,因此需要先安装这个指令对应的rpm包,下载类似ext2resize-1.1.19-1.i386.rpm的rpm文件,安装即可。
[root@localhost ~]# rpm -ivh ext2resize-1.1.19-1.i386.rpm
Preparing... ###########################[100%]
1:ext2resize ##########################[100%]
安装完毕,系统就会出现一个ext2resize指令,利用这个指令修改文件系统的大小。
第三步,修改文件系统大小,执行如下命令:
[root@localhost ~]# ext2resize /dev/VolGroup00/ceshi
ext2resize v1.1.18 - 2001/03/18 for EXT2FS 0.5b
由于已经将扩展的分区加入到逻辑卷mylv2中,因此上面的操作其实就是刷新逻辑卷,使更改生效。
最后,挂载逻辑卷到文件系统即可,执行如下命令:
[root@localhost ~]# mount ext2resize /dev/VolGroup00/ceshi /lpc
[root@localhost ~]# df -h |grep lpc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-ceshi 3.9G 68M 3.6G 2% /lpc
可以看到,逻辑卷/dev/myvg2/mylv2的空间已经增加到3.9G,动态扩展逻辑卷成功。
(2)减小逻辑卷的空间
减小逻辑卷的一般步骤为:
卸载已经挂载的逻辑卷分区
利用ext2resize指令修改文件系统大小以实现空间缩减
利用减小逻辑卷命令lvreduce减小逻辑卷空间
挂载缩减后的逻辑卷分区
假定我们要对上面的逻辑卷/dev/VolGroup00/ceshi缩减3G的空间,可以这么操作。
首先卸载逻辑卷/dev/VolGroup00/ceshi分区:
umount /lpc
然后用ext2resize指令缩减文件系统大小:
ext2resize /dev/VolGroup00/ceshi 1G //剩余空间为1G或者1024M(只能为整数)
接着利用lvreduce指令缩减逻辑卷/dev/VolGroup00/ceshi到1G,执行此步骤主要目的是将缩减的空间从/dev/VolGroup00/ceshi释放,从而可以供其它逻辑卷使用。
[root@localhost ~]# lvreduce -L -3G /dev/VolGroup00/ceshi #缩减逻辑卷/dev/VolGroup00/ceshi到1G
WARNING: Reducing active logical volume to 3.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv2? [y/n]: y #这里输入y
Reducing logical volume mylv2 to 1.00 GB
Logical volume mylv2 successfully resized
[root@localhost ~]# ext2resize /dev/myvg2/mylv2 #将修改结果加载到文件系统
ext2resize v1.1.18 - 2001/03/18 for EXT2FS 0.5b
ext2resize: new size is same as current (2883584)
最后,重新挂载逻辑卷/dev/VolGroup00/ceshi
[root@localhost ~]# mount /dev/VolGroup00/ceshi /lpc #挂载逻辑卷分区到/lpc目录 www.it165.net
[root@localhost ~]# df -h|grep lpc #查看挂载情况,可以看到,逻辑卷分区已经缩减到1G
Filesystem Size Used Avail Use% Mounted on
/dev/VolGroup00/ceshi 1008M 147M 924M 2% /lpc
注意ext2resize后的1G是目标大小,即减小为多大(剩余空间大小),lvreduce命令-L参数后的-3G是指减少多少(减去文件大小),完成后可以用lvdisplay命令查看。
注意:减小LV可能会造成数据丢失,所以先要做一次全备份,然后卸载掉文件系统,再进行操作。
3.如何删除物理卷、卷组和逻辑卷
我们创建LVM是从物理分区-物理卷-卷组-逻辑卷-挂载到目录这个顺序来的
删除当然像反安装一样,反着来就行
1)先是取消挂载
umount /lpc
2)然后就是删除LVM
lvremove /dev/VolGroup00/ceshi
3)然后就删除卷组
vgremove VolGroup00
4)然后删除物理卷
pvremove /dev/sdxx
5)最后就是删除物理分区了
fdisk /dev/sdx 用d删除分区,w保存结果,partprobe立即生效,这样的话LVM就完全删除掉了。