VMM で記憶域レプリカを管理する
重要
このバージョンの Virtual Machine Manager (VMM) はサポート終了に達しました。 VMM 2022 にアップグレードすることをお勧めします。
記憶域レプリカが Windows Server 2016 に導入されました。 これにより、障害の準備と復旧のためにクラスターまたはサーバー間のストレージに依存しないブロック レベルの同期レプリケーションが可能になり、高可用性のためにフェールオーバー クラスターがサイト間で拡張されます。 同期レプリケーションでは、クラッシュ前後の整合性が維持されるボリュームを使用して物理サイト内のデータのミラーリングを実現し、ファイル システム レベルでデータがまったく失われないようにします。 非同期レプリケーションでは、データが失われる可能性はありますが、大都市圏の範囲を超えてサイトを拡張できます。
この記事では、記憶域レプリカを System Center - Virtual Machine Manager (VMM) と統合する方法について説明し、PowerShell を使用して記憶域レプリカをセットアップして VMM ファブリック内の記憶域をレプリケートする方法について説明します。
VMM の記憶域レプリカ
記憶域レプリカを使用して、Hyper-V クラスターのデータまたはファイル データをレプリケートできます。 VMM で記憶域レプリカを使用すると、多くのビジネス上の利点があります。
- SAN など、同期レプリケーション ソリューションに関連するコストと複雑さが解消されます。
- 同期レプリケーションによって、ダウンタイムとデータ損失が最小限に抑えられます。 RPO は 0 (データ損失ゼロ) です。 RTO (データの使用不可) は、プライマリ サイトで障害が起き、セカンダリ サイトが開始されるまでの間にのみ発生します。
- ソースとレプリケート先の記憶域ハードウェアが同じである必要はありません。
開始する前に
- VMM は、Windows Server 2016以降の Datacenter Edition で実行されている必要があります。
- Hyper-V は、Windows Server 2016以降の Datacenter、Server Core、または Nano で実行されている必要があります。
- 同期レプリケーションのみがサポートされています。 非同期レプリケーションはサポートされていません。
- ボリューム記憶域またはファイル記憶域の 2 セットの記憶域が必要になります。 ソースとレプリケート先の両方は、同じ種類の記憶域 (ファイルまたはボリューム) である必要がありますが、実際の記憶域は混在していても問題ありません。 たとえば、一方の端にファイバー チャネル SAN を、もう一方の端にスペース ダイレクト (ハイパーコンバージド モードまたは非集約モード) を設定できます。
- 各記憶域セットは、各クラスターで使用できるようにします。 クラスターの記憶域は共有しないでください。
- ソースとレプリケート先のボリューム (ログ ボリュームを含む) は、サイズとブロック サイズを同じにする必要があります。 これは、記憶域レプリカがブロック レプリケーションを使用するためです。
- 各ストレージ サーバーに少なくとも 1 つの 1 GbE 接続 (10 GbE、iWARP、または InfiniBand) が必要です。
- 各ファイル サーバーまたはクラスター ノードには、すべてのノード間で ICMP、SMB (ポート 445、SMB ダイレクトの場合は 5445)、WS-MAN (ポート 5985) 双方向トラフィックを許可するファイアウォール規則が必要です。
- この手順を行うには、各クラスター ノードで管理者グループのメンバーである必要があります。
- 記憶域レプリカのセットアップには、現行の Windows PowerShell を使用する必要があります。
- ソース記憶域とレプリケート先記憶域は、同じ VMM サーバーで管理する必要があります。
- Azure Site Recovery と VMM の統合はサポートされていません。
- 出力順と整合性グループの設定はサポートされていません。
デプロイメントの手順
記憶域の指定: 使用するソースとレプリケート先の記憶域を指定します。
検出と分類: VMM ファブリック内に記憶域が現在ない場合、VMM で検出する必要があります。 ソース ストレージと移行先ストレージの両方を、同じ VMM サーバーで管理する必要があります。 検出後、記憶域プールとその記憶域の分類を作成します。 詳細については、こちらを参照してください。
ペアリング: ソースとレプリケート先のストレージ アレイをペアリングします。
プロビジョニング: ストレージがペアになった後、それぞれのストレージ アレイで作成されたソース ストレージ プールと宛先ストレージ プールから同じデータ ボリュームとログ ボリュームをプロビジョニングする必要があります。 レプリケートされるデータのボリュームをプロビジョニングするだけでなく、レプリケーション トランザクション ログ用のボリュームもプロビジョニングする必要があります。 ソース記憶域のデータが更新されると、トランザクション ログに付加され、差分の変更は (同期レプリケーションを使用して) レプリケート先記憶域と同期されます。
レプリケーション グループの作成: ボリュームが配置されたら、レプリケーション グループを作成します。 レプリケーション グループは、複数のボリュームを含む論理グループです。 レプリケーション グループは、ソース サイトとコピー先サイトのデータ ボリュームとログ ボリュームをそれぞれ含む同一である必要があります。
レプリケーションの有効化: ソースとレプリケーション先のレプリケーション グループ間でのレプリケーションを有効にできるようになりました。
更新: レプリケーション グループの作成を完了し、初期データ レプリケーションをトリガーするには、プライマリ ストレージ プロバイダーとセカンダリ ストレージ プロバイダーを更新する必要があります。 データはレプリケーション先の記憶域にレプリケートされます。
状態の確認: プライマリ レプリケーション グループの状態を確認できるようになりました。 レプリケート中状態になっているはずです。
VM の追加: 差分レプリケーションが稼働しているときに、レプリケーション グループに含まれるストレージを使用する VM を追加できます。 VM を追加すると、VM が検出され、自動的にレプリケートが開始されます。
フェールオーバーの実行: レプリケーションが同期状態になると、期待どおりに動作している場合は、フェールオーバーを実行してチェックできます。 テスト フェールオーバー メカニズムがないため、計画的または計画外の停止に応じて手動フェールオーバーを実行します。 フェールオーバー後は、ソース サイト上の VM を削除し (まだ存在する場合)、レプリケートされたデータを使用してターゲット サイトに VM を作成できます。
フェールバックの実行: フェールオーバーが完了し、レプリカ VM が実行されたら、必要に応じてフェールバックを実行できます。 次のことを確認します。
- 計画外のフェールオーバーを実行し、ソースの場所を使用できない場合は、フェールオーバーを実行してセカンダリからプライマリの場所にフェールバックし、プライマリの場所に VM を作成します。
- 計画されたフェールオーバーを実行し、ソースの VM がまだ存在する場合、レプリケーションを停止し、ソース VM を削除し、セカンダリの場所に VM を作成してからレプリケーションを再開する必要があります。 その後、プライマリ サイトで、元の VM と同じ設定で VM を作成できます。
PowerShell オブジェクトの取得
開始する前に、使用する PowerShell オブジェクトの名前を取得します。
プライマリ ストレージ配列の名前を取得し、変数に割り当てます。
$PriArray = Get-SCStorageArray - Name $PriArrayName
セカンダリ ストレージ アレイの名前を取得し、変数に割り当てます。
RecArray = Get-SCStorageArray - Name $RecArrayName
プライマリ 記憶域プールの名前を取得し、変数に割り当てます。
$ $ PriPoolName $RecPool = Get-SCStoragePool -Name $
セカンダリ 記憶域プールの名前を取得し、変数に割り当てます。
$ $PriPoolName $RecPool = Get-SCStoragePool -Name $
ストレージ アレイのペアリング
ストレージ アレイ名の変数を使用して、プライマリ ストレージ アレイとセカンダリ ストレージ アレイをペアリングします。
注意
配列名はクラスター名と同じである必要があります。
Set-SCStorageArray -StorageArray $PriArray -PeerStorageArrayName $RecArray.name
VMM の外部でクラスターを作成し、クラスター名と一致するように配列名の名前を変更する必要がある場合は、次の値を使用します。
Get-SCStorageArray -Name "existing-name" | Set-SCStorageArray -Name "new-name"
LUN をプロビジョニングし、記憶域グループを作成
データとログの記憶域プールから LUN をプロビジョニングします。 レプリケーション グループを作成します。
ソースにプロビジョニングして、作成します。
Set-SCStorageArray -StorageArray $PriArray -PeerStorageArrayName $RecArray.name $PrimaryVol = New-SCStorageVolume -StorageArray $PriArray -StoragePool $PriPool -Name PrimaryVol -SizeInBytes $VolSize -RunAsynchronously -PhysicalDiskRedundancy "1" -FileSystem "CSVFS_NTFS" -DedupMode "Disabled" $PrimaryLogVol = New-SCStorageVolume -StorageArray $PriArray -StoragePool $PriPool -Name PrimaryLogVol -SizeInBytes $LogVolSize -GuidPartitionTable -RunAsynchronously -FileSystem "NTFS" $PriRG = New-SCReplicationGroup -Name PriRG -StorageVolume $PrimaryVol -LogStorageVolume $PrimaryLogVol
レプリケーション先にプロビジョニングして、作成します。
$RecoveryVol = New-SCStorageVolume -StorageArray $RecArray -StoragePool $RecPool -Name RecoveryVol -SizeInBytes $VolSize -RunAsynchronously -PhysicalDiskRedundancy "1" -FileSystem "CSVFS_NTFS" -DedupMode "Disabled" $RecoveryLogVol = New-SCStorageVolume -StorageArray $RecArray -StoragePool $RecPool -Name RecoveryLogVol -SizeInBytes $LogVolSize -GuidPartitionTable -RunAsynchronously -FileSystem "NTFS" $RecRG = New-SCReplicationGroup -Name RecRG -CreateOnArray -ProtectionMode Synchronous -StorageVolume $RecoveryVol -LogStorageVolume $RecoveryLogVol
レプリケーションを有効にする
ここでソースとレプリケーション先のレプリケーション グループ間での同期レプリケーションを有効にします。
Set-SCReplicationGroup -ReplicationGroup $PriRG -Operation EnableProtection -TargetReplicationGroup $RecRG -EnableProtectionMode Synchronous
記憶域プロバイダーの更新
- VMM コンソールを開きます。
- [ ファブリック リソース プロバイダー]>を選択します。 プロバイダーを右クリックし、> をクリックします。
レプリケーションの状態を確認する
レプリケーションが期待どおりに動作していることを確認するために、ソース レプリケーション グループのレプリケーションの状態を取得します。
Get replication status Get-SCReplicationGroup | where {($_.Name.EndsWith("PriRG")) -or ($_.Name.EndsWith("RecRG"))} | fl Name, IsPrimary, ReplicationState, ReplicationHealth
VM の作成
ソース レプリケーション グループの LUN を使用して VM を作成します。 または、VMM コンソールで VM を作成することもできます。
New-SCVirtualMachine -Name "DemoVM" -VMHost <HostName> -Path $PrimaryVol -VMTemplate <VMTemplate>
フェールオーバーの実行
フェールオーバーを実行します。
Set-SCReplicationGroup -ReplicationGroup $PriRG -Operation PrepareForFailover
Set-SCReplicationGroup -ReplicationGroup SRecRG -Operation Failover
フェールバックを実行する
フェールバックする前に、VMM コンソールで、ソース VM がまだ使用可能な場合は削除します。 同じ VM にはフェールバックできません。
ここでフェールバックを実行します。
Set-SCReplicationGroup -ReplicationGroup $PriRG -Operation ReverseRoles -EnableProtectionMode Synchronous -TargetReplicationGroup $RecRG
フェールバックを実行した後、フェールバックされた VHD/構成ファイルを使用して、ソース サイトに VM を作成できます。
レプリケーションの停止
レプリケーションを停止する場合は、ソースと宛先でこのコマンドレットを実行する必要があります。
Set-SCReplicationGroup -ReplicationGroup $RecRG -Operation TearDown Tear down need to be done on both RGs
詳細情報
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示