5.2. 缓存逻辑卷


您可以使用 dm-cachedm-writecache 目标缓存逻辑卷。

dm-cache 使用更快的存储设备(SSD)作为较慢的存储设备(HDD)的缓存。它缓存读和写数据,优化频繁使用的数据的访问时间。它在混合工作负载环境中非常有用,其中增强读写操作可带来显著的性能改进。

dm-writecache 使用更快的存储介质(SSD)来在提交到主存储设备(HDD)之前临时保存写数据,来优化写操作。对于写密集型应用程序来说很有用,其中写性能可能会减缓数据传输过程。

5.2.1. 使用 dm-cache 缓存逻辑卷

当使用 dm-cache 缓存 LV 时,会创建一个缓存池。缓存池是一个组合了缓存数据的 LV,它存储实际缓存的内容,以及缓存元数据,跟踪缓存中存储的内容。然后,这个池与特定 LV 关联,来缓存其数据。

dm-cache 以两种块类型为目标:经常访问(热)的块被移到缓存中,而不太频繁访问(冷)的块保留在较慢的设备上。

先决条件

  • 管理访问权限.

流程

  1. 显示您要缓存的 LV 及其卷组:

    # lvs -o lv_name,vg_name
      LV                   VG
      LogicalVolumeName    VolumeGroupName
    Copy to Clipboard
  2. 创建缓存池:

    # lvcreate --type cache-pool --name CachePoolName --size Size VolumeGroupName /FastDevicePath
    Copy to Clipboard

    CachePoolName 替换为缓存池的名称。使用缓存池的大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 /FastDevicePath 替换为快速设备(如 SSD 或 NVME)的路径。

  3. 将缓存池附加到 LV:

    # lvconvert --type cache --cachepool VolumeGroupName/CachePoolName VolumeGroupName/LogicalVolumeName
    Copy to Clipboard

验证

  • 验证 LV 现在是否被缓存了:

    # lvs -o lv_name,pool_lv
    
      LV                   Pool
      LogicalVolumeName    [CachePoolName_cpool]
    Copy to Clipboard

5.2.2. 使用 dm-writecache 缓存逻辑卷

当使用 dm-writecache 缓存 LV 时,会创建逻辑卷和物理存储设备之间的缓存层。DM-writecache 通过将写入操作临时存储在更快的存储介质中(如 SSD)来进行操作,然后再将其写回主存储设备,从而优化写入密集型工作负载。

先决条件

  • 管理访问权限.

流程

  1. 显示您要缓存的逻辑卷及其卷组:

    # lvs -o lv_name,vg_name
      LV                   VG
      LogicalVolumeName    VolumeGroupName
    Copy to Clipboard
  2. 创建缓存卷:

    # lvcreate --name CacheVolumeName --size Size VolumeGroupName /FastDevicePath
    Copy to Clipboard

    CacheVolumeName 替换为缓存卷的名称。使用缓存池的大小替换 Size。将 VolumeGroupName 替换为卷组的名称。将 /FastDevicePath 替换为快速设备(如 SSD 或 NVME)的路径。

  3. 取消激活缓存卷:

    # lvchange -an VolumeGroupName/CacheVolumeName
    Copy to Clipboard

    VolumeGroupName 替换为卷组的名称。将 CacheVolumeName 替换为缓存卷的名称。

  4. 将缓存卷附加到 LV:

    # lvconvert --type writecache --cachevol CacheVolumeName VolumeGroupName/LogicalVolumeName
    Copy to Clipboard

    CacheVolumeName 替换为缓存卷的名称。将 VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName

验证

  • 验证 LV 现在是否被缓存了:

    # lvs -o lv_name,pool_lv
    
      LV                   Pool
      LogicalVolumeName    [CacheVolumeName_cvol]
    Copy to Clipboard

5.2.3. 取消逻辑卷的缓存

使用两种主要方法从 LV 中删除缓存。

分割
您可以从 LV 中分离缓存,但保留缓存卷本身。在这种情况下,LV 将不再受益于缓存机制,但缓存卷及其数据将保持不变。虽然缓存卷被保留了,但缓存中的数据无法被重复使用,并将在下次在缓存设置中使用时被擦除。
取消缓存
您可以从 LV 中分离缓存,并完全删除缓存卷。此操作可以有效地销毁缓存,从而释放空间。

先决条件

  • 管理访问权限.

流程

  1. 显示缓存的 LV:

    # lvs -o lv_name,pool_lv,vg_name
    
      LV                   Pool                   VG
      LogicalVolumeName    [CacheVolumeName_cvol] VolumeGroupName
    Copy to Clipboard
  2. 分离或删除缓存的卷:

    • 要分离缓存的卷,请使用:

      # lvconvert --splitcache VolumeGroupName/LogicalVolumeName
      Copy to Clipboard
    • 要分离和删除缓存的卷,请使用:

      # lvconvert --uncache VolumeGroupName/LogicalVolumeName
      Copy to Clipboard

      VolumeGroupName 替换为卷组的名称。使用逻辑卷的名称替换 LogicalVolumeName

验证

  • 验证 LV 是否没有被缓存:

    # lvs -o lv_name,pool_lv
    Copy to Clipboard
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat