LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。通过使用 LVM,所有物理磁盘和分区,无论它们的大小和分布方式如何,都被抽象为单一存储(single storage)源。例如,在图 1 所示的物理到逻辑映射布局中,最大的磁盘是 80GB 的,那么用户如何创建更大(比如 150GB)的文件系统呢?

图 1. 物理到逻辑的映射

LVM 可以将分区和磁盘聚合成一个虚拟磁盘(virtual disk),从而用小的存储空间组成一个统一的大空间。这个虚拟磁盘在 LVM 术语中称为卷组(volume group)。

建立比最大的磁盘还大的文件系统并不是这种高级存储管理方法的惟一用途。还可以使用 LVM 完成以下任务:

  • 在磁盘池中添加磁盘和分区,对现有的文件系统进行在线扩展
  • 用一个 160GB 磁盘替换两个 80GB 磁盘,而不需要让系统离线,也不需要在磁盘之间手工转移数据
  • 当存储空间超过所需的空间容量时,从池中去除磁盘,从而缩小文件系统
  • 使用快照(snapshot)执行一致的备份

LVM 的结构

LVM 被组织为三种元素:

  • 卷(Volume):物理卷和逻辑卷和卷组
  • 区段(Extent):物理区段和逻辑区段
  • 设备映射器(Device mapper):Linux 内核模块

Linux LVM 组织为物理卷(PV)、卷组(VG)和逻辑卷(LV)。物理卷 是物理磁盘或物理磁盘分区(比如 /dev/hda 或 /dev/hdb1)。卷组是物理卷的集合。卷组可以在逻辑上划分成多个逻辑卷。
图 2 显示一个三个磁盘构成的布局。

图 2. 物理到逻辑卷的映射

物理磁盘 0 上的所有四个分区(/dev/hda[1-4])以及完整的物理磁盘 1(/dev/hdb)和物理磁盘 2(/dev/hdd)作为物理卷添加到卷组 VG0 中。
卷组是实现 n-to-m 映射的关键(也就是,将 n 个 PV 看作 m 个 LV)。在将 PV 分配给卷组之后, 就可以创建任意大小的逻辑卷(只要不超过 VG 的大小)。在图 2 的示例中,创建了一个称为 LV0 的逻辑卷,并给其他 LV 留下了一些空间(这些空间也可以用来应付 LV0 以后的增长)。

LVM 中的逻辑卷就相当于物理磁盘分区;在实际使用中,它们就是物理磁盘分区。

在创建 LV 之后,可以使用任何文件系统对它进行格式化并将它挂载在某个挂载点上,然后就可以开始使用它了。图 3 显示一个经过格式化的逻辑卷 LV0 被挂载在 /var。

图 3. 物理卷到文件系统的映射

区段

为了实现 n-to-m 物理到逻辑卷映射,PV 和 VG 的基本块必须具有相同的大小;这些基本块称为物理区段(PE)和逻辑区段(LE)。尽管 n 个物理卷映射到 m 个逻辑卷,但是 PE 和 LE 总是一对一映射的。

图 4. 物理到逻辑区段的映射

如果决定创建第二个 LV(LV1),那么最终的 PE 布局可能像图 5 这样。

图 5. 物理到逻辑区段的映射

设备映射器

设备映射器(也称为 dm_mod)是一个 Linux 内核模块,最早出现在 2.6.9 内核中。它的作用是对设备进行映射。

用快照执行备份

如果在备份过程期间数据没有发生变化,那么就能够获得一致的备份。如果不在备份期间停止系统,就很难保证数据没有变化。

Linux LVM 实现了一种称为快照(Snapshot)的特性,它的作用就像是 “拍摄” 逻辑卷在某一时刻的照片。通过使用快照, 可以获得同一 LV 的两个拷贝 —— 一个可以用于备份,另一个继续用于日常操作。

快照有两大优点:

  1. 快照的创建非常快,不需要停止生产环境
  2. 建立两个拷贝,但是它们的大小并不一样。快照使用的空间仅仅是存储两个 LV 之间的差异所需的空间

参考资料:

  1. 逻辑卷管理
  2. LVM、物理卷、逻辑卷、卷组、快照
  3. lvm介绍,及基本管理命令