如何将一个 lvmcache“缓存池 LV”用于多个源 LV?

zwo*_*wol 9 linux raid cache partitioning lvm

我有一台闪亮的新计算机,带有一个不太大的 SSD (120GB) 和两个巨大的旋转锈迹 HD(每个 3TB)。我想按如下方式对其进行分区:

  • 交换 (~128GB)、操作系统 (~128GB) 和数据(所有其余)分区跨硬盘条带化
  • SSD 上的小启动分区
  • SSD 的所有其余空间都用于缓存池
  • 缓存池应该在所有 HD 分区之间共享,除了可能不是交换

我尝试使用 lvmcache 执行此操作并遇到以下问题:

  • 如果你只是创建一种明显的方式缓存池(例如如这里),你只能分配到缓存单一起源LV。所以我可以将它用于操作系统或数据,但不能同时用于两者。

  • 我试图通过创建一个跨越所有 HD 的“精简池”来解决这个问题,认为我可以缓存整个精简池,然后从中分配操作系统和数据 LV,但被告知不可能缓存一个薄池。(lvmthin联机帮助页没有多大意义,我可能在这部分做错了。)

我没有想法。谁能建议如何使这项工作?请注意,我没有与 lvm 结婚,如果 bcache+plain MD(用于条带化)可以做到这一点,或者我不知道的其他一些工具,那么那也很好。

小智 3

您可以创建缓存卷并将其转换为精简池。

缓存池(缓存数据 + 缓存元数据) -> 缓存卷(缓存池 + 原始大慢速卷) -> 缓存精简池

在此示例中,vg0 是包含物理卷 /dev/small-fast-disk 和 /dev/big-slow-disk 的卷组。所有逻辑卷必须位于同一卷组中。

创建缓存池卷(在一个命令中缓存数据和缓存元数据)

lvcreate --type cache-pool --name cachepool --size 128G vg0 /dev/smal-fast-disk
Run Code Online (Sandbox Code Playgroud)

创建缓存卷

lvcreate --type cache --cachepool vg0/cachepool --size 3T --name thincachevol vg0 /dev/big-slow-disk
Run Code Online (Sandbox Code Playgroud)

将缓存卷转换为精简卷

lvconvert --thinpool vg0/thincachevol
Run Code Online (Sandbox Code Playgroud)

  • 这是怎么做到的?提供详细说明。 (4认同)