global {

 usage-count yes;         // DRBD用于统计应用各个版本的信息。当新的版本的drbd被安装就会和http server进行联系。

                            当然也可以禁用该选项,默认情况下是启

 # minor-count dialog-refresh disable-ip-verification   // 这里是global可以使用的参数

 # minor-count:32        // 从(设备)个数,取值范围1~255,默认值为32。该选项设定了允许定义的resource个数,

                             当要定义的resource超过了此选项的设定时,需要重新载入drbd内核模块。

 # disable-ip-verification:no     // 是否禁用ip检查

 

}

common {

 protocol C;      // 指定复制协议,复制协议共有三种,为协议A,B,C,默认协议为协议C


 startup {        // 该配置段用来更加精细地调节drbd属性,它作用于配置节点在启动或重启时。常用选项有:

  # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb

  wfc-timeout:   // 该选项设定一个时间值,单位是秒。在启用DRBD块时,初始化脚本drbd会阻塞启动进程的运行,

                     直到对等节点的出现。该选项就是用来限制这个等待时间的,默认为0,即不限制,永远等待。

  degr-wfc-timeout:    // 该选项也设定一个时间值,单位为秒。也是用于限制等待时间,只是作用的情形不同:

                           它作用于一个降级集群(即那些只剩下一个节点的集群)在重启时的等待时间。

  outdated-wfc-timeout:    // 同上,也是用来设定等待时间,单位为秒。它用于设定等待过期节点的时间

 }

 disk {

  # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes     // 这里是disk段内可以定义的参数

  # no-disk-drain no-md-flushes max-bio-bvecs                        // 这里是disk段内可以定义的参数

  on-io-error: detach       // 选项:此选项设定了一个策略,如果底层设备向上层设备报告发生I/O错误,

                                 将按照该策略进行处理。有效的策略包括:

    detach                   // 发生I/O错误的节点将放弃底层设备,以diskless mode继续工作。在diskless mode下,

                           只要还有网络连接,drbd将从secondary node读写数据,而不需要failover(故障转移)。

该策略会导致一定的损失,但好处也很明显,drbd服务不会中断。官方推荐和默认策略。

    pass_on                  // 把I/O错误报告给上层设备。如果错误发生在primary节点,把它报告给文件系统,由上

                           层设备处理这些错误(例如,它会导致文件系统以只读方式重新挂载),它可能会导致drbd

停止提供服务;如果发生在secondary节点,则忽略该错误(因为secondary节点没有上层设备可以报告)。

该策略曾经是默认策略,但现在已被detach所取代。

    call-local-io-error      // 调用预定义的本地local-io-error脚本进行处理。该策略需要在resource(或common)配置段的handlers部分,

                           预定义一个相应的local-io-error命令调用。该策略完全由管理员通过local-io-error命令(或脚本)调用来

控制如何处理I/O错误。

  fencing:                  // 该选项设定一个策略来避免split brain的状况。有效的策略包括:

    dont-care:              // 默认策略。不采取任何隔离措施。

    resource-only:          // 在此策略下,如果一个节点处于split brain状态,它将尝试隔离对端节点的磁盘。这个操作通过调用fence-peer

                           处理器来实现。fence-peer处理器将通过其它通信路径到达对等节点,并在这个对等节点上调用drbdadm outdate res命令

    resource-and-stonith:   // 在此策略下,如果一个节点处于split brain状态,它将停止I/O操作,并调用fence-peer处理器。处理器通过其它通信路径

                           到达对等节点,并在这个对等节点上调用drbdadm outdate res命令。如果无法到达对等节点,它将向对等端发送关机命令。

一旦问题解决,I/O操作将重新进行。如果处理器失败,你可以使用resume-io命令来重新开始I/O操作。 

  

 }

 net {                       // 该配置段用来精细地调节drbd的属性,网络相关的属性。常用的选项有:

  # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers   // 这里是net段内可以定义的参数

  # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret   // 这里是net段内可以定义的参数

  # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork   // 这里是net段内可以定义的参数

  sndbuf-size:              // 该选项用来调节TCP send buffer的大小,drbd 8.2.7以前的版本,默认值为0,意味着自动调节大小;

                                新版本的drbd的默认值为128KiB。高吞吐量的网络(例如专用的千兆网卡,或负载均衡中绑定的连接)

中,增加到512K比较合适,或者可以更高,但是最好不要超过2M。

  timeout: // 该选项设定一个时间值,单位为0.1秒。如果搭档节点没有在此时间内发来应答包,那么就认为搭档节点

                                已经死亡,因此将断开这次TCP/IP连接。默认值为60,即6秒。该选项的值必须小于connect-int和ping-int的值。

  connect-int: // 如果无法立即连接上远程DRBD设备,系统将断续尝试连接。该选项设定的就是两次尝试间隔时间。单位为秒,

                                默认值为10秒。

  ping-timeout: // 该选项设定一个时间值,单位是0.1秒。如果对端节点没有在此时间内应答keep-alive包,它将被认为已经死亡。

                                默认值是500ms。

  max-buffers: // 该选项设定一个由drbd分配的最大请求数,单位是页面大小(PAGE_SIZE),大多数系统中,页面大小为4KB。

                                这些buffer用来存储那些即将写入磁盘的数据。最小值为32(即128KB)。这个值大一点好。

  max-epoch-size: // 该选项设定了两次write barriers之间最大的数据块数。如果选项的值小于10,将影响系统性能。大一点好

  ko-count: // 该选项设定一个值,把该选项设定的值 乘以 timeout设定的值,得到一个数字N,如果secondary节点没有在此时间

                                内完成单次写请求,它将从集群中被移除(即,primary node进入StandAlong模式)。取值范围0~200,默认值为0,

即禁用该功能。

  allow-two-primaries: // 这个是drbd8.0及以后版本才支持的新特性,允许一个集群中有两个primary node。该模式需要特定文件系统的支撑,

                                目前只有OCFS2和GFS可以,传统的ext3、ext4、xfs等都不行!

  cram-hmac-alg: // 该选项可以用来指定HMAC算法来启用对端节点授权。drbd强烈建议启用对端点授权机制。可以指定/proc/crypto文件

                                中识别的任一算法。必须在此指定算法,以明确启用对端节点授权机制,实现数据加密传输。

  shared-secret: // 该选项用来设定在对端节点授权中使用的密码,最长64个字符。

  data-integrity-alg:       // 该选项设定内核支持的一个算法,用于网络上的用户数据的一致性校验。通常的数据一致性校验,由TCP/IP头中所包

                                含的16位校验和来进行,而该选项可以使用内核所支持的任一算法。该功能默认关闭。

 }

 syncer {   该配置段用来更加精细地调节服务的同步进程。常用选项有

  # rate after al-extents use-rle cpu-mask verify-alg csums-alg

  rate:                     // 设置同步时的速率,默认为250KB。默认的单位是KB/sec,也允许使用K、M和G,如40M。注意:syncer中的速率是

                                以bytes,而不是bits来设定的。配置文件中的这个选项设置的速率是永久性的,但可使用下列命令临时地改变rate

的值:drbdsetup /dev/drbdN syncer -r 100M。如果想重新恢复成drbd.conf配置文件中设定的速率,执行如下命令:

drbdadm adjust resource

  verify-alg: // 该选项指定一个用于在线校验的算法,内核一般都会支持md5、sha1和crc32c校验算法。在线校验默认关闭,必须在

                                此选项设定参数,以明确启用在线设备校验。DRBD支持在线设备校验,它以一种高效的方式对不同节点的数据进行一

致性校验。在线校验会影响CPU负载和使用,但影响比较轻微。drbd 8.2.5及以后版本支持此功能。一旦启用了该功能,

你就可以使用下列命令进行一个在线校验: drbdadm verify resource。该命令对指定的resource进行检验,如果检测

到有数据块没有同步,它会标记这些块,并往内核日志中写入一条信息。这个过程不会影响正在使用该设备的程序。

如果检测到未同步的块,当检验结束后,你就可以如下命令重新同步它们:drbdadm disconnect resource   or   drbdadm connetc resource 

 }

}

common     // 段是用来定义共享的资源参数,以减少资源定义的重复性。common段是非必须的。resource段一般为DRBD上每一个节点

来定义其资源参数的。


resource web {       // web为资源名称

 on ha1.xsl.com {            // on后面为节点的名称,有几个节点就有几个on段,这里是定义节点ha1.xsl.com上的资源

  device   /dev/drbd0;       // 定义DRBD虚拟块设备,这个设备不要事先不要格式化

  disk /dev/sda6;     // 定义存储磁盘为/dev/sda6,该分区创建完成之后就行了,不要进行格式化操作

  address 192.168.108.199:7789;  // 定义DRBD监听的地址和端口,以便和对端进行通信

  meta-disk  internal;       // 该参数有2个选项:internal和externally,其中internal表示将元数据和数据存储在同一个磁盘上;而externally表示将

元数据和数据分开存储,元数据被放在另一个磁盘上。

 }

 on ha2.xsl.com {       // 这里是定义节点ha2.xsl.com上的资源

  device /dev/drbd0;

  disk /dev/sda6;

  address 192.168.108.201:7789;

  meta-disk internal;

 }

}