【Windows Server上級 第7回】Software Defined Storage。記憶域スペースダイレクト (S2D) の構築とHCIへの道

「高いSANストレージはもう買わない」という選択肢。

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回は、PowerShell DSCによる「Infrastructure as Code (IaC)」を学びました。
サーバーの設定がコード化できたなら、次は「ハードウェアの制約」からも解放されたくありませんか?

仮想化基盤を作るとき、一番お金がかかるのは何でしょうか?
そう、「共有ストレージ(SAN)」です。
ファイバーチャネルスイッチを張り巡らせ、数千万円の専用ストレージ筐体を買う……。
Linuxエンジニアなら「Ceph使えば汎用サーバーだけで組めるのに」と思うところですよね。

コウ君

先生、見積書を見て震えてます。
新しい仮想基盤のストレージだけで予算オーバーです。
上司は「信頼性が大事だから専用機を買え」って言うんですけど、SPOF(単一障害点)にならないように二重化したらさらに倍額で……。
Windows Serverにも、サーバーの内蔵ディスクを束ねて共有ストレージにする機能はないんですか?

リナックス先生

コウ君、その悩み、Windows Serverだけで解決できるわ。
「記憶域スペースダイレクト (S2D: Storage Spaces Direct)」という機能を使えばね。
これはまさにWindows版のCephよ。
各サーバーのローカルディスクをネットワーク越しに束ねて、巨大な一つの仮想ストレージを作る技術。
これを使えば、高価なSANストレージは不要になるわ。
今回もウィンドウズ先生に、SDS(Software Defined Storage)の極意を教えてもらいましょう!

ウィンドウズ先生

はい、ウィンドウズ先生です。
S2Dは、Windows Server 2016で登場して以来、Azure Stack HCIの中核技術として進化し続けています。
しかし、構築には「ハードウェア選定」に厳しいルールがあります。
RAIDカードを使ってはいけない、RDMA対応NICが推奨される……など、Linuxのmdadmとは違う作法が必要です。
今回は、爆速かつ堅牢なHCI環境を構築するための、プロの設計論を伝授します。

本記事では、S2Dのアーキテクチャ、キャッシュとキャパシティの階層設計、RDMAネットワークの重要性、そしてPowerShellによる構築と障害時のディスク交換手順までを徹底解説します。

🟥 Windows Server【上級】講座(全12回)カリキュラム

現在地:【第7回】Software Defined Storage。記憶域スペースダイレクト (S2D) の構築

※入門編(全8回)の復習はこちら:Windows Server入門講座 アーカイブ


第1章:S2Dとは? Ceph/vSANとの比較

S2D (Storage Spaces Direct) は、Windows Server Datacenterエディションに搭載されているSDS機能です。
複数のサーバーの内蔵ディスクを束ねて、1つの巨大な「記憶域プール」を作成し、その上に「仮想ディスク」を切り出して使用します。

アーキテクチャの比較

機能 Ceph (Linux) VMware vSAN Windows S2D
データ分散 CRUSHアルゴリズム オブジェクトベース スラブ(256MB単位)分散
冗長化 レプリケーション / Erasure Coding RAID-1 / RAID-5/6相当 3方向ミラー / パリティ
ファイルシステム XFS / BlueStore VMFS-L ReFS (Resilient File System)
プロトコル TCP/IP TCP/IP SMB3 (RDMA対応)

S2Dの最大の特徴は、Windowsのファイル共有プロトコルであるSMB3を通信基盤として使用している点です。
これにより、特別なプロトコルを意識することなく、Windows Serverの標準機能だけで高速なデータ転送を実現しています。


第2章:ハードウェア要件。「RAIDカード」は捨てるべし

S2Dを構築する際、最も重要なのがハードウェア選定です。
ここを間違えると、構築すらできません。

鉄則:HBA (Host Bus Adapter) を使うこと

S2Dは、OSが直接物理ディスクを制御します。
そのため、ハードウェアRAIDコントローラーを使ってはいけません。
RAIDカードを使う場合でも、「RAID 0」や「JBODモード」ではなく、完全にOSへディスクを透過させる「パススルーモード(HBAモード)」である必要があります。

理由:
S2Dはディスクのシリアル番号や物理的なスロット位置を識別し、障害時に特定のディスクを切り離したり、LEDを点滅させたりする制御を行うためです。

推奨ドライブ構成

  • NVMe + SSD: 超高速構成(All-Flash)。NVMeをキャッシュ、SSDをキャパシティとして使用。
  • SSD + HDD: ハイブリッド構成。SSDをキャッシュ、HDDをキャパシティとして使用。
  • NVMe + HDD: これも可能ですが、HDDの遅さが目立つため推奨されません。

第3章:キャッシュとキャパシティ。階層化の設計

S2Dには強力な「内蔵キャッシュ機能」があります。
高速なドライブ(NVMeやSSD)をキャッシュ専用として割り当て、低速なドライブ(HDD)への書き込みをバッファリングします。

キャッシュの動作

自動的に最も高速な種類のドライブがキャッシュとして認識されます。
例えば、「2本のSSD」と「4本のHDD」を搭載したサーバーの場合、SSDは自動的にキャッシュ用(Journal + Read/Write Cache)となり、容量としてはカウントされません。
実効容量はHDDの分だけになります。

冗長化方式(Resiliency)

作成するボリュームごとに、冗長化方式を選択できます。

  1. 2方向ミラー (Two-way Mirror): データを2コピー持つ。ディスク効率50%。2ノード構成で使用。
  2. 3方向ミラー (Three-way Mirror): データを3コピー持つ。ディスク効率33%。本番環境での推奨設定。 2台のサーバーが同時に故障してもデータは守られます。
  3. ミラー加速パリティ (Mirror-accelerated Parity): ミラーとパリティ(RAID-5/6相当)を組み合わせたもの。書き込みはミラー層で高速に行い、後でパリティ層へ移動して容量を節約する。ディスク効率60%〜80%。アーカイブ用途に最適。

💡 プロの設計アドバイス
仮想マシン(VDIやDB)を動かすなら、ディスク効率が悪くても「3方向ミラー」一択です。
パリティ計算のオーバーヘッドがないため、ランダム書き込み性能が圧倒的に高いからです。
ディスク容量をケチってパリティにすると、書き込み遅延でシステム全体がモッサリします。


第4章:ネットワークの要。RDMA (RoCE / iWARP)

S2Dでは、サーバー間で常にデータの同期(ミラーリング)が行われます。
そのため、ネットワーク帯域とレイテンシがボトルネックになりがちです。
これを解決するのがRDMA (Remote Direct Memory Access)です。

RDMAとは?

CPUを介さずに、NIC(ネットワークカード)同士が直接メモリデータを転送する技術です。
CPU負荷をほぼゼロにしつつ、数μs(マイクロ秒)という超低遅延通信を実現します。

規格の選択

  • RoCE (RDMA over Converged Ethernet): スイッチ側でDCB/PFCといったロスレス設定が必要。設定難易度が高いが、Mellanox等のNICで広くサポート。
  • iWARP: 一般的なTCP/IPスイッチで利用可能。設定が楽。

S2Dを本番運用するなら、10Gbps以上のRDMA対応NIC(Mellanox ConnectXなど)を導入することを強く推奨します。
これがないと、リビルド時や高負荷時にCPUがネットワーク処理だけで100%になり、VMが停止する事故が起きます。


第5章:実践!PowerShellでS2Dクラスタ構築

それでは実際に構築しましょう。
前提として、第1回で解説したWSFC(クラスタ)が構成済みであることとします。

1. ディスクの確認

各ノードのディスクが、OSから「CanPool = True」として認識されているか確認します。

Get-PhysicalDisk | Select-Object FriendlyName, MediaType, CanPool, OperationalStatus

もし CanPoolFalse の場合、パーティションが残っている可能性があります。
Reset-PhysicalDisk などで初期化してください。

2. S2Dの有効化

魔法のコマンドです。これを実行するだけで、全ノードのディスクがスキャンされ、プールが作成され、キャッシュ設定が自動で行われます。

Enable-ClusterS2D -PoolFriendlyName "S2D_Pool" -CacheState Enabled

※実行には数分かかります。検証レポートで警告が出ていないことが前提です。

3. ボリューム(仮想ディスク)の作成

プールの上に、3方向ミラーのボリュームを作成します。

# 1TBのボリュームを作成(デフォルトで3方向ミラーになる)
New-Volume -FriendlyName "Volume1" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "S2D_Pool" -Size 1TB

これで C:\ClusterStorage\Volume1\ が作成され、全ノードからアクセス可能になります。
ファイルシステムには自動的に CSVFS_ReFS が選択されます。
これはReFSの破損修復機能を持ちつつ、クラスタ共有ボリュームとして動作するモードです。


第6章:運用と障害対応。ディスク交換の手順

「ディスクが故障しました」。S2Dではどう対応すればよいでしょうか。
ただ差し替えるだけではダメです。

1. 故障ディスクの特定とリタイア

物理ディスクの状態を確認します。

$disk = Get-PhysicalDisk | Where-Object OperationalStatus -ne OK
# ディスクの使用を停止(Retire)
Set-PhysicalDisk -InputObject $disk -Usage Retired

2. 物理的な交換

サーバーのホットスワップベイから故障ディスクを抜き、新品を挿入します。

3. プールへの追加

新しいディスクは自動的に認識されますが、プールに追加する処理が必要です。

# プールに参加可能なディスクを確認
Get-PhysicalDisk | Where-Object CanPool -eq $True

# プールに追加
Add-PhysicalDisk -StoragePoolFriendlyName "S2D_Pool" -PhysicalDisks (Get-PhysicalDisk | Where-Object CanPool -eq $True)

4. 修復ジョブの実行と旧ディスクの削除

データのリバランス(再配置)が始まります。

# 修復ジョブの確認
Get-StorageJob

# 古い(Retireした)ディスク情報をプールから削除
Remove-PhysicalDisk -PhysicalDisks $disk -StoragePoolFriendlyName "S2D_Pool"

💡 プロのノウハウ:LED点滅機能
「どのディスクが壊れたのか分からない!」という時、S2Dには対象ディスクのLEDを点滅させる機能があります。
Get-PhysicalDisk | Where... | Enable-PhysicalDiskIndication
これでデータセンターでの作業ミス(正常なディスクを抜いてしまう事故)を防げます。


まとめ:ハードウェアを抽象化し、ソフトで支配せよ

お疲れ様でした!
上級編第7回は、記憶域スペースダイレクト (S2D) について解説しました。

今回の重要ポイント:

  • S2Dは汎用サーバーでSANストレージ相当の機能を実現するHCI技術。
  • RAIDカードは使わず、HBAモードでOSにディスクを見せること。
  • パフォーマンスのためには、SSDキャッシュとRDMAネットワークが必須。
  • ディスク交換はPowerShellで「Retire → Add → Remove」の手順を守る。
ウィンドウズ先生

これで、コンピュート(Hyper-V)もストレージ(S2D)も、すべてWindows Serverの標準機能だけで構築できるようになりました。
これが「ハイパーコンバージドインフラ (HCI)」です。
LinuxのCeph同様、Windowsもハードウェアに依存しない柔軟なインフラを手に入れたのです。

さて、データを保存したら、次に考えるべきは「バックアップ」です。
S2Dで冗長化しているとはいえ、ランサムウェアやオペミスによるデータ削除までは防げません。
Windowsには、OS標準でありながら非常に優秀なバックアップ機能があります。

次回、第8回は「バックアップと災害復旧。Windows Server BackupとVSSの深層」です。
市販のバックアップソフトを買う前に知っておくべき、OS標準機能の底力と、Active Directoryの復旧(Authoritative Restore)について解説します。お楽しみに!

▼ HCI環境を構築してみる ▼

S2Dをテストする
「おすすめVPS」

おすすめVPSを見る

クラウド基盤エンジニアへ
「ITエンジニア転職」

転職エージェントを見る

コメント