如果有人了解 LVM 的工作原理,可以粗略地估计一下使用 LVM(使用软件 RAID1)的速度会慢多少,我将不胜感激。
(如果 LVM 卷当前处于快照模式并执行写入时复制,我并不想知道 LVM 会变慢多少)。我只需要粗略估计一下在正常操作情况下 LVM 会减慢多少读写速度。
任何链接都非常感谢,我无法找到有关此问题的任何良好的性能基准。
答案1
LVM 对于普通卷(例如,没有快照)而言相当轻量。它实际上只是在一个相当小的表中查找块 X 实际上是设备 Z 上的块 Y。我从未做过任何基准测试,但我从未注意到 LVM 和仅使用原始设备之间的任何性能差异。这只是磁盘 I/O 上的一些额外 CPU 开销,所以我真的不指望会有太大的差异。
我的直觉反应是,没有基准的原因是 LVM 中的开销并不多。
在我看来,LVM 的便利性以及能够切片、切块和添加更多驱动器的功能远远超过了可能存在的微小(如果有的话)性能差异。
答案2
我正在安装一台 48T Dell MD-1200,我对这个问题很好奇。MD1200 连接到设置为 RAID-6 的硬件 RAID 卡,因此在 Linux 看来它就像一个(大)驱动器。我在 LVM 物理卷上测试了 XFS 文件系统,并在直磁盘分区上测试了 XFS 文件系统。我使用了一台装有两台 E5-2699 CPU 的 Dell R630 机器。系统设置为性能;我在 BIOS 中找到的所有节能功能都已关闭。
我在上面安装了 CentOS 6.7。内核是 2.6.32-573.el6.x86_64(抱歉,内核太旧了,但这正是我生产所需要的)。LVM 是版本 2.02.118。
我在构建过程中让 CentOS 创建一个 XFS 分区,大小为 1T,然后在磁盘上再创建 1T 分区,并创建逻辑卷:
vgcreate vol_grp1 /dev/sdb1
lvcreate -l 100%FREE -n lv_vol1 vol_grp1
mkfs.xfs /dev/vol_grp1/lv_vol1
我的 XFS 专用文件系统名为/data_xfs
。LVM 支持的 XFS 文件系统名为/data_lvm
。我使用 bonnie++ v 1.03e 进行了测试。
命令如下:bonnie++ -u 0:0 -d /FILESYSTEM -s 400G -n 0 -m xfsspeedtest -f -b
其中 FILESYSTEM 是 /data_xfs 或 /data_lvm 。结果总结如下:
Test XFS on Partition XFS on LVM
Sequential Output, Block 1467995 K/S, 94% CPU 1459880 K/s, 95% CPU
Sequential Output, Rewrite 457527 K/S, 33% CPU 443076 K/S, 33% CPU
Sequential Input, Block 899382 K/s, 35% CPU 922884 K/S, 32% CPU
Random Seeks 415.0 /sec. 411.9 /sec.
在我看来,结果似乎相当。在顺序输入测试中,LVM 实际上似乎表现得更好一些。
答案3
2015 年,Borislav Djordjevic 和 Valentina Timcenko 发表了一篇简短的论文,论文中使用了一些 7200RPM 80GB Western Digital 硬盘,使用 EXT3,并使用 PostMark 软件进行测试,该软件“模拟加载互联网邮件服务器”,使用 Linux 内核 2.6.27。他们发现,过去仅关注bonnie
或dd
单独测试的研究结果各不相同。
测试似乎表明,与不使用 LVM 相比,使用 LVM 时性能下降幅度可达 15% 到 45%。他们发现,在一个 LVM 设置中使用两个物理分区时,性能下降幅度更大。他们得出结论,最大的性能影响是使用 LVM,以及使用 LVM 的复杂性。
https://www.researchgate.net/publication/284897601_LVM_in_the_Linux_environment_Performance_examination http://hrcak.srce.hr/index.php?show=clanak&id_clanak_jezik=216661
答案4
这是一个老问题,但值得一个当前的答案。
简短回答:传统/线性 LVM 命令的开销极小(几乎为零),并且可以毫无性能顾虑地使用,除非使用快照(因为它们会破坏写入速度)。默认情况下,精简卷的速度稍慢一些,但快照速度要快得多,为传统文件系统提供了现代 CoW(和精简配置)。其他 LVM 段类型根据它们进行的数据转换有不同的开销。
长答案:核心技术仍然存在设备映射器- 一个用于在不同设备上映射(可能已转换的)块的框架。不同的设备映射器目标提供不同的功能具有各种性能开销。LVM 本身建立在设备映射器之上:可以将 LVM 视为设备映射器和其他相关工具的 CLI/包装器。
最常见的目标是:
linear
:基本 LVM 目标。它很简单,但非常有用,可以将单个卷扩展到不同的块设备,而无需使用/涉及 RAID(旧的mirror
LVM 段类型已被弃用并删除)。它的开销很小,RHEL 默认将其用于根文件系统。通过此目标拍摄的快照(即:经典的“胖”快照)写入速度非常慢,如果多个并发快照“活跃”,则速度会变得更糟,因此它们应该仅用于备份数据并在完成后立即销毁;thin
:它是一个现代的 CoW 目标,支持快速滚动快照和卷克隆。缺点是与胖/线性卷相比,基本性能有所降低(即:当不存在快照时)。快照写入性能影响是恒定的,通常限制为最大值的 ~50%(通常要小得多)。我使用精简卷来存储生产数据,将/
(根)留在经典胖卷上;vdo
:它是提供数据压缩和重复数据删除的新目标。写入性能受到很大影响,可以通过使用支持 BBU 的 HW RAID 卡来限制;cache
: 一场表演增强目标是同时启用较慢设备的读写缓存(即:基于 HDD 的主存储池的 SSD 缓存);raid
:另一个性能/可靠性增强目标,通过 Linux 进行桥接mdraid
integrity
:它提供了 SAS T-10 标准的纯软件实现,用于检测数据损坏。journal
模式最安全,但写入开销较高。
如您所见,没有单一的“LVM 开销”。相反,根据目标和预期使用情况,开销范围从零到 >90%。因此,在设置 LVM 之前,请务必准确模拟您的工作负载。