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 -<减量> <逻辑卷> # 根据减量对逻辑卷容量进行缩小
|
参考资料:
[1] https://jingyan.baidu.com/article/fedf0737772d2835ac897790.html
[2] https://wiki.archlinux.org/index.php/LVM_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E5.88.9B.E5.BB.BA.E7.89.A9.E7.90.86.E5.8D.B7.EF.BC.88PV.EF.BC.89
[3] http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html
[4] http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/22/3093405.html