可以将单个 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 化。
讨论得更详细 这里