Linux逻辑卷管理

来源:互联网 发布:如何禁止用户安装软件 编辑:程序博客网 时间:2024/04/29 10:58

因为之前安装系统的时候没考虑使用逻辑卷管理(logical volume management,LVM),现在要用Xen安装多台虚拟机导致分区混乱,所以现在才想到使用逻辑卷管理的好处。

本文基本上是参照IBM中国社区的逻辑卷管理这篇文章。


逻辑卷管理(LVM)指系统将物理卷管理抽象到更高的层次,常常会形成更简单的管理模式。通过使用 LVM,所有物理磁盘和分区,无论它们的大小和分布方式如何,都被抽象为单一存储(single storage)源。例如,在图 1 所示的物理到逻辑映射布局中,最大的磁盘是 80GB 的,那么用户如何创建更大(比如 150GB)的文件系统呢?


                                                                             图 1. 物理到逻辑的映射

LVM 可以将分区和磁盘聚合成一个虚拟磁盘(virtual disk),从而用小的存储空间组成一个统一的大空间。这个虚拟磁盘在 LVM 术语中称为卷组(volume group)
建立比最大的磁盘还大的文件系统并不是这种高级存储管理方法的惟一用途。还可以使用 LVM 完成以下任务:

  • 在磁盘池中添加磁盘和分区,对现有的文件系统进行在线扩展
  • 用一个 160GB 磁盘替换两个 80GB 磁盘,而不需要让系统离线,也不需要在磁盘之间手工转移数据
  • 当存储空间超过所需的空间量时,从池中去除磁盘,从而缩小文件系统
  • 使用快照(snapshot)执行一致的备份
LVM2 是一个新的用户空间工具集,它为 Linux 提供逻辑卷管理功能。它完全向后兼容原来的 LVM 工具集。

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 总是一对一映射的。

在使用 LVM2 时,对于每个 PV/LV 的最大区段数量并没有限制。默认的区段大小是 4MB,对于大多数配置不需要修改这个设置,因为区段的大小并不影响 I/O 性能。但是,区段数量太多会降低 LVM 工具的效率,所以可以使用比较大的区段,从而降低区段数量。但是注意,在一个 VG 中不能混用不同的区段大小,而且用 LVM 修改区段大小是一种不安全的操作,会破坏数据。所以建议在初始设置时选择一个区段大小,以后不再修改。

不同的区段大小意味着不同的 VG 粒度。例如,如果选择的区段大小是 4GB,那么只能以 4GB 的整数倍缩小或扩展 LV。

图 4 用 PE 和 LE 显示与前一个示例相同的布局(VG0 中的空闲空间也由空闲 LE 组成,尽管图中没有显示它们)。

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

另外,请注意图 4 中的区段分配策略。LVM2 并非总是连续分配 PE;细节参见关于 lvm 的 Linux 手册页(见 参考资料 中的链接)。系统管理员可以设置不同的分配策略,但是一般不需要这么做,因为默认策略(名为一般分配策略(normal allocation policy))使用符合常规的规则,比如不把并行的条带放在同一物理卷上。

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

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

设备映射器
设备映射器(也称为 dm_mod)是一个 Linux 内核模块(也可以是内置的),最早出现在 2.6.9 内核中。它的作用是对设备进行映射 —— LVM2 必须使用这个模块。

在大多数主流发行版中,设备映射器会被默认安装,常常会在引导时或者在安装或启用 LVM2/EVMS 包时自动装载。如果没有启用这个模块,那么对 dm_mod 执行 modprobe 命令,在发行版的文档中查找在引导时启用它的方法:modprobe dm_mod。

在创建 VG 和 LV 时, 可以给它们起一个有意义的名称(而不是像前面的示例那样使用 VG0、LV0 和 LV1 等名称)。设备映射器的作用就是将这些名称正确地映射到物理设备。

与物理磁盘相反,无法直接访问卷组(这意味着没有 /dev/mapper/VG0 这样的文件,也不能执行 dd if=/dev/VG0 of=dev/VG1)。常常使用 lvm(8) 命令访问卷组。


参考自:https://www.ibm.com/developerworks/cn/linux/l-lvm2/