Gentoo Linuxな生活​/システム管理関連

DRBDとは? anchor.png

Linuxのカーネルドライバで、ネットワークを経由したディスクのミラーリングを行ってくれます。実際のディスクと、仮想ファイルシステムの間に割り込み、設定したネットワークの向こうにいるミラー先に書いたあと、ローカルのディスクにも書き込んでくれるという優れもの。つまりネットワークを介して、2台のホストで動かすRAID1というところなのです。

Page Top

でわ設定 anchor.png

仮にここでは、SRV1(IP:192.168.1.1),SRV2(IP:192.168.1.2)というホストの2台で行うと仮定しますね

Page Top

インストール anchor.png

PowerPCでは、DRBDはMaskedされておりました。なので、玄箱、現用サーバの双方でpackage.keywordsに

sys-cluster/drbd ~x86

もしくは  sys-cluster/drbd ~ppc を書き込んで、同一バージョンのDRBDを導入してやります。2006年3月6日時点では、0.7.16が最新らしい

# emerge drbd

インストール完了~

Page Top

設定 anchor.png

Page Top

DRBD用物理ディスクを作る anchor.png

DRBD用の物理領域を作ってやります。おいちゃんはLVM上にパーティションを切ってやりました

#lvcreate -L15G -ndrbd lvm

これで15Gbyteのdrbdという論理ボリュームが作られました。SRV1,SRV2で実施します

Page Top

DRBD用設定ファイルを作る anchor.png

DRBD用設定ファイルの雛形を持ってきます

# zcat /usr/share/doc/drbd-0.7.16/drbd.conf.gz > /etc/drbd.conf

編集してやります。最低限の設定を。

resource drbd0 {
# プロトコルの設定
# C:対向ホストの書き込み完了を持って転送完了とする
# B:対向ホストのデータ受信完了を持って転送完了とする
# A:対向ホストへのデータ転送を持って転送完了とする
protocol B;
startup {
   degr-wfc-timeout 60;    # 2 minutes.
}
disk {
   # IOエラーが発生した場合。pass_on,panic,detachが選べる。
   # pass_on 上位レイヤに通知
   # panic カーネルパニックになる
   # detach ディスクレスモードで動作
   on-io-error detach;
   size 15G;
}
net {
   # 接続が切れた場合。reconnect:再接続,stand_alone:1台だけで継続、freeze_io:IOを止める
   on-disconnect reconnect;
}
syncer  {
   # データ同期の転送レート。5MByte/sec
   rate 5M;
   group 1;
   # エクステントサイズ。データ同期時に重要らしい。玄箱ではこれ以上上げられなかった…
   al-extents 7;
}
on SRV1 {
   device     /dev/drbd0;
   disk       /dev/lvm/drbd;
   address    192.168.1.1:7788;
   meta-disk  internal;
}
on SRV2 {
   device     /dev/drbd0;
   disk       /dev/lvm/drbd;
   address    192.168.1.2:7788;
   meta-disk  internal;
}

さて。わかりましたかねぇ?resourceのはデバイスの設定と一緒。プロトコル、ディスク同期の時間、同期させる2台のサーバのIPとデバイスの設定。

Page Top

仮想ディスクデバイススペシャルファイルの追加 anchor.png

Linux2.6でudev使ってる場合は、勝手に作られます。ああ、便利~。そうでない場合は、MAKEDEVで作る必要があります。

Page Top

DRBDをSRV1で起動させる anchor.png

# /etc/init.d/drbd start

lsmodうつと、DRBDのデバイスがロードされているのが分かります。/proc/drbdというprocファイルも追加されているのが分かります。catで見てみると

version: 0.7.16 (api:77/proto:74)
SVN Revision: 2066 build by XXXX@XXXX, 2006-03-01 00:11:21
0: cs:WFConnection st:Secondary/Unknown ld:Consistent
   ns:1316624 nr:460 dw:1317084 dr:482244 al:30607 bm:16 lo:0 pe:0 ua:0 ap:0

セカンダリモードで、接続待ちしてるのが分かります。この時点で、/dev/drbd0が使用可能になっているので、後は普通にディスクを使用する気持ちでフォーマットしてやります。おいちゃんはreiserfsを使用したので

# mkreiserfs /dev/drbd0
Page Top

DRBDをSRV2で起動させる anchor.png

同じdrbd.confをSRV2にもコピーしてやって、

# /etc/init.d/drbd start

コネクションが確立すると、LANのアクセスランプがピカピカ光って、HDをがりがりアクセスし始めます。お互いのディスクの同期を開始いたします。これは最初の1回で終了。同期完了したら、あとはこの動作はいたしません。

Page Top

DRBDのディスクをマウントしてみる anchor.png

version: 0.7.16 (api:77/proto:74)
SVN Revision: 2066 build by XXXX@XXXX, 2006-03-01 00:11:21
0: cs:Connected st:Secondary/Secondary ld:Consistent
   ns:1316624 nr:460 dw:1317084 dr:482244 al:30607 bm:16 lo:0 pe:0 ua:0 ap:0

両方ともセカンダリモードで、接続が確立しています。片方をプライマリモードにしないと、動作開始が出来ませんので、SRV1で以下のコマンドを売ってみましょう

# drbdadm primary drbd0

ここでのdrbd0は、drbd.confのresource項で書いた名前ね… するてーとSRV1では

version: 0.7.16 (api:77/proto:74)
SVN Revision: 2066 build by XXXX@XXXX, 2006-03-01 00:11:21
0: cs:Connected st:Primary/Secondary ld:Consistent
   ns:1316624 nr:460 dw:1317084 dr:482244 al:30607 bm:16 lo:0 pe:0 ua:0 ap:0

SRV2では

 version: 0.7.16 (api:77/proto:74)
SVN Revision: 2066 build by XXXX@XXXX, 2006-03-01 00:11:21
0: cs:Connected st:Secondary/Primary ld:Consistent
   ns:1316624 nr:460 dw:1317084 dr:482244 al:30607 bm:16 lo:0 pe:0 ua:0 ap:0

となって、SRV1がプライマリディスクになったことが分かります。SRV1側では、/dev/drbd0が普通にディスクとしてマウントできるようになります。

# mount /dev/drbd0 /mnt/drbd

これで、/mnt/drbdに書き込むと、SRV2にもコピーされます。確認するためにSRV1側で

# umount /mnt/drbd
# drbdadm secondary drbd0

SRV2で

# drbdadm primary drbd0
# mount /dev/drbd0 /mnt/drbd

とやってみましょう。SRV1で書き込んだ内容が、SRV2でも見えますか?しかも普通にディスクとして使えていますか?アイディアは誰でも考え付きますが、この動作はなかなか感動ですよね…


Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 2701, today: 1, yesterday: 0
Princeps date: 2009-08-19 (Wed) 00:51:37
Last-modified: 2009-08-19 (Wed) 00:51:37 (JST) (4011d) by maruo
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード