全称 Logical Volume Manager,逻辑卷管理,简单的说就是能将物理磁盘统一管理,在现在这个满大街都在谈论分布式存储的年代,已经很少有人关注和使用它了,毕竟如果买个公有云上的虚拟机,挂载磁盘都已经得到 TP999+ 的稳定性加持,扩容什么的也只是一句话的事,完全没必要使用 LVM 了。
那么我今天为啥要写 LVM 呢,首先肯定是最近要使用它(清理它),其次,现在 RedHat 系列发行版仍将 LVM 作为系统安装的默认磁盘处理方式,对于我这种安装系统家常便饭的人,还是要了解下的。

本文不会包含 LVM 命令的使用。

概念 链接到标题

LVM 中有 3 个最重要的概念,分别是 PV,VG,LV,下面我分别来说一下:

PV 链接到标题

Physical Volumes,物理卷,属于 LVM 中最底层的单元,通常介质为磁盘,或者磁盘上的某个分区,多个 PV 可以组成 VG(卷组)。

VG 链接到标题

Volume Group,卷组,也是我们通常说的“池化”具体表现形式,VG 可以存在多个,我们可以根据具体的用途来划分 VG,来提供相应的性能保证,比如我们可以对 IO 密集型应用使用全 SSD 组成的 VG。

LV 链接到标题

Logical Volume,逻辑卷,也就是 LVM 中的 LV,LVM 暴露出来供我们使用的逻辑(虚拟)卷。我们可以将其当做一个普通的磁盘使用,可以在其上进行分区,格式化,磁盘读写等操作。

优缺点 链接到标题

简单的介绍了 LVM 的概念,那么我们来说下 LVM 的优缺点:

优点: 链接到标题

  • 随意扩(缩)容
  • 在线迁移 LV(平时用处不多,主要在 P2V 场景下使用,也就是通常文章中提到的“企业上云”必要的操作)
  • 快照,RAID 等高级功能

缺点 链接到标题

管理复杂,通常服务器上磁盘数量多,且磁盘类型未必能够统一(考虑大量公司中的利旧场景),那么我们管理起来就比较麻烦了,要针对所有磁盘创建 PV,然后加入到对应的 VG 中,最后再对外提供 LV,往往我们需要维护相应的功能来提供简单的借口供上层应用使用。

LVM RAID vs mdadm 链接到标题

在上述的优点中,我们提到了 RAID 功能。相信大部分同学都了解 RAID 的概念,通常我们提到的 RAID 都是由相应硬件(存储控制器)来提供,如果没有硬件怎么办呢?我们可以通过 mdadm 来实现软 RAID, 可以达到相应的效果,只是根据 OS 版本不同,软 RAID 的稳定性堪忧(Ubuntu 18.04 存在 Bug)。

那么同样都提供了软 RAID 功能,LVM 与 mdadm 相比,有什么不同呢?

首先,LVM 实现了完整的 RAID 功能,且 RedHat 也提供了完整的文档来描述各个功能的使用,是可以确定获得了官方支持的,那么社区里是怎么评论的呢?

从使用上来说,LVM 作为一款逻辑卷管理软件,虽然支持完成的软 RAID 功能,但是社区支持并不好,大家还是习惯于(信任)mdadm,毕竟 Do One Thing and Do It Well 准没错。mdadm 虽然我在使用上觉得很糟糕,但是在线上环境的表现,还是很完美的,目前 RAID1 还没出过问题,稳。

而且从性能上说,有人对 LVM 和 mdadm 进行过性能对比,总体来说 mdadm 综合表现还是要比 LVM 好一些的。

(最近在对 nvme 磁盘进行分区 raid1 时经常遇到失败的情况,现象是mdadm 进程自己退出,再次执行又 ok,还没仔细调研。)

总结 链接到标题

虽然现在分布式存储大火,各家云产品都在使用,但是单机磁盘管理上,LVM 还是很好用的,RedHat 也一直在单机磁盘管理上有所投入,比如在 RedHat7.5 上推出的 VDO 功能,还是要持续关注了解的。

参考链接 链接到标题