drbd-優化性能

  測試吞吐量:

  測試系統吞吐量不是關鍵,最重要的是在使用DRBD性能前後的影響;該測試使用一個512M的塊到drbd設備,進行對比測試

 

#!/bin/bash
resource=r0
test_device=`drbdadm sh-dev $resource`
test_ll_device=`drbdadm sh-ll-dev $resource`
drbdadm primary $resource
for i in $(seq 5)
do
    dd if=/dev/zero of=$test_device bs=512M count=1 oflag=direct
done
drbdadm down $resource
for i in $(seq 5)
do
    dd if=/dev/zero of=$test_ll_device bs=512M count=1 oflag=direct
done
drbdadm  up  $resource

 注意:

 1、dd 要使用關鍵字 oflag=direct 即寫文件的時候忽略cache的影響;還有一個可選的關鍵字iflag=directio, 用來控制源文件和目標文件的讀寫方式爲directio;

 2、以上腳本是需要兩個角色是secondary的時候進行測試;

 3、測試完,在設定primary node 並掛載/dev/drbd0的時候會提示“mount: you must specify the filesystem type”,需要重新格式化/dev/drbd0

 優化部分:

 這個主要還是看硬件,磁盤的轉速啊,網絡的吞吐啊,

 調整參數建議:

 

net {
  max-buffers 8000;
  max-epoch-size 8000;
  sndbuf-size 0;
}

 max-buffers:是drbd數據寫入到磁盤緩衝區的最大數,默認爲2048,對於RAID陣列建議調整爲8000;

 max-epoch-size 是兩個寫入瓶頸的最大允許寫的數量,建議修改爲8000;

 sndbuf-size: TCP發送緩衝區大小,設置爲0,可以自動調節大小;    

 

syncer {
  rate 90M;
  al-extents 257;
}

 al-extents: 活動日誌的大小,多少個x4M 的block;增大這個值的好處是:

 減少更新元數據到drbd 設備上的頻率;

 降低同步數據時對IO流的中斷數量;

 提高drbd設備相應速度;

 存在的風險是:當primary node crash 後,所有的活動數據(al-extentsx 4M block)需要重新同步,這個時間secondary node 是outdate狀態,修復時間變長;

 sync rate 參數設置,只有 backgroud re-synchronization纔會受限於該參數的設置;另一個同步進程只負責同步一些block的更改,不受限該參數;所以改值不要設置的太大,以防佔用太多的帶寬,導致IO出現同步異常;

   

disk {
  on-io-error   detach;
  disk-flushes no;
}

 磁盤考慮不少於6塊15K的sas磁盤做raid10,或者直接使用ssd ,如果raid 卡有bbu電池保護的話,可以考慮進行禁止drbd的磁盤刷寫;

 可以參考官網推薦,更改IO調度算法:

 echo deadline  >  /sys/block/<device>/queue/scheduler (sas盤可以用deadline;ssd的話可以考慮使用noop調度算法)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章