This site best when viewed with a modern standards-compliant browser. We recommend Firefox Get Firefox!.

Linux-HA project logo
Providing Open Source High-Availability Software for Linux and other OSes since 1999.

USA Flag UK Flag

Japanese Flag

ホームページ

サイトについて

コンタクト情報

使用条件

協力方法

セキュリティ

This web page is no longer maintained. Information presented here exists only to avoid breaking historical links.
The Project stays maintained, and lives on: see the Linux-HA Reference Documentation.
To get rid of this notice, you may want to browse the old wiki instead.

2010.1.28
追加パッケージ集リニューアル
追加パッケージ集は、こちらから

2008.8.28
RHEL用rpm更新
更新情報はこちらから

2008.8.18
Heartbeat 2.1.4
リリース!
Downloadはこちらから

2007.11.13
Linux-ha-japan日本語ML移植しました

2007.10.5
日本語サイトOPEN
日本語MLも開設しました

2007.10.5
OSC2007 Tokyo/Fall で Heartbeat紹介
発表資料を公開しました

Last site update:
2017-12-11 11:50:32

DRBDのFAQ

Contents

  1. DRBDのFAQ
  2. 全般的事項
    1. まずはじめに、DRBDとは何ですか?
    2. DRBDのライセンスはどうなっていますか?
    3. DRBDのサポートは受けられますか?
    4. DRBDはどこでダウンロードしたり詳細な情報を得られますか?
  3. インストールと設定
    1. 相互に交換するデータを暗号化または圧縮できますか?
    2. セカンダリをせめてリードオンリーでマウントできませんか?
    3. どうしてDRBDは全ノードへの同時アクセスを許さないのですか?私はGFSやOCFS2を使いたいんですが...
    4. サイズが異なるデバイスを組み合わせて使えますか?
    5. DRBDとXFSはうまく組み合わせられますか?
    6. drbdモジュールをロードしようとすると、次のエラーになります。 compiled for kernel version ''some version'' while this kernel is ''some other version''
    7. DRBDとLVMを組み合わせられますか?
    8. DRBDとLinux-vServerを組み合わせているのですが、"file system in use"というエラーでアンマウントできません。
    9. DRBDとXen、iSCSIの組み合わせについて?
    10. DRBDとOpenVZの組み合わせについて
  4. 操作に関する事項
    1. 同期 (SyncingAll)があまりに遅いのですが
    2. 同期のパフォーマンスを向上させる方法を教えてください。
    3. 書き込み速度を向上させるには?
    4. ロードアベレージが高くなるのはどうしてですか?
    5. heartbeatのdrbddiskスクリプトを使うと、次の警告メッセージが表示されます ''Return code 255 from /etc/ha.d/resource.d/datadisk''
    6. ノード状態をセカンダリからプライマリに切り替えても、プライマリ側でDRBDデバイスがマウントされません。手動のマウントはうまく働きます。
    7. ''out of vmalloc space''というメッセージの意味を教えてください。
    8. /proc/drbdの各フィールド(st、ns、nr、dw、drなど)の意味を教えてください。?

全般的事項

  • 出版物やマニュアルにも目を通してください。

まずはじめに、DRBDとは何ですか?

  • DRBDはLinuxオペレーティングシステム向けにPhilippReisnerLarsEllenbergが開発しているプログラムです。
    Distributed (分散した)
    Replicated (複製(ミラー)された)
    Block
    Device (ブロックデバイス)
    の略です。あるマシンのブロックデバイスを別のマシンのブロックデバイスにリアルタイムでミラーできます。heartbeatと組み合わせて、HA Linuxクラスタを構成できます。

DRBDのライセンスはどうなっていますか?

  • DRBDはGNU GENERAL PUBLIC LICENSE Version 2, Juni 1991 (GPL)のもとでリリースされています。したがって、本ライセンスの条件にしたがって自由に配布したり改変できます。

DRBDのサポートは受けられますか?

  • LinBitをご覧ください。

DRBDはどこでダウンロードしたり詳細な情報を得られますか?

  • DRBD最新バージョンはLinBitダウンロードページからダウンロードできます。DRBDはDebian、SuSE、RedHatその他の多くのディストリビューションに取り込まれています。

  • gitリポジトリもあります。

  • 情報源としてhttp://lists.linbit.com/mailman/listinfo/drbd-userメーリングリストがあります。

インストールと設定

相互に交換するデータを暗号化または圧縮できますか?

  • もちろん可能です。しかしこれらはDRBDのオプションではありません。適切なVPNなどを設定してください。ネットワークレイヤのプログラムが面倒を見てくれるはずです。軽量級ソリューションとしては、たとえばCIPE projectがあります。もちろん、IPSECやOpenVPNもこの目的で利用できます。

セカンダリをせめてリードオンリーでマウントできませんか?

  • 簡単な回答: No!. 次項目の質問と回答も見てください。

  • 詳細な回答: DRBDにとってはどうでもいいことです。しかし下位デバイスが書き換えられることによって、ファイルシステムが混乱してしまいます。このため、通常のext2、ext3、reiserFS、JFS、XFSなどのファイルシステムはまともに動作できません。
  • したがって、セカンダリ側でマウントしなければならない場合は、あらかじめセカンダリからプライマリに切り替えてください。あくまで両デバイスを同時にマウントするとうまく動作しません。ただしDRBD V8は2つのノードをともにプライマリにするモードをサポートします。次項目の回答を見てください。任意の数のクライアントから両ノードのデータにアクセスしなければならない場合は、HaNFSを使うことも検討してください。

どうしてDRBDは全ノードへの同時アクセスを許さないのですか?私はGFSやOCFS2を使いたいんですが...

  • Actually, DRBD version 8.0.x and later support this.

    If you need not just a mirrored, but a shared filesystem, use OCFS2 or GFS2 for example. But these are much slower, and typically expect write access on all nodes in question. If we have more than one node concurrently modifying distributed devices, we have some "interessting" problems to decide which part of the device is up-to-date on which node, and what blocks need to be resynchronized in which direction. These problems have been solved. You need to net { allow-two-primaries; } to activate this mode. But the handling of DRBD in "cluster fs mode" is still more complex and cumbersome than "classical" one-node-at-a-time access.

  • An other option would be to have only one node active, export that device via iSCSI, then run OCFS2 on iSCSI.
  • Also have a look at the DRBD Changelog.

サイズが異なるデバイスを組み合わせて使えますか?

  • 基本的な回答はYESですが、次のような事情を考慮しておく必要があります。

    ローカルディスクに対しては、DRBDはdisk-sizeパラメータの値を使います。この値は、デバイスの物理サイズ以下でなければならず、またパラメータを指定しなかった場合には物理サイズそのものが使われます。そして2台のDRBDが相互に接続されたときに、両ノードのサイズの最小値が共通のディスクサイズになります。この流れを無視すると、深刻な問題に陥る可能性があります。つまり、適切なdisk-size値を設定せずにDRBDを設定して1ノードだけで起動してしまい、小さいディスクサイズのノードと接続し、さらに実行中にディスクサイズを縮小するような流れを実行すると、Your size hint is bogus, please change to <some value>というメッセージがsyslogに出力されます。その結果DRBDの上位レイヤであるファイルシステムは混乱に陥ります。 したがって、2ノードのディスクサイズが異なる場合には、DRBDに管理させたい領域のディスクサイズを明示的に指定してください。DRBD-0.7は対向ノードのディスクサイズを自ノードのメタデータに書き込みます。したがって、DRBD-0.7ではdisk-sizeパラメータは使えません(設定ファイルに書くことはできません)。

DRBDとXFSはうまく組み合わせられますか?

  • XFSが使っている動的ブロックサイズをサポートするには、DRBD 0.7またはそれ以降のバージョンが必要です。

drbdモジュールをロードしようとすると、次のエラーになります。 compiled for kernel version ''some version'' while this kernel is ''some other version''

  • 実行中のカーネルとカーネルソースツリーの.config`が異なるのが原因です。SuSE Linuxでは、正しいconfigは次のコマンドで得られます。cd /usr/src/linux/ && make cloneconfig && make dep通常は、カーネルを再コンパイルする必要はなく、DRBDのみを再コンパイルします。作業前にdrbdソースコード中のINSTALLファイルに目を通して、正しい手順で再コンパイルしてください。

DRBDとLVMを組み合わせられますか?

  • はい。LVM2の場合、スナップショットも読み書き可能です。このため、スナップショットボリュームでもジャーナルのリプレイが可能になります。詳しくは、2007年4月8日にdrbd-userメーリングリストに投稿されたA Summary of LVM snapshots with DRBDを参照してください。

DRBDとLinux-vServerを組み合わせているのですが、"file system in use"というエラーでアンマウントできません。

DRBDとXen、iSCSIの組み合わせについて?

DRBDとOpenVZの組み合わせについて

操作に関する事項

同期 (SyncingAll)があまりに遅いのですが

  • {i} Outdated, applies to drbd versions prior drbd-0.6.4 only For historical reasons replicate used to work backwards. Most physical devices do have a pretty slow thoughput when writing data backwards.

同期のパフォーマンスを向上させる方法を教えてください。

  • double check the value of sync-max in the net {} section (drbd-0.6) resp. rate in the syncer {} section (drbd-0.7). Keep in mind that the default value is very low, and the default unit is kByte/sec!

  • if you run on top of some local RAID, make sure it is not reconstructing at the same time
  • check whether DMA is enabled ;-)

書き込み速度を向上させるには?

  • First you need to find the bottleneck. This can be your local disk, the network, the remote disk, latency caused by excessive seeks, or the summed up latency of those components.

    You may want to play with the values of protocol and sndbuf-size. If your NIC supports it, you may want to enable "jumbo frames" (up the value of the MTU). If nothing helps, ask the list for known good and performant setups...

ロードアベレージが高くなるのはどうしてですか?

  • Load average is defined as average number of processes in the runqueue during a given interval. A process is in the run queue, if it is
    • not waiting for external events (e.g. select on some fd)
    • not waiting on its own (not called "wait" explicitly)
    • not stopped :)

    Note that all processes waiting for disk io are counted as runable! Therefore, if a lot of processes wait for disk io, the "load average" goes straight up, though the system actually may be almost idle cpu-wise ... E.g. crash your nfs server, and start 100 ls /path/to/non-cached/dir/on/nfs/mount-point on a client... you get a "load average" of 100+ for as long as the nfs timeout, which might be weeks ... though the cpu does nothing. Verify your system load by other means, e.g. vmstat, sysstat/sar. This will give you an idea of the bottleneck of your system. Some ideas are using multiple disks (not just partitions!) or even a RAID with 10.000rpm SCSI disks and probably even a Gigabit Ethernet. Even on a Fast Ethernet device you will rarely see more then 6 MByte per second. (100 MBit/s is at most 12.5 MByte/s minus protocol overhead and latency etc.).

heartbeatのdrbddiskスクリプトを使うと、次の警告メッセージが表示されます ''Return code 255 from /etc/ha.d/resource.d/datadisk''

  • {i} DRBD-0.6 only
    Exit code 255 is most likely from a script generated die, which include a verbose error message. Capture the output of that script. this is the debugfile directive in your ha.cf, iirc. If that does not help, do it by hand, and see what error message it gives. datadisk says something like cannot promote to primary, sychronization running or fsck failed or ...

ノード状態をセカンダリからプライマリに切り替えても、プライマリ側でDRBDデバイスがマウントされません。手動のマウントはうまく働きます。

  • (!) Feature ...
    DRBD does not automaticaly mount the partition. The script datadisk (or drbddisk in 0.7) is made for that purpose. It is intended to be called by hartbeat.

''out of vmalloc space''というメッセージの意味を教えてください。

For each device, drbd will (try to) allocate X MB of bitmap, plus some constant amount (<1MB). X = storage_size_in_GB/32, so 1 TB storage -> 32 MB bitmap.

By default Linux allocates 128MB to Vmalloc. For systems using more than 4TB, this may cause an issue.

If you get the following error message in /var/log/messages, Try a Linux 2.6 hugemem kernel.

kernel: allocation failed: out of vmalloc space - use vmalloc=<size> to increase size.

/proc/drbdの各フィールド(st、ns、nr、dw、drなど)の意味を教えてください。?

cs
connection state

Unconfigured

Device waits for configuration.

StandAlone

Not trying to connect to peer, IO requests are only passed on locally.

  • Unconnected

    Transitory state, while bind() blocks.

    WFConnection

    Device waits for configuration of other side.

    WFReportParams

    Transitory state, while waiting for first packet on a new TCP connection.

    Connected

    Everything is fine.

    Timeout, BrokenPipe, NetworkFailure

    Transitory states when connection was lost.

    {i} DRBD-0.6 specific

    SyncingAll

    All blocks of the primary node are being copied to the secondary node.

    SyncingQuick

    The secondary is updated, by copying the blocks which were updated since the now secondary node has left the cluster.

    SyncPaused

    Sync of this device has paused while higher priority (lower sync-group value) device is resyncing.

    {i} DRBD-0.7 / DRBD-8; trailing S or T indicates this node is SyncSource or SyncTarget, respectively.

    WFBitMap{S,T}

    Transitory state when synchronization starts; "dirty"-bits are exchanged.

    SyncSource

    Synchronization in progress, this node has the good data.

    SyncTarget

    Synchronization in progress, this node has inconsistent data.

    PausedSync{S,T}

    see SyncPaused.

    SkippedSync{S,T}

    you should never see this. "Developers only" ;-)

  • st:Local/Remote
    state, the respective node's role for this device.

Primary

the active node; may access the device.

Secondary

the passive node; must not access the device; expects mirrored writes from the other node.

  • Unconfigured

    this is not a role, obviously.

  • ld
    local data consistentency (DRBD-0.7)
    ds
    disk state (DRBD 8)

Diskless

No storage attached, or storage had IO errors previously and got detached.

Attaching

in the process of attaching the local storage

  • Failed

    storage had io errors

    Negotiating

    storage attached, but is not yet decided whether it is UpToDate

    Inconsistent

    storage is Inconsistent (e.g. half way during bitmap based resync)

    Outdated

    storage is consistent, but not UpToDate

    DUnknown

    (peer's) storage state is not known

    Consistent

    storage is consistent, not yet decided whether it is UpToDate or Outdated

    UpToDate

    storage is good

  • ns,nr,dw,dr,...
    statistic counters in number of blocks (1KB) respectively number of requests

ns

network send

nr

network receive

  • dw

    disk write

    dr

    disk read

    al

    activity log updates (0.7)

    bm

    bitmap updates (0.7)

    lo

    reference count on local device

    pe

    pending (waiting for ack)

    ua

    unack'd (still need to send ack)

    ap

    application requests expecting io-completion