System Center Operations Manager を備えた環境でデータベース上のメールボックスが検疫される

原文の記事の投稿日: 2012 年 6 月 28 日 (木曜日)

2012 年 7 月 3 日更新 : 「回避策」セクションに詳細情報を追加しました。

最近、私たちが CSS で目にしている問題として、同じメールボックス データベース上の多数のメールボックスが理由もなく検疫されているように見えるという問題があります。この点について、皆さんに注意を喚起しようと考えました。アプリケーション ログを調べると、次のような情報が含まれている多数の 10018 イベントが見つかるでしょう。

Log Name: Application
Source: MSExchangeIS
Event ID: 10018
Task Category: General
Level: Error
Description:
The mailbox for user <guid>: /o=Contoso /ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=UserMailbox has been quarantined. Access to this mailbox will be restricted to administrative logons for the next 6 hours.

さらに、Microsoft-Exchange-Troubleshooters/Operational イベント ログには、データべース空き領域のトラブルシューティング ツールによって検疫されたメールボックスごとに次のイベント ID 5410 が見つかるでしょう。

Log Name: Microsoft-Exchange-Troubleshooters/Operational
Source: Database Space
Event ID: 5410
Level: Warning
Keywords: Classic
Description:
The database space troubleshooter quarantined mailbox <guid> in database <DBName>.

ここで重要なのは、最後のセンテンスの "The database space troubleshooter (データべース空き領域のトラブルシューティング ツール)" です。System Center Operations Manager が展開されている環境では、既定でモニターが使用可能になっていて、データベース ボリュームとログ ボリュームに対してディスクの空き領域が調べられます。このモニターは、PowerShell スクリプト Troubleshoot-DatabaseSpace.ps1 を使用します。このスクリプトは、既定で Exchange 2010 に付属しています。Troubleshoot-DatabaseSpace.ps1 スクリプトの詳細については、TechNet の次の記事を参照してください。

シェルの Troubleshoot-DatabaseSpace.ps1 スクリプトを使用してデータベース ログ増加を管理する
https://technet.microsoft.com/ja-jp/library/ff477617.aspx

System Center チームは、最近、Exchange Management Pack 用の Service Pack 2 をリリースしました。この Service Pack では、このスクリプトを実行するためのタイムアウト値が調整されています。以前は、タイムアウト値が 300 秒で、モニターが 5 分ごとに実行されるように設定されていました。つまり、多くの大規模組織では、このスクリプトはほとんどタイムアウトになり、完了しないということです。このアップグレードをインストールすると、タイムアウト値が 1200 秒になります。さらに、モニターの実行頻度も 1 時間に 1 回になります。この変更により、トラブルシューティング ツールが、SP2 より前は実行していなかったコードを確実に実行するようになります。その結果、トラブルシューティング ツールがインフォメーション ストア Perfmon カウンターでバグを見つけて、データベースのログ バイト生成レートを判定するようになります (Perfmon レートは 1.0E+19 Bytes/Hr を超えることがあります)。1 時間あたりのログ生成の概算レートがデータベース ボリュームまたはログ ボリューム上の残りのディスク空き領域の容量を超える場合、トラブルシューティング ツールはログ生成によってディスク空き領域がすべて消費され、データベースがマウント解除されてしまうのを防ぐため、メールボックスの検疫を開始します。トラブルシューティング ツールがこの条件に行き当たるのは、Perfmon カウンターが偽りの値を示しているときだと思われるので (Perfmon カウンターは 1 分ごとに更新されるので、偽りの値が 1 分以上持続することはありません)、これは頻繁に起こるわけではなく、中程度の頻度で起こると考えられます。

どのような影響があるか

TechNet の記事に記されているように、このスクリプトの主な機能は、生成レートを追跡することと、データベース ボリュームとログ ボリュームのディスク空き領域を調べることです。このスクリプトが実行されると、ストアの Perfmon カウンターを使ってログ生成レートを判定し、現在のレートにおいて、しきい値 (既定値は 12 時間) の時間内にディスク領域不足が生じるかどうかを計算します。そして、ディスク領域不足になる場合は、オプションでメールボックス (一度に最高で 150 個) の検疫を開始します。また、ディスク空き領域の割合が指定の値を下回ったときにも、オプションでメールボックスを検疫します。ディスク空き領域の割合の既定値は 25% です。これらの条件のどちらかに当てはまるときにメールボックスを検疫するためには、スクリプトに ?Quarantine パラメーターを渡す必要があります。

SCOM 2007 以降で使用されるモニターは、既定で Quarantine パラメーターを使用します。これを変更するためのオプションはありません。なぜなら、Management Pack はシールされているからです。つまり、データベースのデータベース ボリュームまたはログ ボリュームのディスク空き領域が 25% を下回り、しかも計算されたログ生成レートでは次の 12 時間以内に残りのディスク領域が消費されてしまう場合、最も使用度の高いユーザーが検疫されることになります。データベースに多数のメールボックスが存在する場合は、結果的に多数のメールボックスが短期間で検疫される可能性があります。

どのような対策があるか

当然ですが、多数のメールボックスが検疫されるのは望ましい動作ではありません。それらのユーザーが機能不全に陥るからです。とはいえ、ディスク領域不足でデータベース全体がマウント解除されるよりはましです。そうなれば、そのデータベース上のすべてのユーザーが機能不全に陥ることになります。検疫されたメールボックスは、そのメールボックスの GUID をレジストリから削除することによって手動で解放することもできますが、それは最適な解決策ではありません。なぜなら、次にモニターを実行したときに、同じメールボックスが再び検疫される可能性があるからです。

検疫されたメールボックスは次の場所で識別されます。

Hkey_Local_Machine\SYSTEM\CurrentControlSet\Services\MSexchangeIS\Servername\Private-<D Bguid>\Quarantined Mailboxes\ {Mailbox GUID}

私たちはこの状況に気付いていて、修正プログラムを実装しようと努めています。 私たちはこの問題を解決するための最善策を模索していますが、それと同時にメールボックスが検疫されないようにする次善策 (回避策) があることもお知らせしたいと思います。なお、この問題に遭遇するお客様を増やさないようにするため、ダウンロード センターから Exchange 2010 SP2 Management Pack を一時的に削除しました。

回避策

オーバーライド (上書き) を作成して、ディスクの空き領域を調べるモニターを無効にします。そうすれば、Troubleshoot-DatabaseSpace.ps1 ファイルがまったく実行されなくなります。

上書きを作成するときのベスト プラクティスは、それらの上書きを System Center Operations Manager 内のカスタマイズ専用の新しい管理パックに入れることです。このようにすると、作成した上書きや他のカスタム設定をすばやく簡単に管理できるようになります。このための管理パックをまだお持ちでなければ、次の手順を実行することによって作成できます。

  1. オペレーション コンソールで、 [管理] ボタンをクリックします。[管理] ウィンドウで、 [管理パック] を右クリックし、 [管理パックの作成] をクリックします。 [管理パックの作成] (Create a Management Pack) ウィザードが表示されます。
  2. [全般プロパティ] (General Properties) ページで、 [名前] (Name) に管理パックの名前を入力し、 [バージョン] (Version) に正しいバージョン番号を入力し、 [説明] (Description) に簡潔な説明を入力します。 [次へ] (Next) をクリックし、 [作成] (Create) をクリックします。

画像

上書き用の管理パックの指定が終わったら、それらの上書きを下記の 4 つのモニターについて作成する必要があります。

画像

System Center Operations Manager で、 [作成] モジュールに移動し、 [管理パック オブジェクト] の下の [モニター] に移動します。モニターを無効にするには、上書きを設定し、データベース コピー DB 論理ディスク領域クラスのすべてのオブジェクトについてモニターを無効にすることを選びます (下の図を参照)。

画像

[有効] (Enabled) の横のチェック ボックスをオンにし、 [偽] (False) を選択して上書き値を変更します。

画像

同じダイアログ ボックスで、カスタマイズ用の管理パックを選択します。

画像

現時点では、メールボックスの検疫による影響を受けている方たちにとって、モニターを無効にするオプションが唯一の回避策だと思われます。この方法を実施すると、ディスクの空き領域が少なくなったときに管理者が通知を受け取れなくなる可能性があることは承知していますが、修正プログラムがリリースされるまでは、これがメールボックスの検疫を防ぐ最善のオプションでしょう。

注意: トランザクション ログ ドライブとデータベースが共存している場合は、データベースのディスク領域が少なくなったときに通知を受け取ります。なぜなら、この通知は純粋に Perfmon ベースの別のルールによって生成されるからです。

Ben Winzenz、Kevin Carker

これはローカライズされたブログ投稿です。原文の記事は、「Mailboxes on a database are Quarantined in an environment with System Center Operations Manager」をご覧ください。