Edited at

記憶域スペースダイレクトを用いたHyper-Vクラスターを構築する方法

More than 1 year has passed since last update.

記憶域スペースダイレクト(Storage Spaces Direct 以下 S2D)を共有領域として利用するHyper-Vクラスターの構築手順。

ここでは構築手順を確立するために全ての要素をHyper-V仮想マシン上で構築する。よって、ネットワーク帯域やディスクなどに関してS2Dのハードウェア要件を満たせていない部分がある点に留意すること。


検証環境


ノードサーバー (2台)

クラスターを構成するためのハイパーバイザーサーバー。


  • 機種: 第二世代 Hyper-V仮想マシン

  • ストレージ: HDD: 300GB x5

  • NIC: 1Gpbs NIC x1

  • CPU: 16core

  • メモリ: 16GB

  • OS: WindowsServer2016 DataCenter 評価版


ActiveDirectoryサーバー (1台)

クラスターを管理するためのActiveDirectoryドメインサーバー。


  • 機種: 第二世代 Hyper-V仮想マシン

  • ストレージ: HDD: 300GB x1

  • NIC: 1Gpbs NIC x1

  • CPU: 4core

  • メモリ: 4GB

  • OS: WindowsServer2016 Standard 評価版


ネットワーク


検証用ネットワーク(192.168.1.0/24)


  • ActiveDirectoryサーバー: 192.168.1.20/24

  • ノードサーバー1: 192.168.1.31/24

  • ノードサーバー2: 192.168.1.32/24

  • クラスターIP: 192.168.1.35/24


サーバーへのOSインストール

以下の点に気を付けてOSをインストールする。


  • GUIありでインストールする

  • 【ノードサーバーのみ】WindowsUpdateの適用状態をサーバー同士で同じ状態にする

  • 【ノードサーバーのみ】S2D用ディスクは全てGPTでフォーマットする

  • 時刻同期が正しく行われるようにする


Nested Hyper-Vの有効化

ノードサーバーはHyper-V仮想マシンであるため、そのままではHyper-Vの機能をインストールできない。

そこで、ノードサーバーに対してNested Hyper-Vを有効にしておく。


PowerShell

Set-VMProcessor -VMName <仮想マシン名> -ExposeVirtualizationExtensions $true


当たり前だが、実際の物理マシンの場合はこの作業は不要である。


クラスター管理ドメインの準備


ActiveDirectoryのインストール

AcriveDirectoryサーバーに対し、サーバーマネージャーから以下の機能をインストールする。インストールの詳細は省略。


  • Active Directory ドメイン サービス

install_ad.jpg


ドメインの作成

ドメインコントローラーに昇格してドメインを作成する。ドメイン作成の詳細は省略。


  • ドメイン機能レベル: Windows Server 2016

  • ドメイン名: s2d.local

created_domain.jpg


ドメインへの参加

ノードサーバーをドメインに参加させる。ドメイン参加手順の詳細は省略。

joined_nodes.jpg


クラスターの作成


クラスター関連機能のインストール

全てのノードサーバーに対し、サーバーマネージャーから以下の機能をインストールする。


  • Hyper-V

  • フェールオーバークラスタリング

役割・機能のインストール

choose_hyper-v.jpg

choose_msfc.jpg

役割・機能選択後のウィザードは何も変更しない。

step1_rolefeature.jpg

step2_rolefeature.jpg

step3_rolefeature.jpg

step4_rolefeature.jpg

インストール完了後はサーバーを再起動すること。


Hyper-Vクラスターの作成

1台のノードサーバー上でのみ実施する。

"フェールオーバークラスターマネージャー"を起動し、"クラスターの作成"を選択する。

start_clustercreate.jpg

about_clustercreate.jpg

ノードサーバーを全て登録する。

add_nodes.jpg

疑似環境であるため検証作業は省略する。

マイクロソフトサポートを受けるために必要であるため、実機では必ず実施して問題が無いことを確認すること。

skip_checks.jpg

クラスター名とクラスターの管理IPを入力する。

config_clusterinfo.jpg

クラスターの作成を実施する。"使用可能な記憶域をすべてクラスターに追加する"のチェックは外すこと。

start_createtask.jpg

created_createcluster.jpg

クラスターが作成され、フェールオーバークラスターマネージャー上に表示される。

view_cluster.jpg


クォーラム領域を準備する

AcriveDirectoryサーバー上にてファイル共有を作成し、全てのノードサーバーからアクセス出来るようにする。詳細は省略。

view_quorum.jpg


クラスターにクォーラム領域を設定する

1台のノードサーバー上でのみ実施する。

"フェールオーバークラスターマネージャー"を起動し、作成したクラスターを右クリックして"他のアクション"→"クラスタークォーラム設定の構成"を選択する。

choose_quorumdef.jpg

about_quorum.jpg

"クォーラム監視を選択する"を選択する。

choose_quorum.jpg

"ファイル共有監視を構成する"を選択する。

choos_filequorum.jpg

ドメインサーバー上に用意したクォーラム用共有を指定する。

set_quorumpath.jpg

クォーラム設定を適用する。

apply_quorum1.jpg

apply_quorum2.jpg


S2D設定


クラスターに対してS2Dプールの作成を行う

1台のノードサーバー上でのみ実施する。

PowerShellにて以下のコマンドを実行し、S2Dの有効化及びS2Dストレージプールの作成を行う。

この作業を実施すると、S2Dに使用されたディスクがOS上から見えなくなる。


PowerShell

Enable-ClusterStorageSpacesDirect

確認
この操作を実行しますか?
ターゲット 'クラスターの記憶域スペース ダイレクトを有効にします' で操作 's2dcluster-v' を実行しています。
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y
警告: 2018/01/11-19:48:38.667 ノード S2D-VNODE2: キャッシュに使用するディスクが見つかりませんでした
警告: 2018/01/11-19:48:38.698 ノード S2D-VNODE1: キャッシュに使用するディスクが見つかりませんでした
警告: 2018/01/11-19:48:38.714 C:\Windows\Cluster\Reports\Enable-ClusterS2D on 2018.01.11-19.48.38.706.htm


キャッシュディスクが無いと表示されるが、特に気にする必要はない。

本当にプールができたかどうかを確認したい場合は、以下のコマンドを実行する。


PowerShell

Get-StoragePool

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly
------------ ----------------- ------------ ------------ ----------
Primordial OK Healthy True False
S2D on s2dcluster-v OK Healthy False False
Primordial OK Healthy True False


S2Dプール名は自動で "S2D on クラスター名" となる。


S2Dプール上に仮想ディスクを作成する

1台のノードサーバー上でのみ実施する。

PowerShellにて以下のコマンドを実行し、S2Dストレージプール上に仮想ディスクを作成する。

今回はノードサーバーが2台であるため、"双方向ミラー"モードでディスクを作成する。(2ノード環境では双方向ミラーしか構成できない)


PowerShell

Get-StoragePool

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly
------------ ----------------- ------------ ------------ ----------
Primordial OK Healthy True False
S2D on s2dcluster-v OK Healthy False False
Primordial OK Healthy True False

New-Volume -StoragePoolFriendlyName <S2Dプール名> -FriendlyName <仮想ディスク名> -Size <サイズ> -FileSystem ReFS -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1

【例】
New-Volume -StoragePoolFriendlyName "S2D on s2dcluster-v" -FriendlyName "Volume1" -Size 1.1TB -FileSystem ReFS -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1

DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining Size
----------- --------------- ---------- --------- ------------ ----------------- ------------- ----
Volume1 ReFS Fixed Healthy OK 1.09 TB 1.1 TB



備考: 仮想ディスクのサイズについて

仮想ディスクのサイズはモードによって設定可能な最大値が変動する。

今回は300GBのディスク4本を使用したノードを2台使用したため、物理的な容量は約2.4TBとなるが、双方向ミラーでは設定可能な最大値は約1.2TB(50%)となる。

TB/TiB問題もあり、-Sizeオプションで指定可能なサイズは結局1.1TB程度になる。(設定可能な値を超えるとエラーになる。)


仮想ディスクをクラスター共有ボリュームに変換する

1台のノードサーバー上でのみ実施する。

作成した仮想ディスクはそのままだとクラスターで利用できないため、クラスター共有ボリュームに変換する必要がある。

"フェールオーバークラスターマネージャー"を起動し、クラスターのツリーにある"記憶域"→"ディスク"を開き、作成した仮想ディスクを選択したあと、"クラスターの共有ボリュームへの追加"を押す。

add_csv.jpg

ディスクが少しの間オフラインになり、再度オンラインになったあとはクラスター共有ボリュームとして利用可能な状態になっている。

アクセス可能かどうか調べるために、C:\ClusterStorageを開き、Volume1が存在することを確認する。

view_csv.jpg

なお、この領域はHyper-V仮想マシンの配置でのみ利用すべきであり、アンチウィルスソフトのチェック対象からも外すべき領域となる。

これで3レイヤー構成のHyper-Vクラスターと同じように仮想マシンを操作することができるようになる。

フェールオーバー可能な高可用性仮想マシンの作成や、マイグレーション動作に関しては以下のページを参照。

https://qiita.com/SkyLaptor/items/0c1d7845f925f6db1b4c


参考

https://docs.microsoft.com/ja-jp/windows-server/storage/storage-spaces/storage-spaces-direct-overview