
Active Directory でドメインコントローラーを降格できないときの FSMO 役割の押収とメタデータクリーンアップ手順
はじめに
EC2 上にセルフマネージドで構築した Active Directory で、ドメインコントローラー(DC)を降格したくても、何らかの障害(OS の破損等)が原因で正常な降格ができない場合があります。
この場合、当該 DC から FSMO 役割を押収し、メタデータクリーンアップを行い、残存する DC にて正常性確認をするという一連の作業が必要となる場合があります。
今回、一連の操作を検証する機会があったのでご紹介します。
前提知識
FSMO 役割とは
Active Directory ドメイン サービスでは、複数の DC が同時に更新すると競合が発生して問題となる一部の処理があります。
その役割を、FSMO(Flexible Single Master Operations)役割と呼びます。
FSMO の役割は全部で 5 つあり、担当する DC は 1 つに固定させる必要はなく、複数の DC に役割を分散させることも可能です。
| 役割 | 担当範囲 | 内容 |
|---|---|---|
| スキーマ マスター | フォレストに 1 台 | スキーマ(ディレクトリの構造の定義)の更新を処理します。 |
| ドメイン名前付けマスター | フォレストに 1 台 | フォレストへのドメインの追加と削除を処理します。 |
| RID マスター | ドメインに 1 台 | セキュリティ識別子(SID)に含まれる一意な部分(相対識別子、RID)のプールをドメイン内の各 DC に払い出します。 |
| PDC エミュレーター | ドメインに 1 台 | 時刻同期の基準になります。また、パスワード変更の優先的な受け取りとアカウントのロックアウトの処理も担当します。 |
| インフラストラクチャ マスター | ドメインに 1 台 | ドメイン間のオブジェクト参照に含まれる、参照先オブジェクトの SID と識別名(DN)を更新します。 |
FSMO の「転送」と「押収」の違い
FSMO 役割を別の DC に移す方法には、「転送」と「押収」の 2 つがあります。
「転送」は、元の役割保持者が稼働しており、役割を受け渡せる場合に行います。元の保持者と受け取る側の DC がデータを同期し、変更が記録されたことを確認してから役割を移します。
「押収」は、元の役割保持者が使用できない場合に、最後の手段として強制的に行います。同期や正常な転送は行われないため、元の保持者が最後にレプリケーションした後の変更は、新しい保持者に反映されない可能性があります。
検証環境
検証の流れは次のとおりです。
- Windows Server の EC2 インスタンスを 2 台用意し、それぞれを DC1、DC2 とする
- DC1 でドメインを作成 → DC2 を追加の DC に昇格
- 5 つの FSMO 役割のうち、一部を DC1 から DC2 に転送
- DC2 を停止して擬似的に障害状態を再現
- DC2 が保持している FSMO の役割を押収
- メタデータクリーンアップ
- 残存するドメインコントローラーにて正常性確認
検証環境の前提
- DC1 と DC2 は同一 VPC・同一サブネットに配置する
- セキュリティグループで、DNS(53)、Kerberos(88)、LDAP(389)、SMB(445)等の AD で必要な通信を許可する
やってみた
1. Windows Server のインスタンスを 2 台用意し、それぞれを DC1、DC2 とする
下記の設定で起動しました。
- AMI:Windows Server 2025
- インスタンスタイプ:t3.medium
それぞれの EC2 インスタンスに RDP で接続し、ホスト名を変更します。
Rename-Computer -NewName "DC1" -Restart
Rename-Computer -NewName "DC2" -Restart
2. DC1 でドメインを作成 → DC2 を追加の DC に昇格
DC1 でドメインを作成する手順
DC1 に RDP で接続し、Active Directory ドメインサービスの役割をインストールします。
Install-WindowsFeature -name AD-Domain-Services -IncludeManagementTools
新しいフォレストを作成します。
Install-ADDSForest -DomainName "test.example.local"
表示に従いディレクトリサービス復元モード(DSRM)のパスワードを設定すると、インストールが進みます。
DC への昇格が完了すると、インスタンスが自動で再起動し、RDP 接続が切断されます。
DC2 を追加の DC として昇格する手順
DC2 に RDP で接続します。
DC2 がフォレストのドメインを名前解決できるように、DC2 の DNS サーバーに DC1 のプライベート IPv4 アドレスを設定します(今回の検証では 10.0.0.57)。
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "10.0.0.57"
DC2 に Active Directory ドメインサービスの役割をインストールします。
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
DC2 を既存ドメインの DC に昇格させます。
$cred = New-Object System.Management.Automation.PSCredential(
"TEST\Administrator",
(Read-Host "Password" -AsSecureString)
)
TEST\Administrator のパスワードを求められるので、DC1 の RDP 接続時に使用したパスワードを入力します。
Install-ADDSDomainController -DomainName "test.example.local" -Credential $cred
ディレクトリサービス復元モード(DSRM)のパスワードを設定すると、インストールが進みます。
昇格が完了すると、DC2 が自動で再起動し、RDP 接続が切断されます。
DC に昇格すると、ローカル SAM の管理者でのログオンはできなくなり、以降はドメインの Administrator(TEST\Administrator)でログオンします。
そのため、以降の DC2 への RDP 接続には、TEST\Administrator アカウントと DC1 と同じパスワードを使います。
なお、昇格時に設定した DSRM のパスワードは、通常のログオンではなく、ディレクトリサービス復元モードで起動する場合(AD データベースの復元時など)に使用するものです。
3. 5 つの FSMO 役割のうち、一部を DC1 から DC2 に転送
転送前の時点では、DC1 が 5 つの FSMO の役割をすべて保持しています。
転送は、元の保持者(DC1)と受け取る側(DC2)が稼働し、通信できている状態で行います。
PS C:\Windows\system32> netdom query fsmo
Schema master DC1.test.example.local
Domain naming master DC1.test.example.local
PDC DC1.test.example.local
RID pool manager DC1.test.example.local
Infrastructure master DC1.test.example.local
PDC エミュレーターと RID マスターの役割を、DC1 から DC2 に転送してみます。
Move-ADDirectoryServerOperationMasterRole -Identity "DC2" -OperationMasterRole PDCEmulator, RIDMaster
転送後に確認すると、PDC エミュレーターと RID マスターの役割が DC2 に移ったことが確認できました。
PS C:\Windows\system32> netdom query fsmo
Schema master DC1.test.example.local
Domain naming master DC1.test.example.local
PDC DC2.test.example.local
RID pool manager DC2.test.example.local
Infrastructure master DC1.test.example.local
4. DC2 を停止して擬似的に障害状態を再現
EC2 コンソールにて、DC2 のインスタンスを停止します。
その後、DC1 にて FSMO の役割の保持者を確認すると、PDC エミュレーターと RID マスターの役割が未だに DC2 にあることが確認できます。
PS C:\Windows\system32> netdom query fsmo
Schema master DC1.test.example.local
Domain naming master DC1.test.example.local
PDC DC2.test.example.local
RID pool manager DC2.test.example.local
Infrastructure master DC1.test.example.local
DC の正常性を確認するコマンドを DC1 にて実行します。
repadmin /showrepl
net share
dcdiag /v
DC の正常性を確認するコマンドの実行結果
以下は、repadmin /showrepl と dcdiag /v の出力のうち、DC2 に関する部分を抜粋したものです。
repadmin /showrepl では、DC2 から受け取る 5 つのパーティションすべてでレプリケーションが失敗していることを示す出力が確認できました。
DC=test,DC=example,DC=local
Default-First-Site-Name\DC2 via RPC
DSA object GUID: b91ebf9c-b906-4a9a-a999-935c72c3577b
Last attempt @ 2026-10-14 01:52:35 failed, result 1722 (0x6ba):
The RPC server is unavailable.
133 consecutive failure(s).
Last success @ 2026-10-08 14:01:26.
CN=Configuration,DC=test,DC=example,DC=local
Default-First-Site-Name\DC2 via RPC
DSA object GUID: b91ebf9c-b906-4a9a-a999-935c72c3577b
Last attempt @ 2026-10-14 01:53:17 failed, result 1722 (0x6ba):
The RPC server is unavailable.
132 consecutive failure(s).
Last success @ 2026-10-08 13:57:16.
CN=Schema,CN=Configuration,DC=test,DC=example,DC=local
Default-First-Site-Name\DC2 via RPC
DSA object GUID: b91ebf9c-b906-4a9a-a999-935c72c3577b
Last attempt @ 2026-10-14 01:53:59 failed, result 1722 (0x6ba):
The RPC server is unavailable.
132 consecutive failure(s).
Last success @ 2026-10-08 13:56:46.
DC=DomainDnsZones,DC=test,DC=example,DC=local
Default-First-Site-Name\DC2 via RPC
DSA object GUID: b91ebf9c-b906-4a9a-a999-935c72c3577b
Last attempt @ 2026-10-14 01:52:35 failed, result 1256 (0x4e8):
The remote system is not available. For information about network troubleshooting, see Windows Help.
132 consecutive failure(s).
Last success @ 2026-10-08 14:03:12.
DC=ForestDnsZones,DC=test,DC=example,DC=local
Default-First-Site-Name\DC2 via RPC
DSA object GUID: b91ebf9c-b906-4a9a-a999-935c72c3577b
Last attempt @ 2026-10-14 01:52:35 failed, result 1256 (0x4e8):
The remote system is not available. For information about network troubleshooting, see Windows Help.
132 consecutive failure(s).
Last success @ 2026-10-08 14:01:29.
dcdiag /v では、DFSREvent と Replications の 2 つのテストが失敗していることを示す出力が確認できました。
EventID: 0xC0001390
The DFS Replication service failed to communicate with partner DC2
for replication group Domain System Volume.
Error: 1722 (The RPC server is unavailable.)
[Replications Check,DC1] A recent replication attempt failed:
From DC2 to DC1
The replication generated an error (1722):
The RPC server is unavailable.
The source remains down. Please check the machine.
5. DC2 が保持している FSMO の役割を押収
押収する前に、次を確認します。
- 元の保持者(DC2)が復旧できないこと
repadmin /showreplを実行し、DC2 の最終レプリケーション成功時刻を確認(この時刻以降に行った変更は失われる可能性があるため)
DC1 で、-Force を付けた次のコマンドを順番に実行します。
-Force を付けると、元の FSMO 役割保持者である DC2 と通信できなくても、DC1 が強制的に役割を引き取ります。この操作が前述の「押収」にあたります(FSMO の「転送」と「押収」の違いを参照)。
Move-ADDirectoryServerOperationMasterRole -Identity "DC1" -OperationMasterRole PDCEmulator -Force
Move-ADDirectoryServerOperationMasterRole -Identity "DC1" -OperationMasterRole RIDMaster -Force
実行後に FSMO の役割の保持者を確認すると、5 つの役割すべての保持者が DC1 となったことが確認できました。
PS C:\Users\Administrator> netdom query fsmo
Schema master DC1.test.example.local
Domain naming master DC1.test.example.local
PDC DC1.test.example.local
RID pool manager DC1.test.example.local
Infrastructure master DC1.test.example.local
6. メタデータクリーンアップ
DC1 に RDP で接続し、Active Directory ドメインサービスに残っている DC2 の情報を削除します。
今回は、GUI での操作手順を紹介します。
(1) DC のコンピューターオブジェクトの削除
dsa.mscを実行して、DC2 を削除します。
![[Domain Controllers] で DC2 を右クリックし、[Delete] をクリックする](https://devio2024-media.developers.io/image/upload/c_limit,w_1200/f_auto/q_auto/v1791948512/2026/10/14/sg8eau55i0hxolt7z9qx.png)
[Domain Controllers] で DC2 を右クリックし、[Delete] をクリックする
詳細な手順
- いずれかのドメイン コントローラー にログオンします。
- [Windows] キーと [R] キーを同時に押下し、[ファイル名を指定して実行] を起動します。
- [ファイル名を指定して実行] から dsa.msc を実行します。
- 左ペインのツリーを [Active Directory ユーザーとコンピューター] - [<ドメイン名>] - [Domain Controllers] の順に展開します。
- 右ペインにて<削除対象の ドメイン コントローラー> を右クリックし、[削除] をクリックします。
- “<削除対象の ドメイン コントローラー> という名前の コンピューター を削除しますか?” と表示されたら、[はい] をクリックします。
- [このドメイン コントローラーは完全にオフラインなため、Active Directory ドメイン サービス インストール ウィザード (ドメイン コントローラーPROMO) を使用して降格できない] をオンにし、[削除] をクリックします。
- “この Active Directory ドメイン コントローラーはグローバル カタログです。削除を続行しますか?” と表示された場合には、[はい] をクリックします。
(2) レプリケーションの接続オブジェクトとサーバーオブジェクトの削除
dssite.msc を実行して、DC2 の接続オブジェクトとサーバーオブジェクトを削除します。
![[Servers] 配下の DC2 を右クリックし、[Delete] をクリックする](https://devio2024-media.developers.io/image/upload/c_limit,w_1200/f_auto/q_auto/v1791948874/2026/10/14/b5vpgxqfg5sux4etmsn4.png)
[Servers] 配下の DC2 を右クリックし、[Delete] をクリックする
詳細な手順
- [ファイル名を指定して実行] から dssite.msc を実行します。
- 左ペインのツリーを [Sites] - [<任意のサイト>] - [Servers] - [<削除対象の ドメイン コントローラー 以外の任意の ドメイン コントローラー>] - [NTDS Settings] を選択します。
- 右ペインの [レプリケート元サーバー] 列が削除対象の ドメイン コントローラー となっているオブジェクトが存在している場合には、左ペインの [NTDS Settings] を右クリックし、[すべてのタスク] - [レプリケーション トポロジの確認] をクリックします。
- [レプリケーション トポロジの確認] のダイアログが表示されたら、[OK] をクリックします。
- 左ペインの [NTDS Settings] を右クリックし、[最新の情報に更新] をクリックします。右ペインから削除対象の ドメイン コントローラー のオブジェクトが削除されていることを確認します。
- 上記の手順 2 から 5 までの手順を、削除対象の ドメイン コントローラー を除く、すべての ドメイン コントローラー について実施します。
- 左ペインのツリーを [Sites] - [<削除対象の ドメイン コントローラー が所属するサイト>] - [Servers] - [<削除対象 ドメイン コントローラー>] の順に展開します。
- 左ペインの [Servers] 配下の削除対象の ドメイン コントローラー を右クリックし、[削除] をクリックします。
- “<削除対象の ドメイン コントローラー> という名前の サーバー を削除しますか?” と表示されたら、[はい] をクリックします。
(3) FRS / DFSR のオブジェクトの削除
adsiedit.msc を実行して、SYSVOL の複製トポロジから DC2 のオブジェクトを削除します。
![今回の検証環境では、[CN=Topology] 配下に DC1 のみが存在し、DC2 は存在しないためスキップ](https://devio2024-media.developers.io/image/upload/c_limit,w_1200/f_auto/q_auto/v1791949294/2026/10/14/mpm2vdeebk93d8s5taof.png)
今回の検証環境では、[CN=Topology] 配下に DC1 のみが存在し、DC2 は存在しないためスキップ
詳細な手順
- [ファイル名を指定して実行] から adsiedit.msc を実行します。
- 左ペインの [ADSI エディター] を右クリックし、[接続] をクリックします。
- [既知の名前付けコンテキストを選択する] から [既定の名前付けコンテキスト] が選択されていることを確認し、[OK] をクリックします。
- 左ペインのツリーを [既定の名前付けコンテキスト] - [<ドメインの DN>] - [CN=System] - [CN=File Replication Service] - [CN=Domain System Volume (SYSVOL share)] の順に展開します。
([CN=File Replication Service] 配下に [CN=Domain System Volume (SYSVOL share)] が存在しない場合には、FRS が使用されていないため、手順 6 に進みます。) - 中央ペインに [CN=<削除対象の ドメイン コントローラー>] のオブジェクトが存在していれば、そのオブジェクトを右クリックし、[削除] をクリックします。
その際に “このオブジェクトを削除しますか?” と表示されたら、[はい] をクリックします。手順 6 以降はスキップし、手順 (4) に進みます。 - 左ペインのツリーを [既定の名前付けコンテキスト] - [<ドメインの DN>] - [CN=System] - [CN=DFSR-GlobalSettings] - [CN=Domain System Volume] - [CN=Topology] の順に展開します。
- 中央ペインに [CN=<削除対象の ドメイン コントローラー>] のオブジェクトが存在していれば、そのオブジェクトを右クリックし、[削除] をクリックします。その際に “このオブジェクトを削除しますか?” と表示されたら、[はい] をクリックします。
(4) DNS レコードの削除
dnsmgmt.msc を実行して、DC2 に関する DNS レコードを削除します。
![NS レコード(dc2.test.example.local)のプロパティを開き、[Name Servers] タブで DC2 を削除する](https://devio2024-media.developers.io/image/upload/c_limit,w_1200/f_auto/q_auto/v1791949418/2026/10/14/w3gnsg54xellhyrmiiq8.png)
NS レコード(dc2.test.example.local)のプロパティを開き、[Name Servers] タブで DC2 を削除する
詳細な手順
- [ファイル名を指定して実行] から dnsmgmt.msc を実行します。
- [前方参照ゾーン] - [_msdcs.<フォレスト ルート ドメインの FQDN>] 配下を展開していき、[データ] 列が削除対象の ドメイン コントローラー もしくは削除対象の ドメイン コントローラー の IP アドレスとなっているレコードが存在すれば、そのレコードを削除します。
(A レコードや CNAME レコード、SRV レコードは対象のレコードを右クリックし、[削除] をクリックすることによって削除できます。NS レコードに関しては一旦そのレコードのプロパティ画面を開いた上で、対象のレコードを削除する必要があります。) - 同様に、[前方参照ゾーン] - [<ドメインの FQDN>] 配下を展開していき、[データ] 列が削除対象の ドメイン コントローラー もしくは削除対象の ドメイン コントローラー の IP アドレスとなっているレコードが存在すれば、そのレコードを削除します。
7. 残存するドメインコントローラーにて正常性確認
最後に、DC の正常性を確認すると、エラーが出力されなくなったことが確認できました。
repadmin /showrepl
net share
dcdiag /v
まとめ
今回は、EC2 上にセルフマネージドで構築した Active Directory で、ドメインコントローラー(DC)を降格できなくなった状況を再現し、FSMO の役割の押収とメタデータクリーンアップ手順を検証しました。
本ブログの内容が、どなたかのお役に立てば幸いです。
参考資料
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました。







