WindowsでDRBD

DRBDはLinuxで開発されています。LinuxのカーネルモジュールとしてDRBDは動作するため、他のUnixシステムやWindowsでの動作はできなかったのですが、Windowsでも動作するバージョンが2017年ぐらいから開発が始まり、ようやく安定して動作するバージョンが公開されました。

現在入手可能なWindows用のDRBD(DRBD 9 Windows Driver、WinDRBD)は1.0 RCでこちらのURLからダウンロードできます。RC7は残念ながら安定していません。RC6をお試しください。(2020年10月23日時点)

できること

WinDRBDでできることは、データドライブのデータ同期で、同期先としてWindows、Linuxを選べます。

Windowsのマシンを2台用意して、それぞれのE:ドライブをアクティブ・スタンバイ方式でデータ共有することができます。アクティブなノードでは、E:ドライブにDRBDで同期したデータがマウントされます。このノードが停止してもスタンバイノードでE:ドライブをマウントすると、同じデータにアクセスできます。

 

 

WindowsとLinuxのマシンをそれぞれ使った場合は、WindowsのデータをLinux上にバックアップできます。Windowsのストレージが故障しても、Linuxの方に残っているので、そこからデータを復元できます。

CドライブをDRBDで同期することも可能です。詳細はこのURLから構築資料をダウンロードして下さい。ディスクレスのシステムとしてWindowsを動作させて、CドライブはLinux上のDRBDの共有領域に置くことができます。

インストール方法の概要

LINBITのサイトで公開されているユーザーズガイドはこちらのURLからダウンロードできます。この資料からWinDRBDのインストール方法の概要を解説します。WinDRBDはWindows 10 enterprise evaluation版にインストールします。

Windows 10はこちらのURLからダウンロードしてインストールします。DRBDの同期先として、Linuxサーバを別途CentOS7で構築します。

Windows10から前述のWinDRBD 1.0 RC 6をインストールします。LINBITからダウンロードできるファイルはWindowsのインストーラーになっているので、Windowsアプリのインストール経験がある方なら悩むことは無いと思います。

次にDRBDで管理するデバイスを設定します。「ハードディスクパーティションの作成とフォーマット」のツールを起動して、DRBDで同期したいデータ領域を作成します。ここで作成したボリュームはフォーマットしないでください。

下図はDRBD用のボリュームとしてEドライブを定義しているところです。EドライブはWindowsからアクセスしないためフォーマットしません。

ディスク次に、WindowsのFirewallの設定を行います。WinDRBDで使用するポート番号を許可します。ポート番号はDRBDの設定に書かれています。今回の例では7600ですのでTCPのこの番号のポート番号を受信・送信とも許可してください。

DRBDはWindowsで動作しますが、Linux版とソースコードを合わせるために互換環境であるCygwinのインストールが必要になります。こちらのURLからインストーラをダウンロードしてインストールして下さい。

CygwinをインストールするとWindowsのデスクトップに「Cygwin65 Terminal」というエイリアスが作成されます。これを”管理者して実行”してください。(一般ユーザではDRBDのコントロールはできません。)

Cygwinのターミナル内で、viエディタを使ってDRBDの設定ファイルを作成します。

$ vi /cygdrive/c/windrbd/etc/drbd.d/r0.res

今回作成したリソース名がr0なので設定ファイルをr0.resとしています。

ファイルの内容は次のようになります。

include "global_common.conf";

resource r0 {
        protocol        A;
        net {
                use-rle no;
        }

        on linuxhost {
                address         192.168.3.190:7600;
                node-id 1;
                volume 0 {
                        disk            /dev/sdb1;
                        device          /dev/drbd0;
                        flexible-meta-disk      internal;
                }
        }

        on DESKTOP-HQAH0LC {
                address         192.168.3.236:7600;
                node-id 2;
                volume 0 {
                        disk            "E:";
                        device          "F:" minor 0;
                        meta-disk       internal;
                }
        }
}

on DESKTOP-HQAH0LC {}の部分がWinDRBD特有の記述になります。diskとdeviceの書き方に注意してください。”E”;は先のディスク管理ツールで設定しフォーマットしなかったボリューム名になります。ポート番号は7600であることがわかります。
また、設定の中でホスト名が書かれています。(DESKTOP-HQAH0LC、linuxhost)ホスト名からIPアドレスを変換する必要があり、hostsファイルやDNSを設定します。

設定ファイルができたら、あとはLinux版と同様にメタデータを作成して、初期同期を開始します。

$ drbdadm create-md r0
$ drbdadm up r0
$ drbdadm --force primary r0
$ drbdadm status r0
r0 role:Secondary
  disk:UpToDate
  linuxhost role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:14.20

初期同期が始まりました。初期動機は始まればDRBDで管理している”F:”ドライブをフォーマットして、Winodwsから利用できます。

WindowsのDRBDを停止すると、Linuxサーバの方でもNTFSのデバイスとしてアクセスができます。

[root@linuxhost ~]# mount /dev/drbd0 /mnt
[root@linuxhost ~]# df
ファイルシス            1K-ブロック    使用  使用可 使用% マウント位置
devtmpfs                     929368       0  929368    0% /dev
tmpfs                        941172       0  941172    0% /dev/shm
tmpfs                        941172    9064  932108    1% /run
tmpfs                        941172       0  941172    0% /sys/fs/cgroup
/dev/mapper/centos-root     6486016 1463580 5022436   23% /
/dev/sdb1                   1038336  197636  840700   20% /boot
tmpfs                        188236       0  188236    0% /run/user/0
/dev/drbd0                  3071864   18756 3053108    1% /mnt
[root@linuxhost ~]# cd /mnt
[root@linuxhost mnt]# ls
install-windrbd-1.0.0-rc6-signed.exe

LinuxでNTFSファイルシステムをマウントするとためにはntfs-3gパッケージが必要になります。