使用LVM实现基于分区的弹性存储
吴佳骅
摘 要 本文介绍了弹性存储和LVM,提出了一种运用LVM实现基于分区的弹性存储的方案,并给出了实现过程。
关键词 弹性存储 LVM
中图分类号:TP316 文献标识码:A
1弹性存储
弹性存储,是指根据存放数据的多少或者使用者的要求来动态调整分配给其的存储空间,调整过程中无须停机和卸载硬盘。因为有着极佳的存储空间即时延展性,所以非常适合运用在需要存储变动较频繁的服务器上,如网盘服务、邮件服务、虚拟主机服务等等。
弹性存储,从其实现途径上来看,可以分为两种,基于目录的弹性存储和基于分区的弹性存储。
基于目录的弹性存储,是在对应的目录下动态的控制不同用户或者不同服务对于目录存储空间的使用上限,通常用设置磁盘配额的方式来实现。这种方式最大的短板是其受制于目录所在磁盘分区的空间上限,仅能在有限的空间内做存储空间的按需分配,对存储空间的预留有所要求,并且对到达上限之后的空间增长实现难度较大,也不便利。一般只是用于数据量不大的服务,如邮件服务之类。
基于分区的弹性存储,则是利用直接让分区实现即时延伸的手段来达到存储空间的动态分配,相较于基于目录的弹性存储,其上限是硬盘的空间上限,而这种上限又可以通过多个硬盘叠加的形式来获得理论上的无限扩充,空间增长相对容易。与对存储空间需求较大的网盘服务、虚拟主机服务等等有相当好的适合相性。
2 LVM介绍
LVM,英文全名为Logical Volume Manager,中文翻译名称是逻辑卷管理。目前主流的Linux发行版中都集成了LVM。LVM极佳的延展性使得其非常适合用于实现基于分区的弹性存储。
LVM被设计为3层结构,最底层是物理卷PV(Physical Volume),中间层是卷组VG(Volume Group),最上层是逻辑卷LV(Logical Volume)。LVM结构如图1所示。
图1:LVM结构图
物理卷PV,由基本硬盘分区构建而成,用于提供组成卷组VG的材料。
卷组VG,由一个或多个物理卷PV组成,卷组VG的存储空间大小即组成它的所有物理卷PV的空间大小之和。卷组VG可以添加新的物理卷PV来扩展其存储空间。
逻辑卷LV,在卷组VG上组建得到,是实际实现存储的分区,可以随意即时延展。
3实现方式
本文所使用的系统环境为CentOS6.5。
3.1使用LVM构建存储层
3.1.1在磁盘上构建物理卷PV
(1)对基础硬盘分区。
[root@localhost mnt]# fdisk /dev/sdb
Command (m for help): n
Command action p
Partition number(1-4): 1
(2)修改分區的文件系统ID为8e。
Command (m for help): t
Selected Partition 1
Hex code (type L to list codes): 8e
(3)将分区建立为物理卷PV。
[root@localhost mnt]# pvcreate /dev/sdb1
3.1.2将构建的物理卷PV组建成卷组VG
(1)查看目前存在的物理卷PV。
[root@localhost mnt]# pvdisplay
(2)选择需要使用的物理卷PV组建成卷组VG。
[root@localhost mnt]# vgcreate vg1 /dev/sdb1
(3)查看组建的卷组VG的信息。
[root@localhost mnt]# vgdisplay
3.2当出现新用户user1请求空间时建立一块逻辑卷LV分配给user1
(1)在卷组VG上建立逻辑卷LV。
[root@localhost mnt]# lvcreate –L 1G –n user1 vg1
(2)格式化新建立的逻辑卷LV。
[root@localhost mnt]# mkfs.ext4 /dev/vg1/user1
(3)把新建立的逻辑卷LV挂载到user1的存储目录。
[root@localhost mnt]# mount /dev/vg1/user1 /home/user1/storage
(4)设置user1的存储目录权限。
[root@localhost mnt]# chmod 700 /home/user1/storage
3.3当现有用户user1空间耗尽,请求新空间时,延展其逻辑卷LV
(1)扩展逻辑卷LV的空间。
[root@localhost mnt]# lvextend –L +1G /dev/vg1/user1
(2)格式化扩展的空间部分。
[root@localhost mnt]# resize2fs /dev/vg1/user1
3.4当现有卷组VG空间耗尽时,延展其空间
(1)加入新的硬盘建立新的物理卷PV。
[root@localhost mnt]# pvcreate /dev/sdc1
(2)将物理卷PV补充到卷组VG中,存储空间得到延伸。
[root@localhost mnt]# vgextend vg1 /dev/sdc1