DRBD 文件同步系统
转自https://blog.51cto.com/bluesrer/1977153
一、DRBD简介
1、DRBD是啥、能干啥?
DRBD全称::Distributed ReplicatedBlock Device分布式块设备复制,是一种基于软件的,无共享的,复制的存储解决方案,镜像主机之间的块设备(硬盘,分区,逻辑卷等)的内容。DRBD功能是由drbd内核模块和相关脚本构成,用来构建高可用集群(主要是储存方面)。一般来说,首先DRBD分为两块,一块是在本地,另一块是在远端,其次还会给这两块分别划分等级,一开始划给本地这块primary,给远端那块划secondary。
关于DRBD镜像数据:
实时:当应用程序修改设备上的数据时,复制会持续发生。
透明:应用程序不需要知道数据存储在多台主机上。
同步或异步:通过同步镜像,在所有主机上执行写入操作后,都会通知应用程序的写入完成。通过异 步镜像,当本地完成写入操作时,应用程序将被通知写入完成,这通常在传播到其他主机之前。
2、DRBD实现的原理
DRBD primary本地这块(主机磁盘)负责接受写入的数据,并且把写入的数据发送给DRBD Secondary远端那块(主机磁盘),简单来说就是把写入本地的数据,通过网络传输的方式复制到远端,在远端建立了一个数据镜像。
3、三种复制模式
协议A:
异步复制协议。一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。在一个节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。尽管,在故障转移节点上的数据是一致的,但没有及时更新。这通常是用于地理上分开的节点。
协议B:
内存同步(半同步)复制协议。一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。数据丢失可能发生在参加的两个节点同时故障的情况下,因为在传输中的数据可能不会被提交到磁盘。
协议C:
同步复制协议。只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。没有任何数据丢失,所以这是一个群集节点的流行模式,但I / O吞吐量依赖于网络带宽。
注意:一般使用协议C,但选择C协议将影响流量,从而影响网络时延。为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议。
4、DRBD工作原理图
三、总结
到此为止drbd的一般搭建就完成了,学过KEEPAKIVED实现高可用的同学可能会觉得drdb这个实现方式有点太LOW了,实现高可用还需要人工干预,那在实际生产环境还一直放个人在旁边守着?所以为了让他实现“自动化”我后面会写用drbd+corosync+pacemaker+crmsh来自动的切换故障节点,这样才够“高大上”。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!