LVM 使用总结

全称 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 功能,还是要持续关注了解的。

参考链接