适用于 SUSE Enterprise Storage 6

15 使用 LVM 缓存提升性能

警告
警告:技术预览

LVM 缓存当前为技术预览功能。

LVM 缓存是一种用于提升逻辑卷 (LV) 性能的缓存机制。通常会使用较小较快的设备来提升较大较慢的 LV 的 I/O 性能。请参见其手册页 (man 7 lvmcache) 了解有关 LVM 缓存的更多详细信息。

在 SUSE Enterprise Storage 中,LVM 缓存可提升 OSD 的性能。通过 ceph-volume 插件来提供 LVM 缓存支持。您可以运行 ceph-volume lvmcache 来了解有关其用法的详细信息。

15.1 先决条件

要使用 LVM 缓存特性提升 Ceph 集群的性能,您需要有以下资源:

  • 处于稳定状态(“HEALTH_OK”)的运行中 Ceph 集群。

  • 已部署 BlueStore 和 LVM 的 OSD。如果使用 SUSE Enterprise Storage 6 或更高版本部署 OSD,则默认会为 OSD 部署这两项。

  • 用于缓存的空磁盘或分区。

15.2 需考虑的要点

在将 OSD 配置为使用 LVM 缓存之前,请注意以下事项:

  • 确认 LVM 缓存适合您的使用情形。如果您只有几个用于 OSD 的快速驱动器,一般建议将它们用作 OSD 的 WAL/DB 设备。在此情况下,系统会在快速驱动器上应用 WAL 和 DB 操作(较小且少见的操作),而在慢速 OSD 驱动器上应用数据操作。

    提示
    提示

    如果对您的部署而言,降低延迟比提升 IOPS 或吞吐量更重要,则您可将快速驱动器用作 LVM 缓存而非 WAL/DB 分区。

  • 如果您计划将快速驱动器用作多个 OSD 的 LVM 缓存,请注意,所有 OSD 操作(包括复制)都将经过缓存设备。所有读取的查询操作都将从缓存设备进行,仅当在缓存中未查找到目标时才会从慢速设备查询。写入始终先应用于缓存设备,稍后才会刷新到慢速设备(默认的缓存模式为“writeback”)。

    在决定是否要使用 LVM 缓存时,请确认快速驱动器在充当多个 OSD 的前端的同时,是否仍能提供可接受的 IOPS 量。您可以通过下面的方法来测试:先测量快速设备可提供的最大 IOPS 量,然后将所得结果除以快速设备后面的 OSD 数量。如果结果低于或接近 OSD 在不使用缓存的情况下可提供的最大 IOPS 量,则 LVM 缓存很可能不适用于此设置。

  • LVM 缓存设备与 OSD 的交互十分重要。系统会定期将写入从缓存设备刷新到慢速设备。如果传入流量持续进入且数量很大,缓存设备会努力跟上传入请求及刷新进程的速度,因而会导致性能下降。除非快速设备能够比慢速设备提供高得多的 IOPS 且延迟更低,否则请勿对持续的大容量工作负载使用 LVM 缓存。突发模式的流量更适合 LVM 缓存,因为这种模式会给缓存留出刷新脏数据的时间,且不会干扰客户端流量。对于持续的低流量工作负载,很难提前预估使用 LVM 缓存是否能提升性能。最佳测试方法是对照 WAL/DB 设置确定 LVM 缓存设置的基准并将两种设置进行比较。此外,由于 WAL 分区上的较小写入非常多,建议将快速设备用于 DB 和/或 WAL,而非 LVM 缓存。

  • 如果您不确定是否使用 LVM 缓存,请将快速设备用作 WAL 和/或 DB 设备。

15.3 准备

您需要将快速设备分割成多个分区。每个 OSD 需要有两个缓存分区,一个用于缓存数据,另一个用于缓存元数据。每个分区的最小大小为 2 GB。您可以使用单个快速设备来缓存多个 OSD。只需对其进行相应的分区即可。

15.4 配置 LVM 缓存

要了解有关添加、删除和配置 LVM 缓存的详细信息,请运行 ceph-volume lvmcache 命令。

15.4.1 添加 LVM 缓存

要向现有 OSD 添加 LVM 缓存,请使用以下命令:

cephadm@osd > ceph-volume lvmcache add
 --cachemetadata METADATA-PARTITION
 --cachedata DATA-PARTITION
 --osd-id OSD-ID

可选的 --data--db--wal 用于指定要缓存的分区。默认为 --data

提示
提示:指定逻辑卷 (LV)

或者,您可以使用 --origin 而非 --osd-id 选项来指定要缓存的 LV:

[...]
--origin VOLUME-GROUP/LOGICAL-VOLUME

15.4.2 删除 LVM 缓存

要从 OSD 中删除现有 LVM 缓存,请使用以下命令:

cephadm@osd > ceph-volume lvmcache rm --osd-id OSD-ID

15.4.3 设置 LVM 缓存模式

要指定缓存模式,请使用以下命令:

cephadm@osd > ceph-volume lvmcache mode --set CACHING-MODE --osd-id OSD-ID

CACHING-MODE 为“writeback”(默认值)或“writethrough”

15.5 处理故障

如果缓存设备发生故障,则需要从集群中删除缓存设备后面的所有 OSD(请参见第 2.6 节 “删除 OSD”)、将它们清除,然后重新部署。如果 OSD 驱动器发生故障,虽然 OSD 的 LV 及其缓存的 LV 将会处于活跃状态,但却无法工作。使用 pvremove PARTITION 可清除用于 OSD 缓存数据和元数据分区的分区(物理卷)。您可以使用 pvs 列出所有物理卷。

15.6 常见问题 (FAQ)

问: 1. 如果删除 OSD,会发生什么情况?

使用 lvremove 删除 OSD 的 LV 时,会一并删除缓存 LV。不过,您仍需要在分区上调用 pvremove,以确保所有标签都已擦除。

问: 2. 如果使用 ceph-volume zap 清除 OSD,会发生什么情况?

此问题的答案与如果删除 OSD,会发生什么情况?问题的答案相同。

问: 3. 如果原始驱动器出现故障,会发生什么情况?

缓存 LV 仍存在,cache info 仍会将它们显示为可用状态。您将无法取消缓存,因为 LVM 会由于原始 LV 的设备已不存在而无法刷新缓存。现在的情况是原始 LV 存在,但其后备设备不存在。您可以通过使用 pvs 命令并找到与原始 LV 相关联的设备来修复此问题。然后,便可以使用以下命令将它们删除:

cephadm@osd > sudo pvremove /dev/DEVICE or PARTITION

您可对缓存分区执行相同操作。此过程将会使原始 LV 以及缓存 LV 消失。您也可以使用

cephadm@osd > sudo dd if=/dev/zero of=/dev/DEVICE or PARTITION

将它们擦除,然后再使用 pvremove

打印此页