LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。它的机制就是将多个块设备连接为一个整块的卷组(volumegroup),形成一个存储池。然后,在这个卷组上的创建逻辑卷(logicalvolumes),并进一步的在逻辑卷上创建文件系统。如下图,就是其层次模型:
物理卷(physicalvolume):物理卷就是指磁盘分区或从逻辑上与磁盘分区有同样功能的设备(如RAID)。创建物理卷时磁盘类型需要是8e。创建物理卷的时候不可以直接格式化!
卷组(volumegroup):它其实就是将多个物理卷组合起来,逻辑上成为一块硬盘。它的大小有物理卷的大小和多少决定,且至少要有一个物理卷。
逻辑卷(logicalvolume):在卷组上创建,可以在创建的逻辑卷上建立文件系统。它类似与磁盘分区。不同的是逻辑卷的边界可以随意扩展或缩小,也就是我们可以扩展或缩小我们的分区大小。
从图中我们可以看到物理卷层后面跟着省略号,这表示理论上我们可以添加N(N>=1)个物理卷来组合成卷组。这就意味着卷组的大小可以无限的扩展。最终使用的逻辑卷的大小也可以无限的扩展。(注:我们也可以减少物理卷的个数,来减小卷组的容量,从而减少逻辑卷可以使用的最大容量)
其创建过程是:先将物理设备做成物理卷,然后将物理卷组合起来形成卷组,最后在卷组上创建逻辑卷。而我们使用的就是逻辑卷。
了解了这些知识,我们就来简单的实现一个LVM的实现过程吧!这里我使用虚拟机上的磁盘分区进行创建!
1、创建分区
首先创建磁盘分区,这里我使用的是SCSI硬盘,并且系统已经有了三个主分区,那么我们只能创建扩展分区,并在扩展分区上创建逻辑分区了。我使用的是fdisk工具进行分区。
#fdisk /dev/sda
具体的分区过程不再给出,需要注意的是分区类型必须是8e,否则无法支持LVM逻辑卷的使用。分区完最好输入p查看下创建好的分区以及类型,最后保存退出。这里我创建了/dev/sda5和/dev/sda6两个逻辑分区,大小分别是5G和3G。当然,你也可以创建多个。
2、创建物理卷
创建物理卷的命令是pvcreate,我们可以将上面所创建的两个分区创建为物理卷,也可以先只将一个分区创建为物理卷。
#pvcreate /dev/sda5 /dev/sda6
3、创建卷组
创建卷组的命令是vgcreate,将上面创建的两个物理卷创建为一个卷组
#vgcreate myvg /dev/sda5 /dev/sda6
说明:
myvg是指定创建的卷组的逻辑名,可以随意的设定,这里我是用myvg作为卷组的名称。后面就是将创建的物理卷添加到卷组中,这里我们也可以只将一个物理卷添加到卷组中,等想再添加另一个物理卷的时候再添加。这里需要注意PE(默认是4M)这个概念,它表示卷组上创建的所有逻辑卷都以4MB为增量单位来进行扩充 或缩减。由于内核原因,PE大小决定了逻辑卷的最大大小,4MB的PE决定了单个逻辑卷最大容量为256GB,若希望使用大于256G的逻辑卷则创建卷组时指定更大的PE。PE大小范围为8KB到512MB,并且必须总是2的倍数。如果想指定PE大小只需要添加-s选项,指定PE大小就行了,列:#vgcreate -s 16M myvg /dev/sda5 /dev/sda6。
4、激活卷组
为了立即使用卷组而不用重启系统,可以使用vgchange命令来激活卷组
#vgchage -ay myvg
5、创建逻辑卷
创建逻辑卷的命令是lvcreate,我们在myvg卷组上创建一个6G大小的逻辑卷
#lvcreate -L 6G -n mylv myvg
说明:
-L来指定逻辑卷的大小;-n指定逻辑卷的名称
6、格式化逻辑卷分区
这里我使用的是ext3格式的文件系统
#mke2fs -j /dev/myvg/mylv
创建挂载点来挂在创建好的逻辑卷分区
#mkdir /mylv
#mount /dev/myvg/mylv /mylv
以上就是创建一个可以使用的逻辑卷的简单步骤了。下面扩展下其内容,到最后面简单介绍些有关的命令及选项。
1、为卷组添加新的物理卷
当我们又创建了新的物理卷的时候,想要添加到myvg卷组中时,需要使用vgextend这个命令了。
#vgextend -t myvg /dev/sda7 #先测试是否可以添加物理卷
#vgextend myvg /dev/sda7
这里/dev/sda7表示我们创建的新的物理卷
2、从卷组中删除物理卷
要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷使用,这时我们就要使用pvdisplay命令察看一个物理卷信息:
如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。删除物理卷的命令为vgreduce:
#vgreduce myvg /dev/sda7
这里为了简单说明,就将新添加的/dev/sda7从卷组中删除
附注:
如果我们创建的卷组包含两个物理卷,一个3G(/dev/sda5),一个1G(/dev/sda6),而我们LV上面已经有2G的数据了,这样我们就不能将/dev/sda5给移除了,因为移除/dev/sda5必然会损坏数据。而且我们不能确定数据是不是都在/dev/sda5上面,也不能贸然移除/dev/sda6。如果需要移除/dev/sda6的话,应该先将/dev/sda6上面的数据移到同卷组的其他物理卷上,然后再移除/dev/sda6。这就需要使用pvmove这个命令了,步骤如下
#pvmove /dev/sda6 #不需要指定将数据移动到那儿个磁盘上,它会自动将数据移动到同组的物理卷上
#vgreduce myvg /dev/sda6
3、删除逻辑卷
删除逻辑卷时,要先将其卸载,然后才能删除,这里我们为了简单说明就将上面新建的逻辑卷作为例子
#umount /dev/myvg/mylv
#lvremove /dev/myvg/mylv
Do you really want to remove active logical volume mydata? [y/n]:y
4、扩展逻辑卷大小
扩展逻辑卷大小的命令是lvextend,上面我们创建逻辑卷的时候还剩2G容量,那么我们就为其再添加1G容量的步骤如下
#lvextend –L 7G /dev/myvg/mylv
或者这样增加这1G容量
#lvextend –L +1G /dev/myvg/mylv
增加逻辑卷的容量以后,我们的物理边界扩展了,此时查看逻辑卷的大小并没有改变,因为逻辑边界没有扩展。所以我们就需要扩展逻辑卷的逻辑边界了,命令如下
#resize2fs /dev/myvg/mylv #这里不用跟调整的大小,会自动扩展到扩展的物理边界
5、减小逻辑卷的大小
在缩减逻辑卷大小的时候需要先将文件系统卸载了。需要注意的是,在缩减的时候我们的数据文件可能会受到影响,所以一般不建议缩减逻辑卷大小。这里我们使用的大小是添加过1G后的逻辑卷的大小,我们将其缩减为5G的大小。步骤如下
#umount /dev/myvg/mylv
#e2fsck –f /dev/myvg/mylv #强行检测逻辑卷
#resize2fs /dev/myvg/mylv 5G #调整逻辑卷的大小
#lvreduce –L 5G /dev/myvg/mylv #缩减逻辑卷的大小
(#lvreduce –L -2G /dev/myvg/mylv)
#mount /dev/myvg/mylv /mylv
#df –lh #查看各个磁盘的大小
说明:
在我们缩减的时候需要先用e2fsck命令强行检测下逻辑卷,然后用resize2fs命令调整逻辑卷的大小,最后用lvreduce来减小逻辑卷大小。
最后给出常用命令的简单介绍:
1、物理卷相关命令
pvcreate #创建物理卷
pvremove #移除物理卷
pvmove #移动物理卷的数据
pvscan #扫描物理卷
pvdisplay #查看物理卷的信息
例:
#pvdisply #查看所有的物理卷信息
#pvdisply /dev/sda5 #只查看特定的物理卷的信息
pvs #简单查看物理卷的信息
2、卷组相关命令
vgcreate #创建卷组
-s :指定PE大小,默认PE大小是4M
vgdisplay #查看卷组的信息
vgextend #扩展卷组大小
-t :检测制定物理卷是否可以添加进来
vgreduce #缩减卷组大小
-t :检测指定物理卷是否可以移除出去
vgscan #扫描卷组
vgs #查看卷组的简单信息
3、逻辑卷相关命令
lvcreate #创建逻辑卷
-L :指定创建逻辑卷的大小
-n :指定逻辑卷的名称
lvdisplay #查看逻辑卷的信息
lvremove #移除逻辑卷
lvreduce #缩减逻辑卷大小
lvextend #扩展逻辑卷大小
lvs #简单查看逻辑卷的信息
相关概念:
物理卷
物理卷是指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备(比如RAID设备)。
逻辑卷
一个或者多个物理卷组成一个逻辑卷。对于LVM而言,逻辑卷类似于非LVM系统中的硬盘分区。逻辑卷可以包含一个文件系统(比如/home或者/usr)。
卷组
一个或者多个逻辑卷组成一个卷组。对于LVM而言,卷组类似于非LVM系统中的物理硬盘。卷组把多个逻辑卷组合在一起,形成一个可管理的单元。
物理块physical extent (PE)
物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。
转载于:https://blog.51cto.com/rrliang/818598