md 上的 bcache 或 bcache 上的 md

md 上的 bcache 或 bcache 上的 md

缓存允许一个或多个快速磁盘驱动器(例如基于闪存的固态驱动器 (SSD))充当一个或多个速度较慢的硬盘驱动器的缓存

如果我理解正确的话

  • 可以分配SSD *来缓存多个后备 HDD,然后可以使用 mdadm
    或mdadm 对生成的缓存设备进行 RAID 化
  • 多个 HDD 可以 RAID 到单个支持 md 设备中,并将 SSD 分配给缓存

我想知道哪种方法更明智。我突然想到,使用一种或另一种技术来构建 RAID5/6 可能会更简单,但我不确定是哪一种!

选择一种方法而不是另一种方法(对于包含虚拟机支持文件的大型非根文件系统)是否有充分的理由(例如,增加后备存储或其他任何东西)?


* “SSD”是指某种冗余 SSD 设备,例如两个物理 SSD 的 RAID1

答案1

我认为缓存整个 md 设备是最有意义的。

将 bcache 用来缓存整个 md 设备会牺牲整个 raid 的想法,因为它引入了另一个单点故障。

  • SSD磁盘的OTH故障相对较少,并且bcache可以放入writethrough/writearound模式(与模式相反writeback),其中没有数据仅存储到缓存设备,并且缓存故障不会杀死其中的信息这次突袭使其成为一个相对安全的选择。

  • 另一个事实是,软 RAID-5 存在显着的计算开销;当单独缓存每个旋转 raid 成员时,计算机仍然必须重新计算所有奇偶校验,即使缓存命中

  • 显然,如果单独缓存每个旋转驱动器,您会牺牲一些昂贵的 SSD 空间。- 除非您打算使用 raid ssd 缓存。

  • 这两个选项相对不会影响增长过程的时间 - 尽管旋转驱动器单独缓存的选项有可能会影响增长过程的时间。慢点由于公交车流量较多。

当您需要更换 SSD 驱动器时,配置 bcache 以删除 SSD 驱动器是一个快速且相对简单的过程。感谢应该可以就地双向迁移 raid 设置。

您还应该记住,目前大多数(全部?)现场 CD 发行版不支持bcache,因此无论您选择哪种布局选项,bcache都不能简单地使用此类工具访问数据。mdraid

答案2

我认为明智的方法是缓存生成的 MD 设备。

bcache 设计用于传递顺序读取和写入。

如果您单独对每个设备进行 bcache,从 bcache 的角度来看,从逻辑上讲,将多个设备条带化为 raid 或 stripped MD,将不断写入随机块。

虽然 bcached MD 卷看起来很正常,但将文件写入该卷,而不是随机块到多个设备。

硬件和软件 raid 的全部目的是在后端对数据进行条带化,以便生成的文件系统看起来像正常卷。

这可能不正确(因为 bcache 开发人员可能很聪明并考虑了这种情况),但逻辑上的最佳做法是缓存卷,而不是块设备。

相关内容