VMM で記憶域レプリカを管理する

重要

このバージョンの Virtual Machine Manager (VMM) はサポート終了に達しました。 VMM 2022 にアップグレードすることをお勧めします。

記憶域レプリカが Windows Server 2016 に導入されました。 これにより、障害の準備と復旧のためにクラスターまたはサーバー間のストレージに依存しないブロック レベルの同期レプリケーションが可能になり、高可用性のためにフェールオーバー クラスターがサイト間で拡張されます。 同期レプリケーションでは、クラッシュ前後の整合性が維持されるボリュームを使用して物理サイト内のデータのミラーリングを実現し、ファイル システム レベルでデータがまったく失われないようにします。 非同期レプリケーションでは、データが失われる可能性はありますが、大都市圏の範囲を超えてサイトを拡張できます。

詳細を確認 し、 FAQ を確認してください。

この記事では、記憶域レプリカを 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 の統合はサポートされていません。
  • 出力順と整合性グループの設定はサポートされていません。

デプロイメントの手順

  1. 記憶域の指定: 使用するソースとレプリケート先の記憶域を指定します。

  2. 検出と分類: VMM ファブリック内に記憶域が現在ない場合、VMM で検出する必要があります。 ソース ストレージと移行先ストレージの両方を、同じ VMM サーバーで管理する必要があります。 検出後、記憶域プールとその記憶域の分類を作成します。 詳細については、こちらを参照してください

  3. ペアリング: ソースとレプリケート先のストレージ アレイをペアリングします。

  4. プロビジョニング: ストレージがペアになった後、それぞれのストレージ アレイで作成されたソース ストレージ プールと宛先ストレージ プールから同じデータ ボリュームとログ ボリュームをプロビジョニングする必要があります。 レプリケートされるデータのボリュームをプロビジョニングするだけでなく、レプリケーション トランザクション ログ用のボリュームもプロビジョニングする必要があります。 ソース記憶域のデータが更新されると、トランザクション ログに付加され、差分の変更は (同期レプリケーションを使用して) レプリケート先記憶域と同期されます。

  5. レプリケーション グループの作成: ボリュームが配置されたら、レプリケーション グループを作成します。 レプリケーション グループは、複数のボリュームを含む論理グループです。 レプリケーション グループは、ソース サイトとコピー先サイトのデータ ボリュームとログ ボリュームをそれぞれ含む同一である必要があります。

  6. レプリケーションの有効化: ソースとレプリケーション先のレプリケーション グループ間でのレプリケーションを有効にできるようになりました。

  7. 更新: レプリケーション グループの作成を完了し、初期データ レプリケーションをトリガーするには、プライマリ ストレージ プロバイダーとセカンダリ ストレージ プロバイダーを更新する必要があります。 データはレプリケーション先の記憶域にレプリケートされます。

  8. 状態の確認: プライマリ レプリケーション グループの状態を確認できるようになりました。 レプリケート中状態になっているはずです。

  9. VM の追加: 差分レプリケーションが稼働しているときに、レプリケーション グループに含まれるストレージを使用する VM を追加できます。 VM を追加すると、VM が検出され、自動的にレプリケートが開始されます。

  10. フェールオーバーの実行: レプリケーションが同期状態になると、期待どおりに動作している場合は、フェールオーバーを実行してチェックできます。 テスト フェールオーバー メカニズムがないため、計画的または計画外の停止に応じて手動フェールオーバーを実行します。 フェールオーバー後は、ソース サイト上の VM を削除し (まだ存在する場合)、レプリケートされたデータを使用してターゲット サイトに VM を作成できます。

  11. フェールバックの実行: フェールオーバーが完了し、レプリカ VM が実行されたら、必要に応じてフェールバックを実行できます。 次のことを確認します。

    • 計画外のフェールオーバーを実行し、ソースの場所を使用できない場合は、フェールオーバーを実行してセカンダリからプライマリの場所にフェールバックし、プライマリの場所に VM を作成します。
    • 計画されたフェールオーバーを実行し、ソースの VM がまだ存在する場合、レプリケーションを停止し、ソース VM を削除し、セカンダリの場所に VM を作成してからレプリケーションを再開する必要があります。 その後、プライマリ サイトで、元の VM と同じ設定で VM を作成できます。

PowerShell オブジェクトの取得

  1. 開始する前に、使用する PowerShell オブジェクトの名前を取得します。

  2. プライマリ ストレージ配列の名前を取得し、変数に割り当てます。

        $PriArray = Get-SCStorageArray - Name $PriArrayName
    
  3. セカンダリ ストレージ アレイの名前を取得し、変数に割り当てます。

        RecArray = Get-SCStorageArray - Name $RecArrayName
    
  4. プライマリ 記憶域プールの名前を取得し、変数に割り当てます。

        $ $ PriPoolName $RecPool = Get-SCStoragePool -Name $
    
  5. セカンダリ 記憶域プールの名前を取得し、変数に割り当てます。

        $ $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 をプロビジョニングします。 レプリケーション グループを作成します。

  1. ソースにプロビジョニングして、作成します。

        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
    
  2. レプリケーション先にプロビジョニングして、作成します。

        $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

記憶域プロバイダーの更新

  1. VMM コンソールを開きます。
  2. [ ファブリック リソース プロバイダー]>を選択します。 プロバイダーを右クリックし、> をクリックします。

レプリケーションの状態を確認する

レプリケーションが期待どおりに動作していることを確認するために、ソース レプリケーション グループのレプリケーションの状態を取得します。

    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

詳細情報