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パッケージが必要になります。