オラクる。

oracle専門ブログにしてみようかな~っと

2013年08月

Active Directoryのデータベース、ログファイルを配置したドライブ(通常はCドライブ)の容量が少なくなった場合、データベースやログファイルを別ドライブに移動するのが有効な手段です。
もちろん、そのままコピー・アンド・ペーストで移動できる訳ありません。
Active directoryサービスを停止してから移動する必要があります。

手順1:Active Directoryサービスを停止します。

C:\Users\Administrator.AD1.001>net stop ntds
次のサービスは Active Directory Domain Services サービスに依存しています。
Active Directory Domain Services サービスを停止すると、これらのサービスも停止さ
れます。

   Kerberos Key Distribution Center
   Intersite Messaging
   DNS Server
   DFS Replication

この操作を続行しますか? (Y/N) [N]: y
.
Kerberos Key Distribution Center サービスは正常に停止されました。

Intersite Messaging サービスを停止中です.
Intersite Messaging サービスは正常に停止されました。

DNS Server サービスを停止中です.
DNS Server サービスは正常に停止されました。

.
DFS Replication サービスは正常に停止されました。

Active Directory Domain Services サービスを停止中です.
Active Directory Domain Services サービスは正常に停止されました。

 手順2:NtdsutilコマンドでMove Db Toサブコマンドを実行する。

C:\Users\Administrator.AD1.001>ntdsutil
ntdsutil: activate instance ntds
アクティブ インスタンスが "ntds" に設定されました。
ntdsutil: files
file maintenance: move db to d:\ad

バックアップ除外キーを正しく更新しました。
NTFS セキュリティを C:\Windows\NTDS から d:\ad にコピーしています...
NTDS データベースの以前の場所 C:\Windows\NTDS\dsadata.bak が利用できません。既定
の NTFS セキュリティが NTDS フォルダーに適用されます。
NTDS フォルダーの既定の NTFS セキュリティは再起動後に設定されます。
NTFS セキュリティを C:\Windows\NTDS から d:\ad にコピーしています...

ドライブの情報:

        C:\ NTFS (固定ドライブ  ) 空き(21.5 Gb) 合計(39.9 Gb)
        D:\ NTFS (固定ドライブ  ) 空き(22.8 Gb) 合計(29.9 Gb)

DS パスの情報:

        データベース              : d:\ad\ntds.dit - 26.1 Mb
        バックアップ ディレクトリ : d:\ad\DSADATA.BAK
        作業ディレクトリ          : d:\ad
        ログ ディレクトリ         : C:\Windows\NTDS - 合計 30.0 Mb
                        edbres00002.jrs - 10.0 Mb
                        edbres00001.jrs - 10.0 Mb
                        edb.log - 10.0 Mb

データベースの移動に成功しました。
直ちにバックアップを作成してください。そうしないと、
復元で新しいファイルの場所を保持できません。
file maintenance: quit
ntdsutil: quit

 手順3:Active directoryサービスを開始する。

C:\Users\Administrator.AD1.001>net start ntds
Active Directory Domain Services サービスを開始します..
Active Directory Domain Services サービスは正常に開始されました。
 
以上の手順でActive directoryのデータベースファイルがc:\windows\ntdsからd:\tempに移動されました。
ログファイルを移動する場合はMove Logs Toサブコマンドを実行します。 

例えば、2Mまでしか送れないアップロードサイトに5Mのファイルを送りたいとします。
この時、5Mのファイルを2M以下に分割する必要があります。

Windwosでは大きなファイルを分割するソフトは数多くありますが、Windows標準のmakecabツールを利用してもファイルの分割を行なうことが出来ます。
ただし、GUI画面がないので、若干手間はかかります。

手順1:まずは分割したいファイル、分割したファイルのファイル名、分割サイズなどを指定する設定ファイルを作ります。
拡張子はddfにするのが一般的らしいです。

ex

.Set CabinetNameTemplate=test-file*.cab ;ファイルの命名規則(test-file1.cab、test-file2.cab・・・という名前になります)
.Set MaxDiskSize=5242880 ;分割後のサイズ 単位はバイト 512の倍数である必要があります
.Set Cabinet=on ;onにしないと分割されません
.Set Compress=on ;圧縮するかを指定します
.Set DiskDirectoryTemplate= ;ここで圧縮用のフォルダを作成するかを指定します。指定しない場合はカレントフォルダに作成されます
d:\temp\test\test-file ;分割対象のファイルを指定します

cab.ddfというファイルにしました。

手順2:コマンドプロンプトからmakecabコマンドを指定します。/Fで先ほど作成したddfファイルを指定します。

ex

d:\temp\test>makecab /F D:\temp\test\cab.ddf
Cabinet Maker - Lossless Data Compression Tool

15,723,833 bytes in 1 files
Total files:              1
Bytes before:    15,723,833
Bytes after:     15,377,528
After/Before:            97.80% compression
Time:                    16.93 seconds ( 0 hr  0 min 16.93 sec)
Throughput:             906.93 Kb/second

手順3:実行前後のフォルダ画面

 1

test-file 15Mを5Mに分割してみます。

2

実行後、test-file1,2,3.cabという5Mのファイルが作られました。

ちなみに結合はcabファイルを普通に解凍するだけで行なえます。 

Active Directoryのデータベースは追加、削除が繰り返されると、断片化し容量が無駄に消費されてしまいます。
さらに断片化はパフォーマンスの低下を招くので、最適化の作業が必要になります。

WindowsではActive Directoryのデータベースを最適化する機能があります。
しかし、ADサービスを停止する必要があります。

手順1:Active Directoryサービスを停止します。(依存するサービスも停止します)

C:\Users\Administrator.AD1.001>net stop ntds
次のサービスは Active Directory Domain Services サービスに依存しています。
Active Directory Domain Services サービスを停止すると、これらのサービスも停止さ
れます。

   Kerberos Key Distribution Center
   Intersite Messaging
   DNS Server
   DFS Replication

この操作を続行しますか? (Y/N) [N]: y
Kerberos Key Distribution Center サービスを停止中です.
Kerberos Key Distribution Center サービスは正常に停止されました。

Intersite Messaging サービスを停止中です.
Intersite Messaging サービスは正常に停止されました。

DNS Server サービスを停止中です.
DNS Server サービスは正常に停止されました。

.
DFS Replication サービスは正常に停止されました。

Active Directory Domain Services サービスを停止中です.
Active Directory Domain Services サービスは正常に停止されました。

手順2:ntdsutilでcompatコマンドを実行します。

C:\Users\Administrator.AD1.001>ntdsutil
ntdsutil: activate instance ntds
アクティブ インスタンスが "ntds" に設定されました。
ntdsutil: files
file maintenance: compact to d:\temp
最適化モードを起動しています...
     ソース データベース: C:\Windows\NTDS\ntds.dit
     ターゲット データベース: d:\temp\ntds.dit

                  Defragmentation  Status (% complete)

          0    10   20   30   40   50   60   70   80   90  100
          |----|----|----|----|----|----|----|----|----|----|
          ...................................................

このデータベースの完全なバックアップを今すぐ作成する
ことをお勧めします。最適化の前に作成されたバックアップ
を復元すると、データベースはそのバックアップ時の状態に
ロールバックされます。

圧縮に成功しました。次のコマンドで、ファイルのコピーと古いログ ファイルの削除を
実行してください:
   copy "d:\temp\ntds.dit" "C:\Windows\NTDS\ntds.dit"
   del C:\Windows\NTDS\*.log


file maintenance: quit
ntdsutil: quit 

手順3:新しく作られたデータベースファイル(例の場合:d:\temp\ntds.dit)を既存のデータベースファイルに置き換えます。不要なログファイル(恐らく更新履歴)も削除します。

C:\Users\Administrator.AD1.001>copy "d:\temp\ntds.dit" "C:\Windows\NTDS\ntds.dit
"
C:\Windows\NTDS\ntds.dit を上書きしますか? (Yes/No/All): y
        1 個のファイルをコピーしました。

C:\Users\Administrator.AD1.001>del C:\Windows\NTDS\*.log
 
手順4:Active Directoryサービスを再起動します。(依存しているサービスも自動的に起動します)

C:\Users\Administrator.AD1.001>net start ntds
Active Directory Domain Services サービスを開始します..
Active Directory Domain Services サービスは正常に開始されました。

削除や追加を伴なう大規模なメンテナンスを行なった場合に有用な作業かも知れません。 

誤って、ADのオブジェクトを削除してしまった!
そうだ!バックアップから戻そう!という時、ちょっと注意が必要です。

例えば、ドメインにA、Bという2つのドメインコントローラがいる場合
AとBは双方向でレプリケートされています。

A(User1,User2)↔B(User1,User2) ・・・バックアップ1

AでAD(システム状態)のバックアップを取得しました。 
バックアップ後にAで誤ってUser1を削除してしまいました。 

A(User2)↔B(User1,User2) 

BにもUser1が削除された状態でレプリケートされます。

A(User2)→B(User2) 

Aを復元モードで起動し、バックアップ1を利用したリストアを行ないます。

A(User1、User2)↔B(User2)

復元モードからの再起動後、BからAへのレプリケートが走り、再びUser1が削除されてしまいます。

A(User2)←B(User2)

このような事態を避けるため、リストア直後に誤って削除してしまった、User1を「権限ある復元」としてマークします。
下記に示す例は誤ってOUを削除してしまった場合です。
なお、wbadminでリストアした後、再起動を促すメッセージが出力されますが、ここはグッとこらえてCtl+Cです。
restore subtreeでオブジェクトの識別子を指定する必要があります。

システムの回復操作を完了するには、コンピューターの再起動が必要です。
今すぐコンピューターを再起動するには、[Y] キーを押してください。
[Y] はい ^C
C:\Users\Administrator.AD1.002>ntdsutil
ntdsutil: activate instance ntds
アクティブ インスタンスが "ntds" に設定されました。
ntdsutil: authoritative restore
authoritative restore: restore subtree OU=役員,OU=社員,DC=contoso,DC=com

DIT データベースを開いています... 完了

現在の時刻は 08-24-13 00:12.16 です。
最新のデータベースの更新は 08-20-13 23:21.57 に実行されました。
属性のバージョン番号を 400000 大きくします。

更新の必要なレコードをカウントしています...
検出されたレコード: 0000000005
完了


更新するレコードが 5 個検出されました。

レコードを更新しています...
残りのレコード: 0000000000
完了


5 個のレコードを正常に更新しました。

正式に復元されたオブジェクトの一覧を持つ以下のテキスト ファイルが現在の作業ディ
レクトリに作成されました:
        ar_20130824-001216_objects.txt

指定されたオブジェクトの 1 つまたはそれ以上が、このドメインにバックリンクを持っ
ています。リンク復元操作付きの以下の LDIF ファイルが、現在の作業ディレクトリに作
成されました:
        ar_20130824-001216_links_contoso.com.ldf

Authoritative Restore が正常に終了しました。

authoritative restore: quit
ntdsutil: quit

 再起動後、リストアを行なったAからBへのレプリケートが行なわれます。
(User1を権限ある復元としてマーク)

A(User1、User2)↔B(User2)

 A(User1、User2)→B(User1、User2)

Windows Serverバックアップで取得したADのバックアップ(システム状態)のリストアはディレクトリサービスの復元モードでサーバを再起動した状態で行ないます。
つまり、ADサービスが停止した状態で行ないます。
GUIからも可能ですが、今回は前回と同じように標準のコマンドラインツールwbadminを利用してリストアを行ないます。

まずは、バックアップのバージョン番号を調べます。

C:\Users\Administrator.AD1.002>wbadmin.exe Get Versions
wbadmin 1.0 - バックアップ コマンド ライン ツール
(C) Copyright 2004 Microsoft Corp.

バックアップ時間: 2013/08/20 23:28
バックアップ対象: 1394/USB ディスク ラベル付き D:
バージョン識別子: 08/20/2013-14:28 ←
回復可能: ボリューム, ファイル, アプリケーション, システム状態
スナップショット ID: {a343b522-61d3-464a-b1d7-7e7acfba0e95}

08/20/2013-14:28」がバージョン番号になります。
では、リストアしてみましょう。

「-Version:」 でバージョン番号を指定します。

C:\Users\Administrator.AD1.002>wbadmin.exe Start Systemstaterecovery -Version:08/20/2013-14:28
wbadmin 1.0 - バックアップ コマンド ライン ツール
(C) Copyright 2004 Microsoft Corp.

システム状態の回復操作を開始しますか?
[Y] はい [N] いいえ y

注意: 回復操作を行うと、ローカル コンピューター上のすべてのレプリケートされた
コンテンツは、回復後に再同期されます。これにより、待ち時間または
障害が発生する可能性があります。
システム状態の回復を開始した後で一時停止したり取り消したりすることはできません。

回復操作を完了するためには、サーバーの再起動が必要です。

続行しますか?
[Y] はい [N] いいえ y

システム状態の回復操作を開始しています [2013/08/21 23:49]。
回復するファイルを処理しています。これには数分かかることがあります...
(83) 個のファイルが処理されました。
(185) 個のファイルが処理されました。
(10677) 個のファイルが処理されました。
(14932) 個のファイルが処理されました。
(31651) 個のファイルが処理されました。
(36910) 個のファイルが処理されました。
(45434) 個のファイルが処理されました。
(55481) 個のファイルが処理されました。
(73873) 個のファイルが処理されました。
(76200) 個のファイルが処理されました。
(76200) 個のファイルが処理されました。
(76200) 個のファイルが処理されました。
ファイルの処理が完了しました。
バックアップからのファイルの回復を開始します
'Performance Counters Writer' によって報告されたファイルの回復が完了しました。
'DFS Replication service writer' によって報告されたファイルの回復が完了しました
'COM+ REGDB Writer' によって報告されたファイルの回復が完了しました。
'VSS Metadata Store Writer' によって報告されたファイルの回復が完了しました。
'WMI Writer' によって報告されたファイルの回復が完了しました。
進行状況: 0%
'Registry Writer' によって報告されたファイルを現在回復中です
'Registry Writer' によって報告されたファイルの回復が完了しました。
'NTDS' によって報告されたファイルの回復が完了しました。
'Task Scheduler Writer' によって報告されたファイルの回復が完了しました。
進行状況: 7%
'System Writer' によって報告されたファイルを現在回復中です
進行状況: 16%

(中略)

'System Writer' によって報告されたファイルを現在回復中です
進行状況: 97%
'System Writer' によって報告されたファイルを現在回復中です
回復操作の準備をしています...
回復操作の概要:
---------------

システム状態の回復が正常に完了しました [2013/08/21 23:56]。
正常に回復されたファイルのログ:
C:\Windows\Logs\WindowsServerBackup\SystemStateRestore-21-08-2013_23-49-48.log

この操作を完了するには、サーバーを再起動してください。
注意: システム状態の回復操作によってシステム ファイルの回復が試みられる間
しばらくお待ちください。置き換えられるファイルの数に応じて、処理が完了するまで
に数分かかる可能性があります。また、処理中にコンピューターの再起動が複数回
必要です。この処理を中断しないでください。

システムの回復操作を完了するには、コンピューターの再起動が必要です。
今すぐコンピューターを再起動するには、[Y] キーを押してください。
[Y] はい
 
 最後に「Y」を押下することでコンピューターが再起動されます。
この後、通常モードで再起動するとドメイン内の他のADサーバから最新のデータがレプリケートされ、最新の状態にリストアされます。
これが「権限のない復元」です。
では、「権限のある復元」とは、どんなものか?
それは次回 

このページのトップヘ