赵 丽
(黑龙江生态工程职业学院 计算机技术系,哈尔滨 150025)
由于linux系统的开源性、稳定性及安全性等优点,已有大部分用户加入到linux使用者的阵营,但在安装linux系统时,通常会遇到硬盘空间的分派问题,并且硬盘空间的扩展及规划通常需要在不停机状态下完成,以上的这些情况,可采用LVM(逻辑卷管理器)来解决。
LVM(Logical Volume Manager,逻辑卷管理器)是一种把硬盘驱动器空间分配成逻辑卷的方法,通过此种方式可使硬盘不必进行分区操作也能被简单地重新划分大小[1]。系统管理员可通过使用LVM方便地为应用程序及用户分配存储空间,同时使用LVM可以按需改变逻辑卷的大小或添加移除逻辑卷。LVM的另一个优点是可以为所管理的逻辑卷提供特定的命名标识。LVM允许在机器的物理存储资源之外创建逻辑卷,并且逻辑卷可以在系统处于运行状态时扩充和缩减[2],此功能为Linux系统管理员提供了相当大的存储器灵活性。综上,使用LVM可灵活方便地对存储系统进行管理,并且可动态进行系统的扩展。
物理卷(physicalvolume,PV):物理卷是LVM的基本存储设备,它可以是硬盘分区,也可以是已创建的物理分区,甚至可以是整个硬盘,包含LVM相关的管理参数是物理卷与普通物理存储介质的区别。
卷组(volumegroup,VG):卷组是存储池,由一个或多个物理卷组成,在卷组上能创建一个或多个逻辑卷,即LVM分区。
逻辑卷(logicalvolume,LV):LVM的逻辑卷建立在卷组之上,类似于非LVM系统中的硬盘分区,它是一个标准的块设备,在逻辑卷之上可以建立多种类型的文件系统。
物理块(physicalextent,PE):物理卷是LVM寻址的最小单元,它是以大小相等的物理块作为存储的基本单位的。
逻辑块(logicalextent,LE):在同一个卷组中,LE的大小和PE的大小是相等的,并且存在一一对应的映射关系。
LVM是建立在磁盘分区和文件系统之间的一个逻辑层,它可为文件系统屏蔽下层磁盘分区布局,提供一个逻辑的盘卷,再在盘卷上来建立文件系统[3]。LVM的结构如图1如示:
启动LVM需要创建分区、创建物理卷、激活卷组、创建逻辑卷及文件系统,流程可见图2,具体操作步骤如下:
(1)添加一块磁盘;
(2)分区并且将文件系统设定为LVM类型,需要注意LVM的分区类型为8e;
(3)创建物理卷之前,要先执行vgscan,即卷组扫描并生成逻辑卷所需的文件,之后再利用pvcreate命令创建相应的物理卷,物理卷数量依具体情况而定;
(4)利用命令vgcreate创建卷组;
(5)利用命令lvcreate创建逻辑卷,可通过参数指定逻辑卷的大小;
(6)利用命令mkfs格式化新生成的逻辑卷并创建ext3文件系统;
(7)利用命令mount将逻辑卷挂载到相应目录下。
随着存储信息的增加,卷组空间不足的情况便会出现,解决这样的问题可以通过加入新的物理卷的方法来扩大卷组容量。先使用pvcreate命令对待加入的设备进行初始化,接下来使用vgextend命令进行扩容即可。
要从卷组中移除一个物理卷,首先要使用pvdisplay进行查看,确认逻辑卷没有正在使用即将移除的物理卷,如果逻辑卷正在使用即将移除的物理卷,就需要将该物理卷的数据转移到其他地方,然后再移除;如果物理卷处于空闲状态,使用vgreduce命令即可将物理卷从卷组中移除即可。
当发现逻辑卷下的某个磁盘有错误时,或有更换大容量或更高速的物理设备等需求时,可使用命令pvmove完成物理卷之间的数据转移。在数据转移前需要确保目标卷的空间要大于待转移卷的大小。
LVM可通过命令lvextent方便地调整逻辑卷的大小。逻辑卷扩展操作后并不会马上生效,需要使用命令resize2fs重新加载逻辑卷,但该命令只可用于ext2/ext3的文件系统的重新加载;删除逻辑卷的命令是lvremove。
在进行移除卷组的操作前要确认该卷组中已经没有任何逻辑卷,亦可在操作前使用命令vgchange将卷组停止,移除卷组的命令为vgremove;在删除物理卷的命令是pvremove,但在删除操作执行前必须确认该物理卷已从卷组中移除了。
以上是LVM的术语、创建过程及管理方法,从下面的实例可以更好地理解LVM的使用方法。某公司的邮件服务器由于用户数量增加,邮件存储的硬盘空间需要扩展,针对这样的情况考虑使用动态扩容的方法解决这个问题,计划增加两块160G的SCSI硬盘,将其挂载到“/mail”目录下后使用LVM逻辑卷的方法进行管理。解决此问题的操作方法如下:
使用fdisk命令规划两个分区,类型设置为“8e”;使用pvcreate命令转换上述分区为物理卷,操作如下:
[root@localhost ~]# fdisk -l /dev/sdb /dev/sdc| grep ″LVM″
/dev/sdb1 1 9660 77593918+ 8e Linux LVM
/dev/sdc1 1 9660 77593918+ 8e Linux LVM
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume ″/dev/sdb1″ successfully created
[root@localhost ~]# pvcreate /dev/sdc1
Physical volume ″/dev/sdc1″ successfully created
使用vgcreate命令创建卷组mail_store,操作如下:
[root@localhost ~]# vgcreate ppp_vg /dev/sdb1 /dev/sdc1
Volume group ″ppp_vg″ successfully created
使用lvcreate命令创建逻辑卷 mail,然后使用mkfs命令创建ext3文件系统,操作如下:
[root@localhost ~]# lvcreate -L 160G -n ppp_lv ppp_vg
/dev/cdrom: open failed: Read-only file system
Logical volume ″mail″ created
[root@localhost ~]# mkfs -t ext3 /dev/ppp_vg/ppp_lv
使用lvextend命令为逻辑卷 mail扩充容量,然后使用resize2fs命令更新系统识别的文件系统大小,操作如下:
[root@localhost ~]# lvextend -L +10G /dev/mail_store/mail
[root@localhost ~]# resize2fs /dev/mail_store/mail
从以上操作可以看出,LVM在磁盘空间管理上是简单易行的,作为linux系统使用者应深入进行研究,本文只从应用层面上进行了描述,并通过实例说明LVM的操作方法,实际上LVM还可以提供更高层次的磁盘存储解决方案,使系统管理员可以更方便灵活地分配存储空间。
参考文献:
[1]张进奎,等.在Linux下如何不停机进行磁盘空间的管理[J].中国科技信息,2005,(1).
[2]陈小晖.梦工厂创造性地使用Linux LVM[J].开放系统世界,2003,(11).
[3]李翔.Linux下逻辑盘卷管理详解[J].开放系统世界, 2003,(8).