WinDRBD経由でディスクレスWindowsクライアントを起動する

    WinDRBDに関する前回のブログ記事を投稿してから今日まで何をしていたかというと、WinDRBDデバイス上でWindowsを起動できるようにするために一生懸命に取り組んでいました。リモートDRBDデバイスはLinuxマシンでホストできるため、きめ細かなスナップショットなどの高度な機能をWindowsクライアントでもすぐに利用できます。これは、論理ボリュームマネージャー(LVM)などのLinux機能を使用することで実現できます。さらに、(クライアントにバックアップディスクを使用した)ディスクフル操作の追加機能も、間もなく実装予定です。

    ブート機能を実装したことにより、アプリケーションへのインターフェースが変更になりました。WinDRBDデバイスでは、SCSIディスクモードとRawモードの2つのモードをI/Oに使用できます。

    SCSIディスクモード

    WinDRBDはSCSIポートデバイスとして機能するようになりました。Windows(プラグ アンド プレイ マネージャー)は、WinDRBDドライバーの上にディスクドライバーとPartmgrドライバーをスタックします。このデバイスは、標準のWindowsツールでパーティション化できます。

    DISK.SYSドライバーはデバイススタックにあるため、文書化されていないI/O制御要求を使用するWindowsアプリケーションは動きます(これはwinsatでテスト済みです)。
    但し、次の3つの点に注意する必要があります。

    • まずデバイスをパーティション化する必要があります。パーティションテーブルがないと、ディスクを単一のパーティションとして使用することはできません。Linuxでは、kpartxutilityを使用してパーティションにアクセスします。
    • システムに仮想バスデバイスがインストールされている必要があります。今のところ、これはDeviceManagerを介して手動で行う必要があります。インストーラーでこれを自動化できるよう取り組んでいます。
    • ドライバーのアンロードは現在サポートされていません。WinDRBD仮想バスがインストールされている状態で動作するかどうかは不明です。

     

    一方、SCSIデバイスを使用するとマウントポイントの処理が容易になり、より多くのWindowsアプリケーションを使用できるようになるため、デバイスで使用されている(すべてではないにせよ)ほとんどのファイルシステムが利用可能になります。

    ディスクデバイスを設定するには、以下のようにdrbd.confのdevice句でマウントポイントを省略します(マウントポイントはマウントマネージャーで管理され、パーティションマネージャーで割り当てられています)。

    device minor 42;

    Rawデバイス

    rawモードは、0.9以前のリリースから知られているモードです。WinDRBDドライバーによって非PPブロックデバイスが作成され、マウントポイントが割り当てられます。このモードでは、文書化されていないioctl呼び出しを使用するため、一部のWindowsアプリケーションが動作しない場合があります。一方、デバイス上にパーティションテーブルを作成する必要はありません。デバイスはNTFSで直接フォーマットできます(他のファイルシステムは動作する場合と動作しない場合があります)。

    ブロックデバイス上のデータにアクセスするために、マウントポイント(通常はドライブレター)がドライバーによって割り当てられます。このマウントポイントは、リソースが設定されているdrbd.confに設定されます。例としては、以下のようになります。

    device "F:" minor 42;

    この例では、ブロックデバイスはドライブレターF下でアクセスできます。

    役割をプライマリーに設定するのを忘れずに

    rawモードでもディスクモードでも、デバイスはリソースがプライマリーの場合にのみ作成されます。リソースがセカンダリーの場合はWindowsデバイスなどがないため、クラスター内にセカンダリーしかない場合はデータへの読み取り専用アクセスもありません。これは、現時点では自動プロモーションがサポートされていないということでもあります。デバイスを作成するには、次のコマンドを(管理者として)実行します。

    drbdadm primary r0

    すると、デバイスが表示されます。ディスクデバイスはパーティションマネージャー(パーティション化できる場所)に表示され、RAWデバイスはドライブレターの下に表示されます。

    ブート機能の現在のステータス

    主にWinDRBDデバイスからWindowsを起動させるために、SCSIポートデバイスのインターフェースを実装しました。これはすでに非常にうまく機能しています。Windowsが正しくインストールされ、設定されていれば、(Linuxベースの)WinDRBDデバイスから起動することができます。

    現在、1.0のリリースに向けて、ドライバーの安定性確保に注力しています。また、いくつかのマイナーな機能(複数のピアへの接続など)がブート機能に含まれていませんが、WinDRBD 1.0のリリース前に追加する予定です。

    ご協力ください

    現在もベータ版のテスト実施者を募集していますので、ぜひご協力ください。WinDRBDブート機能をテストするには、まずVirtualBoxイメージを使用してWinDRBD経由でWindowsを起動する方法を説明した技術ガイドをお読みいただくのがいいと思います。この技術ガイドは https://www.linbit.com/tech-guides-overview/からダウンロードできます。

    また、WinDRBDがまだサポートしていない機能をリクエストしていただけると、次に追加すべき機能がわかるので助かります。

    ご連絡お待ちしています。

    – Johannes

     

    ソフトウェア定義ストレージ、高可用性、災害復旧ソフトウェアの世界的なリーディングプロバイダーであるLINBITは、コンテナ化された環境、仮想環境、ベアメタル環境にサーバークラスタリング機能を付加しています。

    LINSTOR®、DRBD®、LINBIT®、およびロゴのLINSTOR®、DRBD®、LINBIT®は、オーストリア、米国およびその他の国におけるLINBITの商標または登録商標です。
    Copyright © 2020 LINBIT All rights reserved.

     

    ※こちらの記事はLINBIT社のブログを翻訳した内容になります。

    記事原文: