Placeholder image

同期速度自動調整機能(8.3.9以降)の紹介

バージョン8.3.9以降のDRBDには、レプリケーショントラフィックに応じて同期速度を自動的に調整する機能が取り入れられています。またDRBD 8.4系では自動調整がデフォルトになっています。このため、従来のrateパラメータに代わる制御方法を理解しておくことは有意義です。

同期とレプリケーションの違い

同期速度の調整機能とは、再同期に割り当てるネットワークバンド幅を可変にできる機能です。再同期は正常動作時のレプリケーションとは区別され、実際この機能はSyncTargetの状態、すなわち不整合データを持っていて同期の受け手になるノードで動作します。

同期速度の調整に関わるパラメータ

同期速度の調整に関わるのは、次のパラメータです。

  • c-plan-aheadにネットワークのRTTの約10倍の値を指定します。2台のサーバ間のpingが200ミリ秒だと、2秒を指定してください。ただしこのパラメータは1/10秒単位で指定するため、実際に指定する値は20になります。DRBD 8.4以降では、c-plan-aheadのデフォルト値が20になっているため、固定速度の同期(従来のrateによる)ではなく動的調整がデフォルトになっています。

    DRBD内部の同期速度コントローラは100ミリ秒ごとにポーリングします。c-plan-aheadに5以下の値を指定すると、もっと多くのデータを受け取っても大丈夫かどうかを判定するための情報が不十分にしか収集できません。このため、少なくとも1秒以上(パラメータ値としては10以上)を指定するようにしてください。

    なおこのパラメータは、コントローラが「次の手を考える」ための時間という意味合いになります。すなわち、次の実同期速度を決定する時間間隔です。

  • 再同期速度の最小値と最大値をc-min-rateおよびc-max-rateに指定します。指定する値は利用できるネットワークおよびリソースごとに割り当てるバンド幅に依存します。

    再同期中、c-min-rateの値が再同期に割り当てるバンド幅の最小値になり、c-max-rateが最大値になります。
  • 次のセクションの説明にもとづいて、c-fill-targetまたはc-delay-targetのどちらか一方を選択して指定します。

従来のrateパラメータを含めて、同期速度(バンド幅)に関するパラメータに指定する値の単位は「ビット/秒」ではなく「バイト/秒」であることに注意してください。

たとえば300Mという値は、300メガバイト/秒、すなわち約2.4ギガビット/秒(パケットヘッダのオーバヘッドを無視して単純8倍したときの値)ということになります。ギガビットネットワークを使っている場合は、明らかに大きすぎる値です。

遅延ベースと充填ベースの制御の違い

c-fill-targetに正の値を指定すると、DRBDはそのサイズ分のネットワーク帯域を同期用帯域から確保しようとします。すなわち、同期実行中にアプリケーションからの書き込みが入ったら、同期に割り当てる帯域を一時的にこの帯域分減らすということです。それ以前にバッファに入っていた同期用のデータに対して一定の割合でアプリケーションデータを流す枠を確保するため、レイテンシ改善にも一定の効果があります。ただし、アプリケーションI/Oと同期データがソケットのバッファを共有するため、数メガバイトもの値を指定するのは現実的ではありません。100キロバイトあたりから開始してチューニングしてください(17/3/29、この段落に誤訳があったため修正しました)。

DRBD Proxyを使っている場合はc-delay-targetを使うべきです。c-fill-targetはゼロにしてください。DRBDは、ネットワーク経由でデータを転送するのに要する時間を測定します。アプリケーションからの書き込みをトリガーとして、同期のレイテンシを指定された値以内に維持できるよう、DRBDは同期速度を調整します。RTTの5倍程度の値から開始してチューニングしてください。

この記事は、LINBIT社のブログに2012年1月5日に掲載された記事を同社の承諾を得て日本語に翻訳し、一部注釈を追加したものです。

DOWNLOAD
ダウンロード

img06

DOWNLOAD

カタログ、セミナー資料のダウンロード

img06

DOWNLOAD

技術資料、マニュアルのダウンロード

img06

DOWNLOAD

ユーザ事例のダウンロード