![是否可以避免 bcache 和 Btrfs RAID1 中的缓存数据重复?](https://linux22.com/image/198884/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%81%BF%E5%85%8D%20bcache%20%E5%92%8C%20Btrfs%20RAID1%20%E4%B8%AD%E7%9A%84%E7%BC%93%E5%AD%98%E6%95%B0%E6%8D%AE%E9%87%8D%E5%A4%8D%EF%BC%9F.png)
可以将单个 bcache 缓存驱动器连接到多个支持设备。由于 bcache 不知道位于顶部的文件系统,这意味着据我所知,它不知道这些设备的任何软件 RAID 配置。
示例:3 个驱动器,在 bcache 之上具有 Btrfs RAID1(2 个副本),并带有一个用于 writearound 缓存的附加 SSD。 Bcache 不知道磁盘上的 RAID1 和数据重复,因此从不同驱动器读取的每个块都将单独缓存。这意味着数据将在缓存中重复。这也意味着,对于已从一个支持设备块缓存但不是来自另一支持设备块的数据,始终存在 50% 的缓存未命中。这使得具有数据重复的 RAID 配置中的缓存效率降低。
比上面的例子更有效的缓存替代方案是(我猜)linux RAID、bcache 和 Btrfs 的混合:Btrfs(非 RAID)位于磁盘上 md-raid / lvm RAID1 之上的 bcache 之上。但随后我会丢失 RAID 中每个数据块副本的 Btrfs 校验和,并且无法为数据创建 RAID1 和为元数据创建 RAID1c3。
我上面写的都是真的吗?是否有更好的缓存配置可以避免 RAID1 设置中缓存中的数据重复?
答案1
对我有用的是缓存整个阵列而不是阵列后面的每个设备。缓存 RAID,而不是对缓存进行 RAID 化。
讨论得更详细 这里