Distributed Replicated Block Device 的高可用性
2010-09-02 00:00:00 来源:WEB开发网通信完整性
节点之间的通信可能会将错误引入复制数据(由于软件或防火墙漏洞,或者不能被 TCP/IP 的校验码检测出来的其他错误)。为了提供数据的完整性,DRBD 计算消息完整性代码,以随数据一起在节点之间移动。这支持接收节点验证输入数据,并在发现一个错误时请求重发数据。DRBD 使用 Linux 加密应用程序编程接口,因此在完整性算法使用方面是比较灵活的。
自动恢复
DRBD 可以从多种错误中恢复,但是一个最严重的错误就是所谓的 “裂脑(split-brain)”。在这个错误场景中,节点之间的通信链发生故障,每个节点都认为自己是主节点。而对于主节点而言,每个节点支持写操作,而不会将这些操作传播到对等节点。这导致每个节点中的存储不一致。
大多数情况下,脑裂恢复是人工进行的,但是 DRBD 提供几个主动恢复这一状况的操作方法,所用恢复算法具体取决于实际的存储方式。
发生裂脑之后,同步存储最简单的方法是在链接出现故障时其中一个节点没有发现改变。这样,已经发生改变的节点与潜在对等节点进行简单的同步。另一个方法是丢弃变更较少的那个节点中的更改。这使得最大变更集合的节点可以继续工作,但也意味着一个主机上的变更将丢失。
还有两个方法是根据节点当时的状态丢弃更改。一种方法是将最后一次转换成主节点的那个节点中的变更丢弃,而另一种是将最老的主节点(是第一次转换成主节点的节点)中的变更丢弃。您可以在 DRBD 配置文件中操作每个节点,但是它们最终的使用取决于使用存储的应用程序以及数据是否有必要丢弃或进行人工恢复。
优化同步
复制存储设备的一个关键因素是节点之间数据同步的方法是否高效。DRBD 使用的模式其中两个是活动日志和快速同步位图。活动日志存储最近写入的块并确定故障恢复后应同步哪些块。快速同步位图确定连接断开时同步(或不同步)的数据块。节点重新连接之后,可使用这些位图快速同步节点,彼此之间进行精确的复制。时间是很重要的,因为它代表辅助磁盘不一致时的窗口。
结束语
如果您想要提高您数据的可用性,甚至是商业硬件上的数据,DRBD 是一个极好的资产。它作为一个内核模块易于安装,且可使用管理工具和包装器进行配置。更好的是,DRBD 是开源的,允许您根据自己的需求进行调整(但是首先检查 DRBD 路线图,看看是否您所需要的在其计划中)。DRBD 提供大量有用的选项,因此您可以对其进行优化,使其只适合您的应用程序。
Tags:Distributed Replicated Block
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接