md上的bcache或bcache上的md


11

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

如果我理解正确,

  • 可以分配一个SSD *来缓存多个后备HDD,然后可以使用mdadm
    或RAID来对生成的缓存设备进行RAID。
  • 可以将多个HDD RAID到单个后备md设备中,并分配SSD来缓存该硬盘。

我想知道哪种方法更明智。在我看来,使用一种或其他方法来增加RAID5 / 6可能会更简单,但我不确定是哪一种!

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


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


无论哪种情况,bcache都必须使用bcache- 格式化所有支持的磁盘,因此您要么必须创建md阵列,要么将单个结果磁盘完全格式化为bcache支持的分区,然后将其链接到其缓存驱动器并从那里进行格式化,或者格式化许多磁盘的磁盘bcache,将它们链接到其缓存驱动器,然后将许多磁盘格式化为一个阵列。无论哪种情况,都有可能发生故障的多个方面,所有这些都取决于两个文件系统之间的互操作性-更不用说最后的fs了。看到这里向下滚动
mikeserv

感谢github.com/g2p/blocks,您可以就地转换它,尽管对此有一些限制。
亚当·里奇科夫斯基

@mikeserv我了解所有这些,这是针对专用服务器构建的,所以一切都很好。您是什么意思“两个文件系统”?bcache不是文件系统-我将拥有的唯一文件系统是最终bcache或mdadm设备上的XFS(取决于我选择的选项)。

感谢@Adam,就地转换对我来说不是问题。

@mikeserv不,不是。文件系统(例如btrfs,xfs,extN等)位于块设备的顶部。mdadm和bcache在块设备级别而不是在文件系统级别工作(btrfs将其与分层冲突相混淆,但这是一个完全独立的对话)。

Answers:


4

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

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

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

  • 另一个事实是,软RAID-5的计算开销很大。当分别缓存每个旋转团队成员时,即使缓存命中,计算机仍然必须重新计算所有奇偶校验

  • 显然,如果分别缓存每个旋转驱动器,则会牺牲一些昂贵的ssd空间。 -除非您打算使用突击式固态硬盘缓存。

  • 相对而言,这两种选择都不会影响增长过程的时间-尽管由于总线流量增加,具有单独缓存旋转驱动器的选项可能会变慢

配置bcache以便在需要替换ssd驱动器时,这是一种快速且相对简单的过程。多亏了这些,才有可能在两个地方都迁移RAID设置。

您还应该记住,目前大多数(全部?)实时CD发行版均不支持bcache,因此,无论您选择了bcache- mdraid布局选项如何,都无法简单地使用此类工具访问数据。


1
我已经更新了问题,以明确表示我打算拥有非冗余SSD缓存。您的第二个要点是一个很好的观点,谢谢。关于空间的第三个项目符号:您的意思是因为您要将奇偶校验存储在SSD上?关于您的最后一段,我使用的是F20,但最终将使用RHEL / CentOS7或Debian Jessie(如果bcache-tools有所帮助)。

@JackDouglas广告第3条:是的,完全是这样。但是,由于您计划使用突击式固态硬盘,因此这不适用于您。
亚当·里奇科夫斯基

1
这样做仍然是因为它们不仅会被镜像,而且还需要存储后备驱动器的RAID奇偶校验。如果RAID是在bcache下完成的,则不是这种情况,我认为这就是您的观点

我相信您的意思恰恰相反:如果将固态硬盘馈送到整个mdraid驱动器,则ssd矩阵不必存储旋转磁盘的奇偶校验。
亚当·里奇科夫斯基

1
是的,这就是我的意思!

1

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

bcache旨在通过低谷顺序读取和写入。

如果从逻辑上对b的每个设备分别进行bcache缓存,则从bcache的角度来看,几个被拆分为突袭或剥离的MD的设备将不断写入随机块。

虽然缓存的MD卷看起来正常,但将文件写入该卷,而不是随机将其写入多个设备。

硬和软件突袭的全部目的是对后端中的数据进行条带化,以使生成的文件系统看起来像普通卷。

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


也是一个很好的观点

对RAID5 / 6的大量顺序写入会对所有组件设备产生顺序写入。每个组件设备都获取每个N-1个数据块(或奇偶校验),但是它获取的数据是顺序的。但是您是对的,它会使事情变形。如果有一些块频繁出现部分条带写入,从而导致对奇偶校验条带(的一部分)进行读-修改-写操作,则可以由bcache进行缓存。不过,在部分条带化写入击中MD设备之前,将其高速缓存会更好。
彼得·科德斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.