【Management】DPM 2007 の初期設定を自動化 その3-1 まずは基礎知識から-保護グループの情報取得
DPM2007シリーズもそろそろ終盤です。
前回までで、DPMのエージェントインストールまでが完了しました。
- 【Management】DPM 2007 の初期設定を自動化 その1 ディスクを追加する
- 【Management】DPM 2007 の初期設定を自動化 その2 DPM保護エージェントをインストールする
- 【Management】DPM 2007 の初期設定を自動化 その2 番外編 ~ Attach-ProductionServer.ps1 の中身を見る
ここからは保護グループの作成を行うのですが、ちょっと複雑なので、まずは保護グループの情報取得、つまり設定内容を参照する手順を通して、オブジェクト構造のイメージをつかんでください。
保護グループのバックアップと回復に関するポリシーには、バックアップの頻度や回復の長期的要件および短期的要件に関する情報が格納されています。管理コンソールの設定画面で見ると、以下のような情報です。
上記の保護ポリシーの情報を取得するには、保護グループのインスタンスを Get-PolicyObjective コマンドレットに渡します。
さっそく管理シェル上で保護グループの保護ポリシーを取得してみます。
ここでは、上の2つ(ファイルサーバーとSQL Server)に関する保護ポリシーを取得してみます。
まずは、保護グループのインスタンスを取得します。おなじみの方法ですね。DJ-DPM01 はDPMサーバー名です。
PS C:\> $PG = Get-ProtectionGroup DJ-DPM01 PS C:\> $PG Name Protection method ---- ----------------- ProtectionGroup01 短期的 (ディスクを使用) ProtectionGroup02 短期的 (ディスクを使用) |
次に、それぞれの保護グループ(ProtectionGroup01 と 02)の保護ポリシーを取得します。
保護ポリシーの取得は、Get-PolicyObjective を使用します。注意しなければならないのは、Get-PolicyObjective に渡せるのは1回に1つの保護グループだけです。
PS C:\> Get-PolicyObjective -ProtectionGroup $PG[0] -ShortTerm Retention Range Synchronization Frequency --------------- ------------------------- 5 日 15 分ごと PS C:\> Get-PolicyObjective -ProtectionGroup $PG[1] -ShortTerm Retention Range Synchronization Frequency --------------- ------------------------- 5 日 15 分ごと |
ひとまずこれで終わりなのですが、正直、なんのこっちゃ?ってかんじですよね。上の図と照らし合わせてみても、まったく情報が足りません。
もうすこし掘り下げましょう。
◆「保存期間」の取り方
「保存期間」は、Get-PolicyObjective コマンドレットのメソッドである、Get-RecoveryRange() を使用します。以下の例では、$PG[1] つまりProtectionGroup02 の保存期間を取得しています。注目していただきたいのは、Get-RecoveryRange()に対して、さらにRangeプロパティ、およびUnitプロパティを使用しているところです。Get-RecoveryRange()で取得しただけでは、使い勝手が悪いですよね。なので、「期間(range)」と「単位(Unit)」それぞれを個別に取得しています。
PS C:\> $PO_1 = Get-PolicyObjective -ProtectionGroup $PG[1] -ShortTerm PS C:\> $PO_1 Retention Range Synchronization Frequency --------------- ------------------------- 5 日 15 分ごと PS C:\> $PO_1.Range PS C:\> $PO_1.Get_RecoveryRange() Range Unit ----- ---- 5 Days PS C:\> $PO_1.Get_RecoveryRange().Range 5 PS C:\> $PO_1.Get_RecoveryRange().Unit Days PS C:\> |
◆同期のスケジュール~ファイルサーバーの「同期の間隔」と「ファイルの回復ポイント(シャドウコピー)の作成時間」の取り方
同期の間隔を取得するには、Get-Schedules() メソッドを使用します。
以下は、ファイルサーバーを含んだ保護グループの同期スケジュールを取得して表示したものです。 同期間隔が15分と表示されているのに加えて、シャドウコピーの作成時間も表示されています。ファイルサーバーの場合、「同期」とは「NTFS ジャーナルファイル」の同期を意味し、回復ポイントが作成されるわけではないことに注意する必要があります。じゃ、NTFS ジャーナルファイルってなんで同期してるの?ってことになりますが、NTFSジャーナルファイルを使用して、手動で回復ポイントを作成することができます。管理者が、「あ、そうだ、今の時点で回復ポイントを作っておこう」という意思に基づき手動で(もちろんスクリプトも可能)回復ポイントを作成しなければ、「ファイルの回復ポイント(以下の出力では、「シャドウコピー」と表示されています)」のスケジュールでのみ回復ポイントが作成されます。
PS C:\> $PO_0.Get_Schedules() Schedule type Schedule ------------- -------- 同期 15 分ごと シャドウ コピー 0:00、 1:00、 8:00、 12:00、 18:00 ... |
ちなみに、以下の画面を見てください。回復時間に表示されているのは、上の出力結果である、0:00/1:00/8:00/12:00 であることがわかります。15分ごとに回復ポイントが作成されているのであれば、回復時間の一覧には、0:00/0:15/0:30。。。。などぞずらっと回復ポイントの一覧が表示されるはずですが、そうではありません。
さて、PowerShellの話に戻ります。上記のままでは、プログラム上、使い勝手が悪いので、もっと細かな単位で取得したいですね。そこで、 Get_Schedules() メソッドを使用して、一旦スケジュールのインタンスを取得します。
PS C:\> $objShc = $PO_0.Get_Schedules() |
$objSch には、「同期」のスケジュールと 「シャドウコピー」のスケジュールが格納されているので、アレイ値であることが予測できます。
それぞれの JobTypeプロパティを見てみましょう。「同期」は「Replication」、「シャドウコピー」は「ShadowCopy」というJobTypeで識別されていることがわかります。$objSch のインデックスに注意しながら見てください。「0」がReplication、「1」がShadowCopy であることがわかります。
PS C:\> $objSch[0].JobType Replication PS C:\> $objSch[1].JobType ShadowCopy PS C:\> $objSch[0].JobTypeString 同期 PS C:\> $objSch[1].JobTypeString シャドウ コピー |
Replication、ShadowCopy それぞれのJobType のタイミングを見てみます。
JobType = Replicaton のタイミングは、Frequency プロパティで参照します。
PS C:\ $objSch[0].Frequency 15 PS C:\ |
JobType = ShadowCopy のタイミングは TimesOfDay プロパティ および TimesOfWeek で参照することができます。 冒頭の画面「ファイルサーバーの保護ポリシー」と比較してみてください。
TimesOfDay には今日の日付も入っていることがわかります。これは、当日分のスケジュールに展開して表示されるためです。
設定を行った時間に影響されているのか、もしくはオフセットとして自動的に設定されたものなのか、「4分」という微妙なずれが見ているのが気になりますが...(笑)。
PS C:\> $objSch[1].TimesOfDay 2008年9月12日 8:04:00 2008年9月12日 1:04:00 2008年9月12日 12:04:00 2008年9月12日 0:04:00 2008年9月12日 18:04:00 PS C:\> $objSch[1].WeekDays Mo Tu We Th Fr Sa PS C:\> |
もうお気づきかと思いますが、TymesOfDay および WeekDay も複数値です。よって、以下のように個々の設定値を取りだすことができます。
PS C:\> $objSch[1].TimesOfDay [4] 2008年9月12日 0:04:00 PS C:\> $objSch[1].WeekDays [3] We |
# はぁぁぁ、長かったですね。構造について、なんとかご理解いただけましたか?
# 休むと余計に疲れるので、続けましょう。
さて、一方、以下はSQL Server を含んだ保護グループの同期スケジュールを取得して表示したものです。同期間隔が15分と表示されているのに加えて、高速完全コピーの作成時間も表示されています。SQL Server をはじめとするアプリケーションサーバーの場合、ファイルサーバーのバックアップとは「同期」の意味が異なります。アプリケーションサーバーでは、「同期」=「回復ポイントの作成」を意味しています。「高速完全バックアップ」については、ご存じの通り「フルバックアップの再作成」です。よって、ファイルサーバーのように単にジャーナルファイルが同期されるわけではなく、きちんと回復可能な状態として保存されます。
PS C:\> $PO_1.Get_Schedules() Schedule type Schedule ------------- -------- 同期 15 分ごと 高速完全 20:00 月、 火、 水、 木、 金、 土 |
以下の画面を見てください。SQL Server の回復画面です。ファイルサーバーとは異なり、同期の間隔(15分)単位で回復ポイントが作成されていることがわかります。
それでは、ファイルサーバー同様、GetSchedules() メソッドで取得した値を、細かく掘り下げてみましょう。
まずは、JobType です。同期が「Replication」であることはファイルサーバーと同様です。高速完全バックアップは「FullReplicationForApplication」という識別名で識別されていることに注意してください。
PS C:\> $PO_1.Get_Schedules()[0].JobType Replication PS C:\> $PO_1.Get_Schedules()[1].JobType FullReplicationForApplication PS C:\> $PO_1.Get_Schedules()[0].JobTypeString 同期 PS C:\> $PO_1.Get_Schedules()[1].JobTypeString 高速完全 PS C:\> |
回復ポイントの取得間隔(Frequency)や、高速完全バックアップの取得時間(TimesOfDay)、および高速完全バックアップの実施曜日(WeekDays)についてはファイルサーバーの場合と同様ですので、以下をご覧ください。
PS C:\> $PO_1.Get_Schedules()[0].Frequency 15 PS C:\> $PO_1.Get_Schedules()[1].TimesOfDay 2008年9月12日 20:00:00 PS C:\> $PO_1.Get_Schedules()[1].TimesOfDay[0] 2008年9月12日 20:00:00 PS C:\> $PO_1.Get_Schedules()[1].WeekDays Mo Tu We Th Fr Sa PS C:\> $PO_1.Get_Schedules()[1].WeekDays[4] Fr PS C:\> |
ということで、長くなりましてすみません。