最近在安装 Gentoo 的过程中遇到一个新名词 ── LVM。由于在 Gentoo 官方提供的安装手册中没有对它进行介绍,因此在安装过程中的许多命令都不是很了解,于是觉得有必要写个总结来巩固和加强印象,也希望本文能够帮助你在理解了 LVM,在创建、维护和管理 LVM 时能够得心应手。
概述
LVM,逻辑卷管理器 (Logical Volume Manager),顾名思义,它就是用于管理逻辑卷的,LVM 在 Linux 内核得到支持。
在传统的存储模型中,文件系统是直接构建于物理分区之上的,物理分区的大小就决定了其上文件系统的存储容量,因此对文件系统的存储容量的调整就变得比较繁琐。
而 LVM 设计的主要目标就是实现文件系统存储容量的可扩展性,使对容量的调整更为简易。
名词解释
在介绍 LVM 的工作原理之前需要先介绍几个名词:
- PP,物理分区(Physical Partition),如硬盘的分区,或 RAID 分区。
- PV,物理卷(Physical Volume),是 PP 的 LVM 抽象,它维护了 PP 的结构信息,是组成 VG 的基本逻辑单元,一般一个 PV 对应一个 PP。
- PE,物理扩展单元(Physical Extends),每个 PV 都会以 PE 为基本单元划分。
- VG,卷组(Volume Group),即 LVM 卷组,它可由一个或数个 PV 组成,相当于 LVM 的存储池。
- LE,逻辑扩展单元(Logical Extends),组成 LV 的基本单元,一个 LE 对应一个 PE。
- LV,逻辑卷(Logical Volume),它建立在 VG 之上,文件系统之下,由若干个 LE 组成。
工作原理
LVM 的架构图如下:
LVM 在每个物理卷头部都维护了一个 metadata,每个 metadata 中都包含了整个 VG 的信息,包括每个 VG 的布局配置、PV 的编号、LV 的编号,以及每个 PE 到 LE 的映射关系。同一个 VG 中的每个 PV 头部的信息是相同的,这样有利于故障时进行数据恢复。
LVM 对上层文件系统提供 LV 层,隐藏了操作细节。对文件系统而言,对 LV 的操作与原先对 Partition 的操作没有差别。当对 LV 进行写入操作时,LVM 定位相应的 LE,通过 PV 头部的映射表,将数据写入到相应的 PE 上。
LVM 实现的关键在于在 PE 和 LE 间建立映射关系,不同的映射规则决定了不同的 LVM 存储模型。LVM 支持多个 PV 的 Stripe 和 Mirror,这点和软 Raid 的实现十分相似。
是否使用 LVM?
在决定是否使用 LVM 前请先了解下 LVM 的优缺点。
使用 LVM 的优势:
- 文件系统可以跨多个磁盘,因此大小不会受物理磁盘的限制。
- 可以在系统运行状态下动态地扩展文件系统大小。
- 可以增加新磁盘到 LVM 的存储池中。
- 可以以镜像的方式冗余重要数据到多个物理磁盘上。
- 可以很方便地导出整个卷组,并导入到另外一台机器上。
使用 LVM 的限制:
- 在从卷组中移除一个磁盘时必须使用 reducevg,否则会出问题。
- 当卷组中的一个磁盘损坏时,整个卷组都会受影响。
- 不能减小文件系统大小(受文件系统类型限制)。
- 因为加入了额外的操作,存储性能会受影响(使用 Stripe 的情况另当别论)。
使用 LVM 将获得更好的可扩展性和可操作性,但却损失了可靠性和存储性能,总的说来就是在这两者间选择。
使用要点
- 按需分配文件系统大小,不要一次性分配太大的空间给文件系统,剩余的空间可以放在存储池中,在需要时再扩充到文件系统中。
- 把不同的数据放在不同的卷组中,这样在做系统升级或数据迁移操作时会比较方便。
操作示例
如果在安装 Gentoo 时使用 LVM,那么在 livecd 光盘中已经带有 LVM 的操作命令。如果想要在安装完的系统中使用,则需要先安装相应的管理工具,通过以下命令进行安装: emerge lvm2。
使用 LVM 的基本步骤:
- 在物理分区(PP)上创建物理卷(PV)
如: pvcreate /dev/sda1
- 在创建卷组(VG)
如: vgcreate vg /dev/sda1
- 从 VG 中分配空间,创建逻辑卷(LV)
如: lvcreate -L10G -nhome vg
- 在 LV 上建立文件系统
如: mke2fs -j /dev/vg/home
在 Gentoo 的安装文档《含软Raid和LVM2的Gentoo Linux x86快速安装指南》中有非常具体的 LVM 使用案例,这里不在累举。
更多关于 LVM 相关操作命令的使用方法,请参阅 man 手册。
延伸阅读:
- Wikipedia: Logical Volume Manager (Linux)
- Linux lvm – Logical Volume Manager
- Managing Disk Space with LVM
- IBM developerWorks: Wikis – LVM
>> 本文固定链接: http://www.vcgood.com/archives/3437