カレント ログ欠損によるデータベース ディスマウントについて
こんにちは。Exchange サポート チームの西村です。
8 月の TechEd で Exchage 2007/2010 トラブルシューティング Tips のセッションにお越しいただいた方、ありがとうございました!!
セッションのスピーカーにアサインされたのはその 1 ヶ月前。実は PowerPoint もあまり良く分からない状態からのスタートで、1 ヶ月ほとんど寝ずに準備しました。そんなセッション、現在少しでも皆さんのお役に立てていればと思います。
さて、セッション内の事例紹介で、カレント ログの欠損についてお話させていただきましたが、その後もカレント ログ欠損によりデータベースがディスマウントした現象のお問い合わせを立て続けにいただいております。
そのため、今回の記事でも再度、カレント ログ欠損の現象の注意喚起を目的としています。
現象
=====
ストアが突然ディスマウントされる現象です。(Exchange 2003/Exchange 2007 では、ストレージ グループ内のデータベースでトランザクション ログが共有されているため、ストレージ グループ単位でディスマウントされます。Exchange 2010 ではデータベースとトランザクション ログは 1 対 1 で作成されていますので、データベース単位でディスマウントされます。)
アプリケーション ログにはディスマウントされた時間帯に以下のような ESE ID:486 のエラー イベントが記録されていることが確認できた場合、カレント ログ (Exx.log) の欠損によりディスマウントが発生しています。
また、トランザクション ログの配置フォルダからカレント ログがなくなっていることが確認できます。
Source : ESE
Event ID : 486
Type : Error
Message : Information Store (3844) First Storage Group: システム エラー 2 (0x00000002): "The system cannot find the file specified. " が発生したため、ファイル "D:\mdbdata\E00.log" を "D:\mdbdata\E00038B2.log" に移動できませんでした。ファイルの移動処理は、エラー -1811 (0xfffff8ed) のため失敗します。
原因
====
このカレント ログ欠損のお問い合わせの大部分では、ウィルス対策ソフトウェアによってカレント ログが隔離されたことが原因であることが確認されています。
以下のサポート技術情報にスキャンから除外するべきディレクトリについて記載されてますので、スキャンの除外設定を確認して下さい。既に除外設定されているという方も、念のため再確認をお願いします!
Exchange Server 2003 とウイルス対策ソフトウェアの概要
https://support.microsoft.com/kb/823166/ja
Exchange 2007 でのファイル レベルのウイルス対策スキャン
https://technet.microsoft.com/ja-jp/library/bb332342(EXCHG.80).aspx
Exchange 2010 でのファイル レベルのウイルス対策スキャン
https://technet.microsoft.com/ja-jp/library/bb332342.aspx
* Exchange 2007、Exchange 2010 対象の URL を追加いたしました。
ご指摘いただいた方、ありがとうございました!
発生した時の対処方法
==================
まずは、カレント ログがどこか別の場所に隔離されて残っていないか確認しましょう。もし見つかった場合には元の場所に戻すことでストアをマウントできるか確認します。
カレント ログが見つからない場合、マウントに失敗する場合には、データベースは Dirty Shutdown の状態ですので、以下の 2 つのいずれかの方法を実施する必要があります。カレント ログが欠損した状態からマウントさせる方法となりますので、カレント ログに含まれていたトランザクションはなくなることをご了承下さい。
・バックアップからのリストア
・データベース修復
Exchange 2007/Exchange 2010 の場合には、さらに以下の方法でデータベースの整合性を回復させることができる場合があります。
これは Lost Log Resiliency と呼ばれる機能を使用した回復方法となり、以下は eseutil を使用した手順となります。なお、復旧手順は状況に大きく依存しますので、状況によっては以下で回復できない場合もあります。またこの方法の場合にも、カレント ログに含まれていたトランザクションまで回復させることはできません。
1. コマンドプロンプトを起動し、トランザクション ログの格納フォルダまで移動します。
2. 以下のコマンドを実行し、”Operation completed successfully” と表示されることを確認します。
Eseutil /r "ログの最初 3 文字" /a
3. 以下のコマンドを実行し、State が Clean Shutdown となっているか確認します。
Eseutil /mh ".edb ファイルまでのフルパス"
4. データベースをマウントします。
重要: ウィルススキャンについて
==========================
このトランザクション ログが検疫されてしまったお客様にウィルススキャンの除外設定について確認すると、除外設定できていなかったお客様もいらっしゃいますが、除外設定は行えていたお客様も多くいらっしゃいます。
今日では各ベンダーから様々なウィルススキャンがリリースされており、これらウィルス対策ソフトウェアの中には以下のようにデバイス名でのパス指定が必要なものもあるようです。
\Device\HarddiskVolume3\
このデバイス名は Windows からの検出順に割り振られるものであり、再起動で変わってしまうものもあります。お使いのウィルススキャンでどのような除外設定が必要かあらかじめウィルススキャンのサポート契約先に確認しておいたほうが無難でしょう。