現: 2009-08-19 (水) 00:51:37 maruo[3] [4] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | [[Gentoo Linuxな生活/システム管理関連]] | ||
+ | *DRBDとは? [#v1a70cac] | ||
+ | Linuxのカーネルドライバで、ネットワークを経由したディスクのミラーリングを行ってくれます。実際のディスクと、仮想ファイルシステムの間に割り込み、設定したネットワークの向こうにいるミラー先に書いたあと、ローカルのディスクにも書き込んでくれるという優れもの。つまりネットワークを介して、2台のホストで動かすRAID1というところなのです。 | ||
+ | |||
+ | *でわ設定 [#z2c271f6] | ||
+ | 仮にここでは、SRV1(IP:192.168.1.1),SRV2(IP:192.168.1.2)というホストの2台で行うと仮定しますね | ||
+ | **インストール [#j1ed1a69] | ||
+ | PowerPCでは、DRBDはMaskedされておりました。なので、玄箱、現用サーバの双方でpackage.keywordsに | ||
+ | sys-cluster/drbd ~x86 | ||
+ | もしくは | ||
+ | sys-cluster/drbd ~ppc | ||
+ | を書き込んで、同一バージョンのDRBDを導入してやります。2006年3月6日時点では、0.7.16が最新らしい | ||
+ | # emerge drbd | ||
+ | インストール完了~ | ||
+ | |||
+ | **設定 [#sa2aaa07] | ||
+ | ***DRBD用物理ディスクを作る [#mfd88b72] | ||
+ | DRBD用の物理領域を作ってやります。おいちゃんはLVM上にパーティションを切ってやりました | ||
+ | #lvcreate -L15G -ndrbd lvm | ||
+ | これで15Gbyteのdrbdという論理ボリュームが作られました。SRV1,SRV2で実施します | ||
+ | **DRBD用設定ファイルを作る [#e958bb9f] | ||
+ | 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とデバイスの設定。 | ||
+ | |||
+ | ***仮想ディスクデバイススペシャルファイルの追加 [#s42f59fc] | ||
+ | Linux2.6でudev使ってる場合は、勝手に作られます。ああ、便利~。そうでない場合は、MAKEDEVで作る必要があります。 | ||
+ | ***DRBDをSRV1で起動させる [#j817d1d2] | ||
+ | # /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 | ||
+ | ***DRBDをSRV2で起動させる [#hcb052d9] | ||
+ | 同じdrbd.confをSRV2にもコピーしてやって、 | ||
+ | # /etc/init.d/drbd start | ||
+ | コネクションが確立すると、LANのアクセスランプがピカピカ光って、HDをがりがりアクセスし始めます。お互いのディスクの同期を開始いたします。これは最初の1回で終了。同期完了したら、あとはこの動作はいたしません。 | ||
+ | *DRBDのディスクをマウントしてみる [#if334511] | ||
+ | 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でも見えますか?しかも普通にディスクとして使えていますか?アイディアは誰でも考え付きますが、この動作はなかなか感動ですよね… |
(This host) = https://femt.ddo.jp