测试吞吐量:
测试系统吞吐量不是关键,最重要的是在使用DRBD性能前后的影响;该测试使用一个512M的块到drbd设备,进行对比测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<code>#!/bin/bash</code>
<code>resource=r0</code>
<code>test_device=`drbdadm sh-dev $resource`</code>
<code>test_ll_device=`drbdadm sh-ll-dev $resource`</code>
<code>drbdadm primary $resource</code>
<code>for</code> <code>i </code><code>in</code> <code>$(</code><code>seq</code> <code>5)</code>
<code>do</code>
<code> </code><code>dd</code> <code>if</code><code>=</code><code>/dev/zero</code> <code>of=$test_device bs=512M count=1 oflag=direct</code>
<code>done</code>
<code>drbdadm down $resource</code>
<code> </code><code>dd</code> <code>if</code><code>=</code><code>/dev/zero</code> <code>of=$test_ll_device bs=512M count=1 oflag=direct</code>
<code>drbdadm up $resource</code>
注意:
1、dd 要使用关键字 oflag=direct 即写文件的时候忽略cache的影响;还有一个可选的关键字iflag=directio, 用来控制源文件和目标文件的读写方式为directio;
2、以上脚本是需要两个角色是secondary的时候进行测试;
3、测试完,在设定primary node 并挂载/dev/drbd0的时候会提示“mount: you must specify the filesystem type”,需要重新格式化/dev/drbd0
优化部分:
这个主要还是看硬件,磁盘的转速啊,网络的吞吐啊,
调整参数建议:
<code>net {</code>
<code> </code><code>max-buffers 8000;</code>
<code> </code><code>max-epoch-size 8000;</code>
<code> </code><code>sndbuf-size 0;</code>
<code>}</code>
max-buffers:是drbd数据写入到磁盘缓冲区的最大数,默认为2048,对于RAID阵列建议调整为8000;
max-epoch-size 是两个写入瓶颈的最大允许写的数量,建议修改为8000;
sndbuf-size: TCP发送缓冲区大小,设置为0,可以自动调节大小;
<code>syncer {</code>
<code> </code><code>rate 90M;</code>
<code> </code><code>al-extents 257;</code>
al-extents: 活动日志的大小,多少个x4M 的block;增大这个值的好处是:
减少更新元数据到drbd 设备上的频率;
降低同步数据时对IO流的中断数量;
提高drbd设备相应速度;
存在的风险是:当primary node crash 后,所有的活动数据(al-extentsx 4M block)需要重新同步,这个时间secondary node 是outdate状态,修复时间变长;
sync rate 参数设置,只有 backgroud re-synchronization才会受限于该参数的设置;另一个同步进程只负责同步一些block的更改,不受限该参数;所以改值不要设置的太大,以防占用太多的带宽,导致IO出现同步异常;
<code>disk {</code>
<code> </code><code>on-io-error detach;</code>
<code> </code><code>disk-flushes no;</code>
磁盘考虑不少于6块15K的sas磁盘做raid10,或者直接使用ssd ,如果raid 卡有bbu电池保护的话,可以考虑进行禁止drbd的磁盘刷写;
可以参考官网推荐,更改IO调度算法:
echo deadline > /sys/block/<device>/queue/scheduler (sas盘可以用deadline;ssd的话可以考虑使用noop调度算法)
本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1334520,如需转载请自行联系原作者