LVM Linux

2024 年 8 月 29 日 | 4 分钟阅读

LVM 简介

LVM 是 Logical Volume Manager 的缩写。它是 Linux 中的一种设备映射器框架,为 Linux 内核提供逻辑卷管理。几乎所有最新的 Linux 发行版都支持 LVM,甚至可以将根文件系统放在逻辑卷中。

1988 年,Heinz Mauelshagen 在 Sistina Software 工作时设计了 LVM 的实际代码,其设计主要参考了 HP-UX 的卷管理器。

LVM 的用途

LVM 用于以下目的:

  • 创建两个或多个物理卷或整个硬盘的独立逻辑卷,允许动态卷的调整大小。
  • 通过允许在不中断服务或停机的情况下添加和替换磁盘(结合热插拔),来管理大量硬盘。
  • 与在小型系统上安装时就需要预估分区大小不同,LVM 允许根据需要轻松调整文件系统的大小。
  • 通过逻辑卷快照实现一致的备份。
  • 使用单个密码加密两个或多个物理分区。
    LVM 可以被视为位于分区和硬盘之上的软件薄层,它提供了一个易于使用的抽象层,方便管理硬盘备份、重新分区和更换。

LVM 的特性

基本功能

  • 通过添加或移除 PV(物理卷),卷组(VG)可以进行在线扩容或缩容。
  • 逻辑卷可以在物理卷之间迁移。
  • 逻辑卷可以通过添加或移除 extents 来进行在线扩容或缩容。
  • 创建 LVs(LVM1)的只读快照,利用写时复制(Copy on Write,CoW)功能,或者创建读/写快照(LVM2)。
  • 卷组可以原地分割和合并,前提是逻辑卷不跨越分割点。这在将整个逻辑卷迁移到离线存储或从离线存储迁移回来时非常有用。
  • 卷组和逻辑卷可以动态创建,因为基本设备通过 lvmetad 守护进程存在。
  • LVM 对象可以命名,方便管理。

高级功能

  • 可以使用 dm-cache 目标创建混合卷。它允许一个或多个快速存储设备(如闪存 SSD)作为多个较慢硬盘的缓存。
  • LVM 利用设备映射器的其余部分,避免单路径问题。当在较新版本的设备映射器中将 `devices/multipath_component_detection=1` 设置为 `conf` 时,会返回一个 dm-multipath 设备。这可以防止 LVM 在多路径设备上运行卷,而不是在单路径上运行。
  • 可以从池中提供精简配置的逻辑卷。

RAID

  • 可以创建包含 RAID 功能(如 RAID 1、5 和 6)的逻辑卷。
  • 整个逻辑卷或其组件可以像 RAID 0 一样,分布在多个物理卷上。
  • 可以使用 `lvchange --raidminrecoveryrate` 和 `lvchange --raidmaxrecoveryrate` 来限制恢复速率,以管理数据 I/O 性能,同时重新创建包含 RAID 功能的逻辑卷。
  • RAID 1 的后端设备可以配置为“仅写入”,直到必要时才会读取这些设备。

CLVM

分布式锁管理器用于仲裁并发 LVM 的元数据访问。当任何集群节点需要更改 LVM 元数据时,它必须通过本地 clvmd 获取锁定权限。在集群中,它会与多个 clvmd 守护进程保持持续联系,并可以传达获取特定对象集锁的意愿。

高可用性

此外,LVM 可以在共享存储集群中运行,其中保存物理卷的磁盘由多个主机系统共享,但这可能需要一个额外的守护进程通过锁定来协调元数据访问。

HA-LVM

集群感知功能留给应用程序来实现高可用性。对于 LVM 的一部分,HA-LVM 可以使用 CLVM 作为锁定机制,或者也可以继续使用默认的文件锁定机制,并通过限制对带有正确标签的 LVM 对象的访问来减少“冲突”。由于这种更简单的解决方案会忽略争用而不是缓解它,因此不允许并发访问,所以 HA-LVM 仅适用于主备(active-passive)配置。

Lvmlockd

截至 2017 年,LVM 的一个稳定组件被设计用来取代 clvmd,它使 LVM 对象锁定对整个 LVM 透明,而无需依赖分布式锁管理器。2016 年,它经历了大量的开发。

上述机制仅解决了 LVM 的存储访问问题。选择位于逻辑卷之上的文件系统必须自行支持集群,或者只能由单个集群节点挂载。


下一主题MX Linux