NitroインスタンスがVM-generation IDをサポートしていた

記事タイトルとURLをコピーする

こんにちは。 マネージドサービス部テクニカルサポート課の西尾です。

今年ももうすぐ終わり、あっという間ですね。 毎年この時期になるとブログを書いてないことに気づきます。

ちょっとした内容ですが、一つ記事にできそうでしたので以下に記します。

本記事はサーバーワークスAdvent Calendar 2024の24日目の記事です。

qiita.com

Nitroインスタンスとは

AWS Nitro System 上に構築されたEC2インスタンスを指します。

高パフォーマンス、高可用性、高度なセキュリティ・・とありますが 詳細は以下をご参照ください。

docs.aws.amazon.com

VM-generation IDとは

仮想化ハイパーバイザーが用いる世代識別用の数値データを指します。

仮想化ドメイン コントローラーの複製は、ハイパーバイザー プラットフォームを使用して VM-Generation ID と呼ばれる識別子を公開し、仮想マシンの作成を検出します。 learn.microsoft.com

WindowsServer2012で新たな機能として追加された為、いまさら感はありますが

XenインスタンスではVM-generation IDをサポートしていなかったのですが

先日確認する機会があり、Nitroインスタンスではサポートしていることを知りました。

主にActiveDirectory環境のバックアップリストアで同IDの存在を知る方が多いかと思いますが

VM-generation IDをサポートしていない環境でスナップショットから復旧した場合

USNロールバックが発生し、リストアを実施したドメインコントローラーのレプリケーションは強制停止されます。

USN ロールバックが発生すると、以前 USN が認識されていた送信先ドメイン コントローラーによる、オブジェクトと属性に対する変更の入力方向のレプリケートは実行されません。 learn.microsoft.com

復旧手順はMicrosoftブログにありますが、それなりに手間のかかる作業が発生します。

USN ロールバックが発生すると、不具合が発生しているドメイン コントローラーが保持している AD データベースを破棄し、再構成するために、対象のドメイン コントローラーの強制降格、再昇格を実施する必要があります。 support3187.rssing.com

VM-generation IDがサポートされた環境であれば、

スナップショットから戻してもよいのかというとそういうわけではなく

先述のドキュメントやブログにも記載がある通り、

常用的にはWindows Server バックアップまたは他の VSS ライター ベース バックアップ ソリューションをご利用いただき

リストアの際はディレクトリサービス復元モードで起動の上、リストアを行っていただく形が推奨となっております。

docs.aws.amazon.com

jpwinsup.github.io

スナップショットから復元させた場合に「スナップショットから復元するな」的なメッセージが記録されることも確認しており(後述)

「VM-generation ID」はあくまでセーフガードであり、それに頼ったリストア運用は基本的には実施しないことをお勧めします。

検証

構成

以下の3台構成です。

◆m5(Nitro)インスタンス(FSMO)

◆m5(Nitro)インスタンス

◆m4(Xen)インスタンス

今回の検証では非FSMOドメインコントローラーの2つをそれぞれリストアします。

VM-generation IDサポート状況の確認

Nitroインスタンスであるm5インスタンスではイベントログでVM-generation IDがサポートされています的なメッセージを確認することができます。 (VM世代IDと書いてあるように見えますが)

一方m4インスタンスでは以下の通りでm5インスタンスで確認できたイベントID2168の内容は記録されておりません。

m4インスタンスにてリストアテスト

m4インスタンスにてAMIを取得後、何度かレプリケーションを実施した後にリストアを実施しました。

結果として以下の通り、repadminコマンドにて「DSA オプション: IS_GC DISABLE_INBOUND_REPL DISABLE_OUTBOUND_REPL」を確認することができました。

C:\Users\test2>repadmin /showrepl

Repadmin: フル DC localhost に対してコマンド /showrepl を実行しています
Default-First-Site-Name\XXXXXX-XXXXXX
DSA オプション: IS_GC DISABLE_INBOUND_REPL DISABLE_OUTBOUND_REPL
サイト オプション: (none)
DSA オブジェクト GUID: a882251c-f1dc-4bef-aa7a-a76f933bfa1c
DSA 起動 ID: 329e8dc9-8c3b-4da6-a96b-2d9fa41f09cd

==== 入力方向の近隣サーバー======================================

DC=swx,DC=com
    Default-First-Site-Name\XXXXXXX-XXXXXX (RPC 経由)
        DSA オブジェクト GUID: 08d8d42b-9a07-441f-bf1d-8f2f8546cf72
        2024-12-21 12:13:37 の最後の試行は、失敗しました。結果は 8457 (0x2109):
            宛先サーバーは現在、レプリケーション要求を拒否しています。
        1 回連続で失敗しました。
        最後に成功したのは 2024-12-21 10:41:59 です。

CN=Configuration,DC=swx,DC=com
    Default-First-Site-Name\XXXXXXX-XXXXXX (RPC 経由)
        DSA オブジェクト GUID: 08d8d42b-9a07-441f-bf1d-8f2f8546cf72
       2024-12-21 12:08:39 の最後の試行は成功しました。

CN=Schema,CN=Configuration,DC=swx,DC=com
    Default-First-Site-Name\XXXXXXX-XXXXXX (RPC 経由)
        DSA オブジェクト GUID: 08d8d42b-9a07-441f-bf1d-8f2f8546cf72
       2024-12-21 12:08:39 の最後の試行は成功しました。

DC=DomainDnsZones,DC=swx,DC=com
    Default-First-Site-Name\XXXXXXX-XXXXXX (RPC 経由)
        DSA オブジェクト GUID: 08d8d42b-9a07-441f-bf1d-8f2f8546cf72
        2024-12-21 12:08:39 の最後の試行は、失敗しました。結果は 8457 (0x2109):
            宛先サーバーは現在、レプリケーション要求を拒否しています。
        1 回連続で失敗しました。
        最後に成功したのは 2024-12-21 10:40:09 です。

DC=ForestDnsZones,DC=swx,DC=com
    Default-First-Site-Name\XXXXXXX-XXXXXX (RPC 経由)
        DSA オブジェクト GUID: 08d8d42b-9a07-441f-bf1d-8f2f8546cf72
        2024-12-21 12:08:39 の最後の試行は、失敗しました。結果は 8457 (0x2109):
            宛先サーバーは現在、レプリケーション要求を拒否しています。
        1 回連続で失敗しました。
        最後に成功したのは 2024-12-21 10:40:06 です。

イベントログ2095の記録も

レジストリキーDsa Not Writable のデータが 4 となり

Netlogonサービスも一時停止されてドキュメント通りの結果となりました。

< 特徴 1 > "repadmin /showrepl" コマンドを実行し、DSA オプションの欄を確認します。 現象が発生しているドメイン コントローラーでは、[DISABLE_INBOUND_REPL] および [DISABLE_OUTBOUND_REPL] というオプションが追加されています。

< 特徴 2 > Netlogon サービスの [状態] が [一時停止] となる。

< 特徴 3 > レジストリ値 Dsa Not Writable のデータが 4 となっている。

< 特徴 4 > Directory Service のイベント ログに ID: 2095 が記録されている。 support3187.rssing.com

m5インスタンスにてリストアテスト

こちらもAMIを取得後、何度かレプリケーションを実施した後にリストアを実施しました。

こちらはm4インスタンスとは異なりリストア後もレプリケーションが行われることを確認していますが イベントログにて以下の記録を確認しています。

VM-generation IDの変わったことを検知し、InvocationIDを変更、SYSVOLの初期化・・・ ドキュメント通りの動きになっているかと思います。

DFSR を使用している場合、ゲストは DFSR サービスを停止し、DFSR データベース ファイルを削除します (既定の場所: %systemroot%\system volume information\dfsr\)。 その後、可能な場合は、変更されていない既存の SYSVOL データを再利用して、DFSR サービスを開始し、権限のない入力方向のレプリケーションを行います。 learn.microsoft.com

イベントID1109の本文内に「スナップショットから復元するな」メッセージも確認できました。

仮想マシンスナップショットを使用して仮想ドメインコントローラーを復元しないでください。

所感

VM-generation IDサポート環境での検証ではすんなりリストアできたように見えますが

非サポート環境との差異を確認したのみで細かいところまで確認はできていません。

もし実際に検証される場合は、自己の責任の元、対応を実施いただければ幸いです。

今回はどなたかのお役に立てればと思い、書いてみましたが

一人でも多く、トラブルを回避することができたらば◎です。

今年も残り少し・・・・がんばっていきましょう!

西尾 敏 (記事一覧)

マネージドサービス部テクニカルサポート課

2022年8月入社。まだまだです。