全部博文(51)
分类:
2010-03-04 12:54:06
分布式重复块设备(DRBD技术)修补程序,由开发,引进了同步数据复制块存储网络。如果在复制环境中存储节点出现故障,该系统还有 另一个块设备可依赖,并可以安全地转移。简而言之,它可被视为一个镜像RAID1使用远程节点和1个本地磁盘的组合,但更好的与集群软件相兼容,如 heartbeat,和更好的同步交流脏位图和数据生成效率的标识符的能力。DRBD技术目前只适用于2节点群集,尽管你可以使用 一种混合版扩大这一限制。当群集的两个节点时,写被复制和同时发送到本地磁盘和其他节点。由于效率的原因,读是从本地磁盘获取。
数据耦合水平使用取决于所选择的协议:
DRBD技术群集节点划分成是“主要的”或“次要的。”主要节点可以启动修改或写入,次要节点不能。这意味着,一个次要的DRBD技术节点不提供存 取,不能被挂载。即使是只读访问也是不允 许的,由于缓存一致性的原因。次要节点目前主要作为在一个错误的情况下备用设备。次要节点可能成为主要节点取决于网络配置。角色分配和指定,是由集群管理软件确定。
一个节点可以作为主节点有不同的指定方式:
工作线程一部分节点之间的通信利用线程来处理,以避免死 锁和复杂的设计问题。用于通信的线程是:
失败
DRBD技术需要一个小的空间保存元数据,以高 效处理失败后的操作(如同步)。这个地区也可以配置在一个单独的设备(外部元数据),或在DRBD技术块设备(内部元数据)。它拥有有关的元数据,包括日志和磁盘上的脏位图 元数据(如下所述)。
节点故障
如果一个次要节点死亡,它不会影响整个系统,因为次要节点不启动写操作。如果主节点失败,数据尚未写入磁盘的,但它的完 成没有收到,可能会丢失。为了避免这种情况,DRBD技术还保持着一个“活动日志”,在本地磁盘上保留区中包含写入尚未完成的操作的信 息。数据存储在扩展区,并保持 在最近使用(LRU)列表。每个活动日志的变化会导致更新元数据(单扇区写)。在活动日志的大小是由用户配置,它是一种最小化 更新的元数据和主节点崩溃同步时间之间的权衡。
DRBD技术维护一个“脏位图”的,因为它必须运行当没有对等节点或没有本地磁盘时。它描述了已被当地节点改变的脏页。写入到磁盘上的脏位图根据活动日志最小化。每一个表项从活动日志逐出时,与之相关的是不再 由活动日志覆盖的位图将写入磁盘。肮脏的位图在网络上传送来通信哪些页是肮脏的,应重新同步。位图被压缩(使用运行长度编码),然后在网络上发送, 以减少网络开销。由于大多位图的稀疏的, 它被证明是非常有效的。
DRBD技术同步数据,一旦坠毁节点回来,或者是在回应中的一个链路中断造成的数据不一致。同步进行的是线性顺序,根据磁盘偏移,与一致的 节点保持相同的磁盘布局。同步率配置通过在DRBD配置文件中率技术参数来配置。
磁盘故障
在本地磁盘错误的情况下,系统可以根据具体的配 置选择下列方式之一处理它:
数据不一致的问题
在双主节点情况下,两个节点可写入同一磁盘扇 区,使数据不一致。对于在不同的偏移写,没有同步需要。为了避免不一致的问题,在网络上数据包要顺序编 号,以确定顺序写入。但是,仍有一些角落情况系统可能遭受不一致的问题:
总结
DRBD技术并不是唯一正在开发的分布式存储的 实现。叶夫波利亚科夫的分布式 存储(DST)的实现被接受在staging树采取了不同的做法。DRBD技术被限制为2节点主动群集,DST时 可以有更多的节点数目。DST工作在客户服务器模式,其中存储在服务器端的,而DRBD技术是点对点对等为基础的,更像高可 用性设计,而非分布存储。另一方面,DST是专为累积存储和存储,可以根据需要增加节点。DST有一个可插拔模块,接受映射到一个累积存 储存储节点不同的算法。可以选择的镜像,这将与DRBD技术存储的基本能力的算法相同。
DRBD技术代码保留在git仓库在 git://git.drbd.org/linux-2.6-drbd.git,在“DRBD”分支。它包含了未成年人审查意见张贴在注册后的补丁集是由菲 利普芮斯纳发布LKML。如需进一步资料,请参阅在提及的几个PDF文件。