Linux LVM磁盘管理
概述LVM(Logical Volume Manager,逻辑卷管理器)是一种可用在 Linux 内核的逻辑分卷管理器,可用于管理磁盘驱动器或其他类似的大容量存储设备
在传统 Linux 环境下,磁盘分区是直接与文件目录(filesystem)直接相互挂载的。倘若用户需要对文件目录的容量进行伸缩的话,通常做法有两种:一是新增磁盘分区,二是对原有的磁盘分区进行划分。无论是上述哪一种做法,都会对原有的磁盘分区产生影响,亦或某些文件损坏,亦或磁盘损坏。
为了更加方便用户对磁盘分区进行操作,LVM 为计算机提供了更高层次的磁盘存储方式。原理如下所示:LVM 将一个或多个磁盘的分区在逻辑上集合,相当于一个整体的、容量大的磁盘,以便用来使用。当磁盘分区空间不足时,可以继续将其他的磁盘的分区加入其中。
与传统的磁盘管理相比,LVM 更富有弹性:
使用卷组(VG),使众多硬盘空间看起来像一个大硬盘
使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区
可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小
在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。LVM上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作
无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上
允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小
相关于 LVM 的几个重要名词:Physical Volume,PV, 物理卷
可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的 header,其余部分被切割为一块块物理区域(physical extends)
Volume Group,VG,卷组
将一组物理卷收集为一个管理单元。卷组可以视为一个由若干个物理卷组合而成的“磁盘”。卷组同时也能够包含若干个逻辑卷(logical volume)
Logical Volume,LV,逻辑卷
一种特殊的虚拟分区,从属于卷组,可以由若干块物理区域构成。
Physical Extent,PE,物理区域
硬盘可供指派给逻辑卷的最小单位(通常为4MB)
基本操作
Physical Volume,物理卷相关操作1
2
3
4
5
6
7
8
9
10# 维护命令
# pvscan # 在系统中的所有磁盘中搜索已存在的物理卷
# pvdisplay [] # 显示 全部/指定 物理卷的属性信息
# pvs # pvdisplay 简约版,仅能得到物理卷的概要信息
# pvchange [-x {y|n}] [-u] # 用于指定物理卷的 PE 是否允许分配或重新生成物理卷的 UUID
# pvmove [] # 将同一 VG 下的 PV 内容进行迁移,若不指定目的物理卷则由 LVM 决定
# 创建与删除命令
# pvcreate # 用于在磁盘或磁盘分区上创建物理卷初始化信息,以便对该物理卷进行操作
# pvremove [-d][-f][-y] # 删除物理卷
Volume Group,卷组相关操作1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# 维护命令
# vgscan # 在系统中搜索所有已存在的 vg
# vgck # 用于检查卷组中卷组描述区域信息的一致性
# vgdisplay [] # 显示 全部/指定 卷组的属性信息
# vgrename # 卷组重命名
# vgchange [-a {y|n}] [-x {y|n}] # 用于指定卷组是否允许分配或者卷组容量是否可伸缩
# 创建与删除命令
# vgcreate # 用于创建 LVM 卷组
# vgremove # 用于删除 LVM 卷组
# 扩充与缩小命令
# vgextend # 向卷组中添加物理卷来增加卷组的容量
# vgreduce # 向卷组中删除物理卷来减小卷组的容量
# 合并与拆分命令
# vgmerge # 将源卷组合并至目的卷组,要求两个卷组的物理区域大小相等且源卷组是非活动的(inactive)
# vgsplit # 将源卷组的源物理卷拆分到目的卷组
# vgexport # 用于输出卷组,将非活动的(inactive)的卷组导出,可用于其他系统中使用
# vgimport # 用于输入卷组
# 备份与恢复命令
# vgcfgbackup # 备份卷组的元信息至 /etc/lvml/backup 目录中
# vgcfgrestore # 从备份文件中恢复指定卷组
Logical Volume,逻辑卷相关操作1
2
3
4
5
6
7
8
9
10
11
12
13# 维护命令
# lvscan # 在系统中搜索所有已存在的 lv
# lvdisplay [] # 显示 全部/指定 逻辑卷的属性信息
# lvrename { | }
# lvchange # 更改逻辑卷的属性
# 创建与删除命令
# lvcreate # 用于创建卷组中的逻辑卷
# lvremove # 用于删除卷组中的逻辑卷
# 扩充与缩小命令
# lvextend -L + # 根据增量对逻辑卷容量进行扩充
# lvreduce -L - # 根据减量对逻辑卷容量进行缩小
参考资料: