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