分布式块设备复制DRBD简介

来源:互联网 发布:南京大学作家班 知乎 编辑:程序博客网 时间:2024/05/22 00:29

DRBD简介

https://docs.linbit.com/

一、什么是drbd?

 

Distributed Replicated Block Device(DRBD)是基于块设备在不同的高可用服务器之间同步镜像数据的软件,通过它可以实现在网络中的两台服务器之间基于块设备级别之间的实时或异步镜像或同步复制,其实就类似于rsync+inotify这样的架构项目软件。只不过drbd是基于文件系统底层的,即block层级同步,而rsync+inotify是在文件系统之上的实际物理文件的同步,因此drbd的效率更高,效果更好。

 

二、drbd工作原理介绍

 

Drbd软件工作位置是在文件系统层级一下,比文件系统更加靠近操作系统内核及IO栈。在基于drbd的高可用(HA)两台服务器主机中,当我们将数据写入到本地磁盘系统时,数据还会被实时的发送到网络中的另外一台主机上,并以相同的形式记录在另一个磁盘系统中,使得本地(主节点)与远程主机(备节点)的数据保持实时同步。

 

小结:你可以把它看作是一种网络RAID1,它允许用户在远程机器上建立一个本地块设备的实时镜像。

 

三、drbd工作原理图

 


一般情况下文件写入磁盘的步骤是: 写操作 --> 文件系统 --> 内存缓存中 --> 磁盘调度器 --> 磁盘驱动器 --> 写入磁盘。而DRBD的工作机制如上图所示,数据经过buffer cache后有内核中的DRBD模块通过tcp/ip协议栈经过网卡和对方建立数据同步。

 

小结:nic driver 网卡驱动 raw 裸设备

 

四、两种工作模式

 

1、实时同步模式:

当数据写到本地磁盘和远端服务器磁盘都成功后才会返回成功写入。DRBD服务协议C级别就是这种模式,可以防止本地和远端数据丢失和不一致,此种模式是生产环境中最常用的模式。

 

2、异步同步模式:

当数据写入到本地服务器成功后就返回成功写入,不管远端服务器是否写入成功。

还可能是数据写入到本地服务器或远端服的buffer成功后,返回成功,就是DRBD服务协议的A,B级别。

 

提示:在nfs网络文件系统的时候也有类似的参数和功能。例如:nfs服务参数sync和async,mount挂载参数也有sync和async。

 

五、DRBD的同步协议

 

DRBD的复制功能就是将应用程序提交的数据一份保存在本地节点,一份复制传输保存在另一个节点上。但是DRBD需要对传输的数据进行确认以便保证另一个节点的写操作完成,就需要用到DRBD的同步协议,DRBD同步协议有三种


协议A:数据在本地完成写操作且数据已经发送到TCP/IP协议栈的队列中,则认为写操作完成。如果本地节点的写操作完成,此时本地节点发生故障,而数据还处在TCP/IP队列中,则数据不会发送到对端节点上。因此,两个节点的数据将不会保持一致。这种协议虽然高效,但是并不能保证数据的可靠性。


协议B:数据在本地完成写操作且数据已到达对端节点则认为写操作完成。如果两个节点同时发生故障,即使数据到达对端节点,这种方式同样也会导致在对端节点和本地节点的数据不一致现象,也不具有可靠性。


协议C:只有当本地节点的磁盘和对端节点的磁盘都完成了写操作,才认为写操作完成。这是集群流行的一种方式,应用也是最多的,这种方式虽然不高效,但是最可靠。

 

六、DRBD的特性


1、实时性:当某个应用程序完成对数据的修改时,复制功能立即发生。
2、透明性:应用程序的数据存储在镜像块设备上是独立透明的,他们的数据在两个节点上都保存一份,因此,无论哪一台服务器宕机,都不会影响应用程序读取数据的操作,所以说是透明的。
3、同步镜像和异步镜像同步镜像表示当应用程序提交本地的写操作后,数据后会同步写到两个节点上去异步镜像表示当应用程序提交写操作后,只有当本地的节点上完成写操作后,另一个节点才可以完成写操作。

 

 

七、drbd生产应用模式

 

单主模式:即主备模式,为典型的高可用性集群方案

复制模式:需要采用共享cluster文件系统,如GFS和OCFS2。需要从2个节点并发访问数据的场合,需要特别配置。

小结:生产场景中drbd常用与基于高可用服务器之间的数据同步解决方案。

例如:heartbeat+drbd+nfs/mfs/gfs,heartbeat+drbd+mysql/oracle等,实际上drbd可以配合任意需要数据同步的所有服务的应用场景

 

 

八、用户空间管理工具

 

为了能够配置和管理drbd的资源,drbd提供了一些管理工具与内核模块进行通信。
drbdadm:高级的DRBD程序管理套件工具。它从配置文件/etc/drbd.conf中获取所有配置参数。

 

drbdadm为drbdsetup和drbdmeta两个命令充当程序的前端应用,执行drbdadm实际是执行的drbdsetup和drbdeta两个命令。

 

drbdsetup:drbdsetup可以让用户配置已经加载在内核中运行的DRBD模块,它是底层的DRBD程序管理套件工具。使用该命令时,所有的配置参数都需要直接在命令行中定义,虽然命令很灵活,但是大大的降低了命令的简单易用性,因此很多的用户很少使用drbdsetup。

 

drbdmeta:drbdmeta允许用户创建、转储、还原和修改drbd的元数据结构。这个命令也是用户极少用到。

 

 

九、DRBD的资源


DRBD中,资源是所有可复制移动存储设备的总称,它包括:
资源名称:资源名称可以是除了空白字符以外的任意ASCII码字符。
DRBD设备DRBD的虚拟块设备。在双方节点上,DRBD设备的设备文件命名方式;一般为/dev/drbdN,其主设备号147,N是次设备号。
磁盘配置DRBD内部应用需要本地数据副本,元数据。在双方节点上,为各自提供的存储设备。
网络配置:双方数据同步时所使用的网络属性。

 

原创粉丝点击