Azure Stack HCI の場合は、デプロイ時に自動的に S2D の領域が構成されていますが、Windows Server では一から設定していく必要があります。
Windows Server で記憶域スペースダイレクト (Storage Spaces Direct: S2D) の検証を実施する際に、環境構築 / 検証の参考となる情報をまとめておきたいと思います。
Contents
ドキュメント
基本動作を確認するためのドキュメント
S2D の基本的な動作を確認するためのドキュメントとしては次のドキュメントが参考になります。
- 記憶域スペース ダイレクトの概要: Windows Server のストレージのドキュメントツリー
- 記憶域スペース ダイレクトの概要: Azure Stack HCI のドキュメントツリー
同じドキュメントのタイトルではありますが、どの製品のドキュメントツリーかによって表示される内容が異なっています。
全てのドキュメントを確認したい場合は Windows Server のドキュメントツリーを確認し、ポイントを押さえておきたい場合には、Azrure Stack HCI のドキュメントツリーを確認するとよいかと思います。
S2D はサーバー間でデータの同期を行い、ボリュームから切り出した仮想ディスクを共有ディスクとして取り扱うことができる機能となりますが、基本的な考え方については記憶域スペースと共通している内容もあるため、記憶域スペースについての情報も参考となるものがあります。
ホワイトペーパー
動作確認をする際の検証済みのホワイトペーパについては次の 2 つのドキュメントが参考になります。
- Windows Server 2012 R2 記憶域スペースのアーキテクチャーと設計・管理のベストプラクティス
- Windows Server 2016 新機能 「記憶域スペースダイレクト」とLenovo x86サーバーで実現するハイパーコンバージド・インフラストラクチャ
前述のとおり、記憶域スペースと共通の考え方があるため、記憶域スペースのホワイトペーパーも参考となります。
性能面や処理中の負荷については、Lenovo の検証結果が参考になります。
内部動作
内部動作については次の記事も参考となります。
- Deep Dive: The Storage Pool in Storage Spaces Direct
- Windows Server 2016: Introducing Storage Spaces Direct
検証環境の構築
S2D で使用するクラスターの構築方法 (ワークグループクラスター)
S2D はクラスター環境が必要となりますが、クラスターについてはワークグループクラスターでも S2D を構築することができます。
本ブログでは、Windows Server 2025 のワークグループクラスターのライブマイグレーションと関連情報 (2024/03/28 時点) として直近の情報をまとめています。
ワークグループクラスターは容易に構築することができますので、S2D の基本動作を確認する場合のクラスターとしては最適ではないでしょうか。
仮想環境を使用した検証環境の構築
S2D の検証を実施する際、基本的な機能検証としてディスク交換 / ノード追加などを実施することがあるかと思います。このような検証を容易に行う場合には仮想環境で構築したほうが、検証の利便性は高いのではないでしょうか。
S2D の用途としては、仮想マシンの配置に使うことが大半かと思いますので Hyper-V の実行基盤としての利用も視野に入れる必要があります。
Hyper-V 上で検証するのであれば、入れ子になった仮想化 (Nested Hyper-V) による検証が良いかと思いのではないでしょうか。
仮想マシンとして検証環境を構築しておけば、ディスク削除によりディス交換や新規ノードの追加の検証についても柔軟に実施することができます。
作成した S2D のボリュームで SQL Server の構築を実行する場合は次の情報が参考となります。
S2D の有効化とボリュームの作成
必要となるディスクの本数
S2D で必要となるディスク本数については、次のドキュメントに記載されています。
仮想環境で展開する場合、最小ドライブ数は 2 となっており、S2D 用に 2 本の仮想ディスクを接続しておけば S2D を構成することができます。
S2D の有効化 (記憶域プールの作成)
S2D の有効化については次のドキュメントが参考となります。
クラスターを構築した後であれば、必要な機能を追加し、S2D で使用するディスクを接続した状態で「Enable-ClusterStorageSpacesDirect」を実行すれば、既定の名称 (S2D on <クラスター名>) で記憶域プールの作成と、作成された記憶域プールに対しての使用可能なディスク追加が行われます。
S2D の有効化に細かなパラメーターを指定したい場合には、Enable-ClusterStorageSpacesDirect を確認するとよいのではないでしょうか。
ボリュームの作成
S2D は、作成された記憶域プールに対して、ボリュームを作成することでボリューム名の仮想ディスクが作成されます。
ボリュームの作成については次のドキュメントが参考となります。
ボリューム作成時には、いくつかのパラメーターが指定できますが、サイズだけを指定した場合、記憶域プールに追加されているディスクやクラスターのノード数に応じて自動的にパラメーターが設定されて実行されています。
設定可能なパラメーターについては New-Volume で確認ができます。
ボリュームの設定
パラメーターを省略した場合には、クラスターのメンバーのノード数や記憶機プールに追加されているディスクによって自動的にパラメーターが構成されてボリュームが作成されます。
S2D のボリュームの回復性の設定については、ボリューム作成時のノード数に応じて自動的に設定が行われます。
回復性の設定
- 2 ノード
- 双方向ミラー
- ResiliencySettingName=Mirror / NumberOfDataCopies=2
- 3 ノード
- 3 方向ミラー
- ResiliencySettingName=Mirror / NumberOfDataCopies=3
ボリュームの設定
- 2 ノード / 3 ノード共通
- NumberOfColumns: 接続されているディスク数 (8 が上限)
- PhysicalDiskRedundancy: 2
- Interleave: 256 KB
パラメーターについては、New-Volume / STORAGE_DEVICE_RESILIENCY_DESCRIPTOR構造体 (winioctl.h) が参考になります。
ノード / ディスクの追加方法
S2D はハイパーコンバージドの構成が取れるため、ディスク増強のためにノード / ディスク追加を行うケースがあります。
の追加方法については次のドキュメントが参考となります。
- Azure Stack HCI の単一サーバー スケールアウト
- Azure Stack HCI バージョン 23H2 にサーバーを追加する
- サーバーまたはドライブを記憶域スペース ダイレクトに追加する
ノードを追加した場合、追加ノードに接続されているローカルディスクにも自動的に記憶域スペースに追加が行われえますが、私が確認した際にはノード追加後、25 分程度しないと自動的に追加が行われませんでした。即時追加したい場合には、Add-PhysicalDisk を使用して手動で追加するとよいかと。
追加したディスクについては、バックグランドタスクで自動的に均衡化され最適化が行われますが、ドライブまたはサーバーの追加後のドライブ使用率の最適化 に記載されている Optimize-StoragePool を実行することで手動で最適化を開始することができます。
追加されたディスクの使用状況については、Show-PrettyPool で確認ができますので、どのディスクにどれだけのデータが格納されているかを確認したい場合にはこのようなスクリプトを活用するとよいのではないでしょうか。
トラブルシューティング
トラブルシューティングについては次のドキュメントが参考となります。
コマンドレットとしては Get-StorageJob / Get-HealthFault も活用できるかと。