ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

10分で Storage Spaces Direct(記憶域スペースダイレクト:S2D)

こんにちは、CRE部 技術支援チームです。

「不安定、高負荷、障害、致命的、エラー、赤い文字、赤ランプ ...」
システム運用している方にとっては、絶対に聞きたくない嫌な言葉ですね。

出来れば発生しないに越したことはありませんが、障害は必ず発生するものとして、有事の際でもシステムの可用性、継続性を確保すべく、様々な手段でシステム設計、構築が行われています。

しかし、可用性向上のためには、冗長化のための追加リソースやソフトウェアのライセンスが必要なケースがほとんどであり、どうしてもその分のコストがかかってしまいます。

ニフクラでは、追加コスト不要で提供している自動フェイルオーバー(HA機能) により物理サーバー障害への一定の冗長性を確保できるのはご存じの通りです。

しかし、基本的にはOSレイヤー以上はお客様の責任範囲であり、お客様自身で冗長性を確保するための要件に応じた設計、構築をいただくことになります。

ロードバランサーやクラスタリングソフトウェアの利用は、よく採用される冗長化の手法ですが、必要なハードウェア、ソフトウェアリソースが増え、共有ストレージを組み合わせての全体設計は複雑になりがちです。

そこで今回は、よりコストをかけず、なるべく少ないリソース/短時間でサーバーとストレージ含めた冗長構成を可能とする、Windowsサーバーの「 Storage Spaces Direct 」(S2D)機能について検証してみます。

Storage Spaces Direct (S2D)とは

Storage Spaces Direct (以降S2D)とは、「記憶域スペースダイレクト」とも呼ばれている技術で、サーバーのローカルディスク領域を使用してクラスター共有ボリューム(CSV)や、スケールアウトファイルサーバー(SOFS)を構成する機能です。 外部に共有ストレージが不要であり、複数のWindowsサーバーのみで構築可能です。

S2Dの仕様および構築要件については、記憶域スペース ダイレクトのハードウェア要件 | Microsoft Learn を参照してください。(外部サイトのため、リンク切れの際はご容赦ください。)

構成イメージ

本検証では、以下構成図の通り環境を実装しています。

検証構成図

検証パターン

今回は、以下2段階の検証としています。

  1. クラスター共有ディスク作成のための、フェールオーバークラスタ―およびS2D環境の構築(項番4, 5, 6, 7)

    • S2Dの構築と動作について確認します。 

  2. ファイルサーバー用途のための増設ディスクと、上記環境への役割追加(項番8)

    • 構築済のS2D環境にて、ディスクリソースと新規役割の動的追加ができることを確認します。

検証環境の補足

  • S2D では、最大16台までのサーバーノードをクラスターに含めることができますが、今回は構築スピードを重視し、サーバー2台の双方向ミラー構成としています。

前提条件

本記事は、以下の前提知識がある方を想定しています。

  • ニフクラの基本的なコントロールパネルの操作、サービス利用に関する知識
  • Windowsの基本的な操作、設定に関する知識
  • ActiveDirectoryの環境構築、操作に関する知識

また、本検証環境の前提は以下となります。

  • Windowsファイアウォールは無効にして検証を実施しています。
  • 各ノード、WindowsUpdateを行っています。
  • ActiveDirectory環境を事前に構築しています。 クラスタリング対象ノードはドメインメンバーとしてドメインに参加させています。

利用リソース

記憶域スペース ダイレクトのハードウェア要件 | Microsoft Learnに記載されているハードウェア要件を満たす環境を用意します。(外部サイトのため、リンク切れの際はご容赦ください。)
今回は、east-13にサーバーを3台(1台AD用、2台クラスタ構成用)作成し、プライベートLANで接続します。また、クラスタ構成サーバー2台に増設ディスクを計8台接続します(詳細は後述)。

リソース 数量
仮想サーバー (OS:Windows Server® 2022 Datacenter) 3
増設ディスク (標準フラッシュドライブ[A/B]) 8 (あとで 2 追加)
プライベートLAN 1

ディスクの本数が8本と、後で2本追加となっているのは下記理由によります。

  • S2Dの構築要件より、最初に1ノードあたり最低4本(今回は2台クラスタのため全体で8本)の増設ディスクが必要
  • ディスクの容量拡張をテストするため、各ノードに増設ディスク1本ずつ(全体で2本)を追加し、ファイルサーバとして公開する用の領域とする

環境構築

1. プライベートLANの作成

サービス、管理兼用のネットワークとして、プライベートLANを作成します。
本検証ではIPアドレス帯を「192.168.1.0/24」としています。

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(プライベートLAN:作成)

2. 仮想サーバーの作成

各サーバーのホスト名と役割は以下の通りです。

ホスト名 役割 プライベートIP
S2DAD ドメインコントローラー(ドメイン、ユーザー管理および認証) 192.168.1.200
S2Dn1 クラスターノード#1(クラスター用ノード1号機) 192.168.1.211
S2Dn2 クラスターノード#2(クラスター用ノード2号機) 192.168.1.212

また、本検証ではサーバーに適用するファイアウォールに以下の通信を許可するよう設定しています。

ファイアウォール設定:S2DAD(ドメインコントローラー)

INルール
プロトコル ポート 接続元 用途
TCP 3389 作業端末のグローバルIPアドレス RDP接続
TCP any 192.168.1.0/24 サーバー間接続

ファイアウォール設定:S2Dn1/S2Dn2(クラスター用ノード)

INルール
プロトコル ポート 接続元 用途
TCP any 192.168.1.0/24 サーバー間接続

作成方法の詳細は以下をご参照ください。 
クラウドヘルプ(サーバーの作成)
クラウドヘルプ(ファイアウォールグループの新規作成)

3. 増設ディスクの作成

S2D用に増設ディスクを作成し、クラスターノード#1,#2にアタッチします。
本検証では、200GBの増設ディスク4本を、下表の通り各ノードに適用しています。

クラスターノード#1用増設ディスク

増設ディスク名 タイプ 容量
S2Dn1disk1 標準フラッシュドライブA 200GB
S2Dn1disk2 標準フラッシュドライブA 200GB
S2Dn1disk3 標準フラッシュドライブA 200GB
S2Dn1disk4 標準フラッシュドライブA 200GB

クラスターノード#2用増設ディスク

増設ディスク名 タイプ 容量
S2Dn2disk1 標準フラッシュドライブB 200GB
S2Dn2disk2 標準フラッシュドライブB 200GB
S2Dn2disk3 標準フラッシュドライブB 200GB
S2Dn2disk4 標準フラッシュドライブB 200GB

作成方法の詳細は以下をご参照ください。
クラウドヘルプ(ディスクの作成)

4. フェールオーバークラスタリング環境の構築

まずは、Storage Spaces Directの動作に必須となる、フェールオーバークラスタリング機能をインストールします。
フェールオーバークラスタリング機能は、クラスターを構成する2台のノード(S2Dn1, S2Dn2)を対象に実装します。

フェールオーバークラスタリング実装イメージ

フェールオーバークラスタリング機能のインストール(作業対象:S2Dn1, S2Dn2)

この手順では、クラスターノード1号機(S2Dn1)での例を掲載しています。
同じ作業をクラスターノード2号機(S2Dn2)でも実施してください。

役割と機能の追加
  • サーバーマネージャーより、「役割と機能の追加」を選択します。

役割と機能の追加

  • 「次へ」を選択します。

役割と機能の追加

  • 「役割ベースまたは機能ベースのインストール」を選択し、次へ進みます。

役割と機能の追加

  • 対象サーバーをサーバープールより選択し、次へ進みます。

役割と機能の追加

  • サーバーの役割は初期状態のまま、次へ進みます。

役割と機能の追加

  • 「フェールオーバークラスタリング」を選択します。

役割と機能の追加

  • フェールオーバークラスタリングに必要な機能を追加します。

役割と機能の追加

  • フェールオーバークラスタリングにチェックが入っていることを確認後、次へ進みます。

役割と機能の追加

  • インストール内容を確認後、「インストール」を選択します。

役割と機能の追加

  • インストール中・・・

役割と機能の追加

  • インストールが完了しましたので、画面を閉じます。

役割と機能の追加

フェールオーバークラスタリング初期セットアップ

S2Dn1, S2Dn2にてフェールオーバークラスタリング機能のインストール後、クラスターを構築していきます。今回は、クラスター対象となるノードである S2Dn1 にてセットアップします。(S2Dn2 でのセットアップは不要です。)

  • 「フェールオーバークラスタ―マネージャー」を起動します。

クラスター構築

  • 左ペインのフェールオーバークラスタ―マネージャーを右クリックし、「クラスターの作成」を選択します。

クラスター構築

  • クラスターの作成ウィザードを進めていきます。「次へ」を選択します。

クラスター構築

  • クラスター対象となるサーバー名を入力します。対象サーバー名を直接入力する、または「参照」よりサーバーを選択します。

クラスター構築

  • 対象のサーバーが選択済となりました。問題なければ次へ進みます。

クラスター構築

  • クラスター作成前に、構成検証テストを行います。ここでは、「はい。~」を選択して次へ進みます。

クラスター構築

  • 次へ進みます。

クラスター構築

  • 推奨である「すべてのテストを実行する」を選択し、次へ進みます。

クラスター構築

  • テスト内容を確認し、次へ進みます。

クラスター構築

  • 検証テスト実行中・・・

クラスター構築

  • テスト完了後、想定外となる結果がないかを確認し、問題なければ「完了」を選択します。

クラスター構築

  • テスト完了後、クラスターの作成ウィザードが再開します。任意のクラスター名、クラスター用のIPをそれぞれ設定し、次へ進みます。

クラスター構築

  • クラスターの作成内容を確認し、問題なければ次へ進みます。今回は、使用可能な記憶域をすべてクラスターへ追加しています。

クラスター構築

  • クラスター作成中・・・

クラスター構築

  • クラスターの作成が完了しました。

クラスター構築

  • クラスター作成直後のフェールオーバークラスタ―マネージャーのTOP画面です。先ほど作成したクラスター名、ノードが2台組み込まれていることや、IPアドレスが確認できます。

クラスター構築

  • ノードメニューからは、登録したノードが稼働中となっていることがわかります。

クラスター構築

フェールオーバークラスタ―の構築は以上で完了です。

5. S2D環境の構築

続いて、S2Dの有効化に進みます。クラスター対象となるノードである S2Dn1 にて実行します。(S2Dn2 での実行は不要です。)

S2D環境の構築イメージ

この作業により、各ノードの増設ディスクを束ねた記憶域プールと、クラスター用仮想ディスクが作成されます。

S2Dの有効化

S2Dの有効化は、PowerShellより実施します。管理者権限にてPowerShellを起動し、以下コマンドを入力します。

PS C:\> Enable-ClusterStorageSpacesDirect
  • コマンド投入後、「Y」を選択し、インストールに進みます。

S2Dの有効化

  • S2D構築中・・・

S2Dの有効化

  • S2Dの有効化が完了しました。今回はキャッシュ用のディスクを構成していませんので、警告メッセージは無視して進めていきます。

S2Dの有効化

  • S2D有効後のフェールオーバークラスターマネージャーの状態です。役割にSDDCグループが追加されています。

S2Dの有効化

  • 記憶域 -> ディスク に、クラスター用仮想ディスクが作成されています。

S2Dの有効化

  • 記憶域 -> プール に、クラスター用プール領域が作成されています。

S2Dの有効化

  • クラスタープール内の物理ディスクとして、「3. 増設ディスクの作成」で作成した増設ディスクが追加されています。

S2Dの有効化

6. 仮想ディスクの構成

S2Dで共有化されたディスクを使用して、仮想ディスクを作成します。

仮想ディスクの作成

  • クラスタープールを右クリックし、「仮想ディスクの新規作成」を選択します。

仮想ディスクの作成

  • 記憶域プールの選択では、作成したクラスター名が選択されていることを確認し、次へ進みます。

仮想ディスクの作成

  • 次へ進みます。

仮想ディスクの作成

  • 仮想ディスク名に任意の名前を指定し、次へ進みます。

仮想ディスクの作成

  • 作成する仮想ディスクのサイズを指定します。今回は「最大サイズ」を選択しています。

仮想ディスクの作成

  • 設定内容が正しいことを確認後、「作成」を選択します。

仮想ディスクの作成

  • 仮想ディスクの作成が完了しました。続けてボリュームを作成するため、「このウィザードを閉じるときにボリュームを作成します」にチェックを入れ、「閉じる」を押してください。

仮想ディスクの作成

7. ボリュームの構成

ボリュームの作成

  • 仮想ディスクの作成後、新しいボリュームウィザードが起動します。次へ進みます。

ボリュームの作成

  • サーバーとディスクの選択画面にて、サーバー一覧より、クラスター名「s2d-cl」を選択します。また、ディスクは先ほど作成した仮想ディスク「s2d-vdisk」を選択し、次へ進みます。

ボリュームの作成

  • ボリュームのサイズを指定し、次へ進みます。

ボリュームの作成

  • 「ドライブ文字またはフォルダ―に割り当てません」を選択し、次へ進みます。

ボリュームの作成

  • ファイルシステムのボリュームラベルに任意の値を入力します。その他パラメーターは既定値で次へ進みます。

ボリュームの作成

  • 設定内容を確認し、問題なければ「作成」を選択します。

ボリュームの作成

  • 新しいボリュームウィザードが完了しました。「閉じる」を選択します。

ボリュームの作成

  • 記憶域 -> ディスク メニューから、今回作成したクラスター仮想ディスク(s2d-vdisk)を右クリックし、「クラスターの共有ボリュームへの追加」を選択します。

ボリュームの作成

  • クラスターの共有ボリュームへの追加後、対象仮想ディスクが、「クラスターの共有ボリューム」として適用されていることが確認できます。

ボリュームの作成

  • 以上でS2Dに関する基本的な構築は完了です。各ノードのCドライブ直下に、「ClusterStorage」というフォルダが作成され、今回作成した仮想ディスク「s2d-vdisk」が使用できる状態になっています。

ボリュームの作成

8. ファイルサーバーの役割追加

ここまでで S2D の基本的な構築過程は完了です。
ここからは容量拡張のテストのために増設ディスクを追加し、機能追加テストとしてファイルサーバーの役割を追加してみます。

ファイルサーバーの役割追加イメージ

増設ディスクを各ノードに追加後、記憶域プールからファイルサーバー用仮想ディスクおよびボリュームを切り出します。

ファイルサーバーの役割追加

  • サーバーマネージャーより、「役割と機能の追加」を選択し、ファイルサーバーの役割を追加します。(詳細手順は前段で説明済のため、割愛します。)

ファイルサーバーの役割追加

増設ディスクの追加

  • 現状況ではファイルサーバー用のディスク空き領域がありませんので、コントロールパネルより、増設ディスクを S2Dn1, S2Dn2 にそれぞれ1台ずつ追加します。

増設ディスクの追加

  • フェールオーバークラスターマネージャー より、追加のディスクが 既存クラスタープールに認識され自動的にプールへ追加されていることが確認できます。空き領域、容量も追加分が反映されています。

増設ディスクの追加

クラスターの役割追加

  • フェールオーバークラスターマネージャー より、「役割の構成」を選択します。

クラスターの役割追加

  • 次に進みます。

クラスターの役割追加

  • 役割の選択から「ファイルサーバー」を選び、次へ進みます。

クラスターの役割追加

  • 「汎用ファイルサーバー」を選択し、次へ進みます。

クラスターの役割追加

  • クライアントアクセスポイント用の任意の名前、IPアドレスを設定し、次へ進みます。

クラスターの役割追加

  • 次に、クラスタープールを右クリックし、「仮想ディスクの新規作成」を選択します。

クラスターの役割追加

  • 記憶域プールを選択し、次へ進みます。

クラスターの役割追加

  • ファイルサーバー用の任意の仮想ディスク名を指定し、次へ進みます。

クラスターの役割追加

  • 仮想ディスクのサイズを指定します。今回は100GB を指定しました。

クラスターの役割追加

  • 設定内容を確認し、「作成」を選択します。

クラスターの役割追加

  • 仮想ディスクの作成が完了しました。

クラスターの役割追加

  • 続けて、ファイルサーバー用のボリュームを作成します。先ほど作成した仮想ディスクを選択し、次へ進みます。

クラスターの役割追加

  • ボリュームのサイズを確認し、次へ進みます。

クラスターの役割追加

  • 任意のドライブ文字を指定し、次へ進みます。

クラスターの役割追加

  • 任意のボリュームラベルを指定し、次へ進みます。

クラスターの役割追加

  • 設定内容を確認し、「作成」を選択します。

クラスターの役割追加

  • ボリュームの作成が完了しました。

クラスターの役割追加

以上で、クラスターのファイルサーバー機能追加が完了しました。

動作確認

これまで作成した環境で、実際に動作を確認していきます。

正常稼働時

  • クラスター共有ストレージでファイルの読み書きと、ノード間ファイル共有が問題ないかを確認します。

    • S2Dn1 でテスト用テキストファイルを作成、ファイル更新します。

動作確認

  • S2Dn2 で同じファイルを開きます。内容が共有されていることが確認できます。

動作確認

  • S2Dn2 でもファイル内容を更新します。

動作確認

  • S2Dn1 で再度ファイルを開きます。内容が共有されていることが確認できます。

動作確認

  • 次に、ファイルサーバーでのファイル共有に問題ないかを確認します。

    • S2DAD からファイルサーバーにアクセスし、テスト用テキストファイルを作成、ファイル更新します。

正常時のファイルサーバーアクセス経路

動作確認

  • 各サービス、問題なく使えることが確認できました。

S2Dn1 ノード障害

  • クラスターを構成しているノード1台が障害となった場合の動作を確認します。

    • 記憶域 -> ディスク メニューから、各仮想ディスクの所有者ノードを確認します。(すべて S2Dn1 が所有者になっています。)

動作確認

  • S2Dn1 をシャットダウンします。

ノード障害

  • シャットダウン後、S2Dn2 にて各仮想ディスクの所有者を確認します。すべて自ノードに切り替わっています。

動作確認

  • クラスター共有ストレージにアクセスします。ファイルの表示、更新ができることを確認します。

動作確認

  • S2DAD からファイルサーバーにアクセスし、ファイルの表示、更新ができることを確認します。

S2Dn1障害発生時のファイルサーバーアクセス経路

動作確認

  • 1ノード障害においても、継続して各サービスが使えることが確認できました。ちなみに、ノードシャットダウン後のクラスターIP、ファイルサーバー用IPのPING断時間はいずれも5秒以内でした。

S2Dn2 ノード障害

  • もう一方のノード1台が障害となった場合の動作を確認します。

ノード障害

  • S2Dn2 をシャットダウン後、クラスター共有ストレージ、ファイルサーバーのファイル表示、更新ができることを確認します。

S2Dn2障害発生時のファイルサーバーアクセス経路

  • 結果、 S2Dn1 と同様でしたので詳細は割愛しますが、もう一方のノード障害パターンにおいても、継続して各サービスが使えることが確認できました。

まとめ

簡単ではありましたが、S2D の構築と動作確認を実施しました。冗長化方式やネットワークの構成方法等、オプションや検討事項は多岐にわたりますが、今回のシンプルな構成をやってみた限り、比較的簡単に実装まで完了できたと思います。クラスターノードやディスク追加によるリソース拡張も容易であり、HCI(ハイパーコンバージドインフラストラクチャ)のような運用も可能です。コスト面では、要件を満たすWindowsサーバーがあれば良い点、共有ストレージ不要でストレージを含めたクラスターが構成可能な点、将来の需要に伴って拡張していくスモールスタートが可能な点など、メリットが多数あります。サーバー冗長化について課題をお持ちの方、ご検討いただいている方の参考になれば幸いです。

参考までに、構築にかかった時間は以下となります。
※一通り構築を実施して手順をまとめた後の再構築時の時間です。初見での構築はもう少しかかると思います。
※OSインストールやディスク作成、AD環境構築の時間は含みません。

  • フェールオーバークラスターの役割追加 2分
  • フェールオーバークラスタ―の初期設定 3分
  • S2Dの構成 1分
  • 仮想ディスクの作成 1分
  • ボリュームの作成 2分
  • ファイルサーバーの構築 2分

11分... (タイトルで嘘をついてしまいました。申し訳ございません。)

ここまで読んでいただきありがとうございました!

注意事項

  • 本記事については検証結果の1つとなります。実際に検討される場合は、事前にそれぞれの要件を確認の上、実装してください。
  • 構築時間10分(実測11分)については、OSのインストール時間、ActiveDirectoryの構築、ドメイン参加を含まない時間となります。あくまで参考時間としてください。
  • 本検証はクラスタリング構成を実装するため仮想IPが付与されることとなります。 クラスタリング対象のサーバーにグローバルIPアドレスを付与したままの場合は十分に注意して構築を行ってください。ニフクラの禁止事項に抵触する可能性があります。ご参考:クラウド 機能・サービス(禁止事項) | ニフクラ
  • ニフクラ上での再仮想化は禁止事項となっております。
  • 本記事ではOS上の操作についても記載していますが、ニフクラではOS以上はご利用者様の責任範囲となりますのでご留意ください。
  • 本記事での各ソフトウェアの設定パラメーターはテスト用となります。実際に構築される場合は、使用するネットワークの冗長化や、アクセスを許可するネットワークの限定など、要件に応じた設定を検討してください。
  • 本記事で記載した各サービス/ニフクラの機能等は、2022年10月時点の情報です。利用時には各サービス/ニフクラの機能の最新情報をご確認いただきご利用ください。