我对存储和文件系统领域还比较陌生(如果我使用的语言不正确,请原谅我),我目前正在研究实现热备用配置的方法 - 即同时从两台不同的机器同时获取文件,以便备用主机可以在发生故障转移时接管(这个问题是关于数据复制,而不是故障转移的编排)。但是,我对不同方法的优缺点有点困惑。
从我目前所做的研究来看,似乎可以采取两种不同的方法:
- DRBD + 一些共享磁盘文件系统(DRBD 9 支持双主配置)
- 具有复制功能的分布式文件系统(例如 GlusterFS、Ceph 等)
我认为我理解这两种方法之间的概念差异:
DRBD 在块级别运行(据我所知,这是您可以处理的最低级别,因为文件的块是实际写入磁盘的内容),这就是在机器之间复制的内容。额外的文件系统是必要的,因为同步文件系统(不确定这是否是正确的术语)如 ext3 不知道它正在处理的块可能会因为另一台机器上发生的事情而发生变化。因此,文件系统认为磁盘上的内容与实际存在的内容之间可能存在不匹配,从而导致数据损坏。
但是,GlusterFS(或类似的东西)在文件级别上运行,并且不允许您访问写入磁盘的实际块。相反,它一次对整个文件进行操作,您作为用户不必担心或与实际写入磁盘的内容进行交互。我脑海中的概念模型是它是一个分布式文件系统 - 即文件系统中的文件(无论是全部还是其中的各个部分)可以存储在多台机器上,但在用户看来是一个统一的实体 - 它还具有复制功能。
我的问题是:
- 我对这两种不同方法的概念理解是否正确?
- 除了概念上的差异之外,一种方法与另一种方法相比,实际的优点/缺点是什么?为什么你想在块级别而不是文件级别上工作,反之亦然?