Exchange Queue & Aトランザクション ログ、コマンドレット、リモート管理など

KC Lemson and Nino Bilic

質問 - Microsoft® Exchange Server 2007 でトランザクション ログのサイズを 1 MB に縮小したのはなぜですか。

Exchange 2007 にはログ配布と呼ばれる優れた機能があります。この機能は、ローカル連続レプリケーション (LCR)、クラスタ連続レプリケーション (CCR) などの新機能を背後で支えるテクノロジです。ログ配布をストレージ グループ (SG) レベルで有効にすると、実行中の実稼動 SG からコピー SG に SG トランザクション ログがコピーされます。コピー SG のログを再生してデータベースに戻すことでデータベースを最新の状態に維持します。ここでは説明を簡素化して概要を伝えています。

問題は、トランザクション ログをコピー SG に送信するには、実稼動 SG 上のログを閉じなければならないということです。つまり、最初のストレージ グループの現在のログである e00 ログを送信するには、このログがいっぱいになるか、このログを閉じるか、名前を変更する必要があります。また、可用性とパフォーマンスはトレードオフの関係にあるので、このプロセスで使用可能なログの数を制御するための設定が用意されています。これらの設定を行うには、Exchange 管理シェルで Set-MailboxServer コマンドレットを実行します。必要なパラメータの詳細については、ヘルプ ファイルを参照してください。

簡単に言えば、トランザクション ログのサイズを縮小したのは、ストレージ グループの 2 つのコピー間で非同期になるデータの量を少なくするためです。これは、実稼動データベースのハード ドライブがクラッシュして、コピーから SG を起動する必要がある場合などに有効です。トランザクション ログのサイズが小さいほど、データが消失する可能性も少なくなります。

とはいえ、データの消失が 1 MB を超えないと保証することはできません。失われた 1 MB のログ ファイルの中には、トランザクション ログのように見えても、たとえば 5 MB のデータに対する COMMIT トランザクションが含まれている可能性があります。この場合、コピー上ではこれらの 5 MB のデータは失われます。データが記録された 5 つのログを取得できたとしても、最後のログに存在するのはデータの一部のみで、これらのデータに必要な COMMIT トランザクションが欠けています。

最終的には、ビジネス要件から考えて、このリスクが許容範囲であるかどうかは各自の判断に委ねられます。復旧作業に何時間もかかる場合と比べたら、ものの数分で復旧可能なほど消失データが少量であるなら、十分に許容範囲といえるのではないでしょうか。この問題については、今後の記事で詳しく取り上げます。

質問 - サイズが縮小されたことによって、トランザクション ログは今までより早く不足するのでしょうか。

Exchange では、トランザクション ログが不足するのはログの名前が原因でした。Exchange Server 2003 では、トランザクション ログの名前は次の形式で付けられます。

E nn fffff.log

nn は SG を識別するプレフィックスです。nn は SG の生存期間中は不変であるため、1 つのストレージ グループで一意の名前を付けることができるトランザクション ログの数は fffff 個 (約百万個) です (自分用メモ : 口の両脇を小指で引っ張って強迫的に笑ってみよう)。使用頻度の高いメール サーバーでこの制限に到達した顧客もいました。

Exchange Server 2000 からは、この制限に達した場合はアプリケーション ログにイベントを表示する修正プログラムが提供されています (詳細については、support.microsoft.com/kb/896001 を参照してください)。

Exchange 2007 では、前述したように、トランザクション ログは 5 MB (Exchange の旧バージョンのサイズ) から 1 MB (Exchange 2007 のサイズ) に変更されましたが、だからといって、従来の 5 分の 1 のデータを記録した時点で一意のトランザクション ログ名が不足するというわけではありません。

Exchange 2007 では、トランザクション ログの名前は次の形式で付けられます。

E nn ffffffff.log

Exchange の前バージョンで使用できる名前の数は "fffff" 個であったのに対し、Exchange 2007 では "ffffffff" 個の名前を使用できます。内部 Extensible Storage Engine (ESE) の演算の関係上、Exchange 2007 で "ffffffff" 個のログのすべてを作成することはできません。Exchange 2007 で作成できるログは "7fffffec" 個までですが、これでも相当な数です (嘘だとお思いなら、この 16 進数を 10 進数に変換してみてください)。

これはどういうことかというと、Exchange 2007 で作成可能なログの数は前バージョンの約 2048 倍になるということです。さらに、ログのサイズが 5 分の 1 になるという点を考慮してみましょう。

2048 / 5 = 409.6

おわかりのように、新しいログ命名方式では、旧バージョンの 409 倍のデータを処理できます。これはストレージ グループ 1 つあたりの話であって、さらに各ストレージ グループには e00、e01 などの異なるログ ファイル プレフィックスを付けることができます。Exchange 2007 の Enterprise バージョンでは、さらに 1 サーバーあたり 50 のストレージ グループを作成できるということも付記しておきます。これで当面、トランザクション ログが不足する可能性は少ないと思います。

質問 - Exchange 2007 サーバーをリモート管理するにはどうしたらよいですか。

Exchange 2007 サーバーをリモート管理する方法はいくつかあります。まず、Exchange サーバーとは別のマシン (32 ビット版または 64 ビット版の Windows Server® 2003 Service Pack 1 (SP1) 以降、Windows Server 2003 R2、または Windows XP SP2 以降が動作するマシン) に Exchange 2007 管理ツールをインストールできます。サーバーの役割 (クライアント アクセス、メールボックス、エッジなど) の 32 ビット ハードウェアへのインストールは実稼動環境ではサポートされませんが、32 ビット マシンへの管理ツールのインストールに関してはサポートされます。また、Exchange Server 2007 の初期リリース時点では、管理ツールは Windows Vista™ ではサポートされません。

組織によっては、1 台のサーバーを管理サーバーにして、このサーバー上に各種製品に必要なすべての管理ツールをインストールしている場合があります。これらのツールを使用する必要がある管理者は、ターミナル サーバー経由で管理サーバーにアクセスしてリモート管理を行います。ユーザーが自分のデスクトップに管理ツールをインストールする場合もあります。

コンソールまたはシェルから組織内のサーバーを操作できます。コンソールでサーバーを参照して、リモート操作することができます。シェルを使用する場合、多くのタスクで -server などのフィルタ フラグをサポートしており、このフラグを指定して操作対象を 1 台のサーバーに限定することができます。Get-NetworkConnectionInfo コマンドなどのローカルで実行する必要があるコマンドにはこのフラグを指定できません。

質問 - 前回のコラムでは、Exchange 2007 サーバーに推奨される RAM の容量が示されていましたが、推奨されるページ ファイル サイズを教えてください。

Exchange 2007 サーバーで仮想メモリの不足エラーが起こらないようにするためには、以下のガイドラインに従ってシステム ページ ファイルのサイズを決めることをお勧めします。

サーバーの RAM が 8 GB 未満の場合、ページ ファイルの最小サイズは RAM の容量 + 10 MB にします。したがって、サーバーの RAM が 4 GB の場合、最小サイズは 4 GB + 10 MB になります。ページ ファイルの推奨サイズは RAM の容量× 1.5 であるため、4 GB のサーバーの場合は 6 GB です。

サーバーの RAM のサイズが 8 GB 以上の場合も、ページ ファイルの最小サイズは同様に RAM の容量 + 10 MB で計算しますが、推奨サイズの計算方法が異なります。基本的に、RAM の容量が 8 GB を超える場合、ページ ファイルを小さめに指定すると仮想メモリの不足エラーが発生する場合にのみ、RAM 容量× 1.5 で計算します。

ここでいうエラーは、Exchange 2000 および Exchange 2003 サーバーで問題になっていた、仮想メモリの断片化とは無関係です。ページ ファイルのサイズが増加していること、または小さすぎることを示すエラーがログに記録され、ポップアップ表示されます。

質問 - Exchange 管理シェルの使い方を知りたいのですが、これまでコマンド ラインを使ってシステムを管理した経験がありません。手始めに何をしたらよいでしょう。

まず、基本から始めましょう。Exchange 管理シェルの各コマンドレットは 1 つの動詞と 1 つの名詞で構成されます。Exchange 管理シェルで使用する動詞の数は限られています。オブジェクトのプロパティを取得するには "Get" を使用し、オブジェクトのプロパティを変更するには "Set" を使用し、新規オブジェクトを作成するには "New" を使用する、という具合にします。Exchange 管理シェルの名詞には、Exchange 管理者にはお馴染みの多くの概念 (メールボックス、連絡先、キュー、OWAVirtualDirectory など) があります。Exchange Server 2007 で登場した新しい概念 (TransportRule、StorageGroupCopy、UMAutoAttendant など) もあります。したがって、基本的なコマンドレットは New-Mailbox (メールボックスを作成する) や Get-Mailbox (組織内のメールボックスの一覧を取得する) のようになります。

とはいえ、多くのコマンドレットでは、実行する操作をより詳細に指定する必要があります。たとえば、メールボックスのプロパティを変更する場合、どのメールボックスのどのプロパティを変更するかを指定する必要があります。それにはパラメータを使用します。たとえば、New-Sandwich (サンドイッチの作成) がコマンドレットであるとすると、パラメータには -NumberOfTomatoSlices 4 (トマト スライスの枚数 4)、-Bread Wheat (パン素材 小麦) など、サンドイッチの詳細な形状を指定するさまざまなオプション (-FlufferNutter $true-ahhhh yum) が考えられます。

動詞と名詞がどのように分かれているかがわかれば、Exchange 管理コンソール (EMC) ウィザードでコマンド ライン表示を使用して、どのコマンドレットでどの操作を実行するか十分に理解できます。EMC でウィザードを実行して新しいユーザーを作成します。ウィザードの最後の操作が完了すると、ウィザードが内部的に実行したコマンドのコピーが表示されます (図 1 を参照)。Ctrl キーを押しながら C キーを押すと、ダイアログの内容がコピーされるので、コマンドレットをメモ帳に貼り付けて簡単なバッチ ファイルを作成することができます。

Figure 1 Command-line exposure for creating a new user

Figure 1** Command-line exposure for creating a new user **(画像を拡大するには、ここをクリックします)

実害なくコマンドレットの使い方を練習するには、コマンドの最後に -WhatIf を追加する方法がお勧めです。このオプションを指定すると、システムを実際には変更せず、コマンドを実行した場合の結果が示されます。

*-Mailbox などの基本的なコマンドレットの使い方に慣れたら、他のコマンドレットも使ってみたくなるでしょう。その他のコマンドレットを探すには、Get-ExCommand コマンドレットを使用します。このコマンドレットを実行すると、すべての Exchange 管理コマンドレットが一覧表示されます (このコマンドレットを実行するには、Exchange 管理シェルが起動している必要があります。Microsoft Command Shell または Windows PowerShell™ を開いただけでは、このコマンドレットやその他の Exchange 管理タスクを実行することはできません)。この一覧は膨大なので、検索時にはワイルドカード一致を使用してください。たとえば、Get-ExCommand *database* を実行すると、名前に "database" が含まれているすべての Exchange コマンドレット (Dismount-Database、Move-DatabasePath、New-MailboxDatabase など) の一覧が返されます。

検索する名詞の一部がわかっている場合、このオプションを繰り返し処理することができます。たとえば、「Get-Mailbox」と入力してから Tab キーを押すと、タスク名の名詞に mailbox が含まれるすべてのコマンドレットが繰り返し処理されます。ワイルドカード一致と Tab キーの押下を組み合わせることもできます。たとえば、「Get-*Mailbox*」と入力して Tab キーを押すと、対象となるコマンドレットが繰り返し処理されます。

もう一つの簡単な方法は、プロンプトを使うことです。各コマンドレットには、既定で必要とされる一連のパラメータがあります。これらのパラメータは、操作の実行に必要な基本パラメータです。Get-Mailbox などの "Get" コマンドレットには、パラメータは不要です。既定では、Get-Mailbox を実行すると、組織全体のすべてのメールボックスの一覧が返されます (この一覧は、既定では、最大 1000 件です。この最大値を変更するには、たとえば、「Get-Mailbox -ResultSize 2000」と入力します)。オブジェクトを作成または変更するコマンドレット (Set や New など) では、作成または変更の対象となるオブジェクトなど、必要な情報を指定するよう要求されます。たとえば、New-Mailbox を実行すると、1 件ずつに対してパスワード、データベース、名前などの情報が要求されます。

特定のコマンドレットに関する有効なパラメータの詳細を検索するには、ヘルプ システム : Help Move-DatabasePath を使用します (「Move-DatabasePath」、「Move-DatabasePath -?」などを入力することもできます)。コマンドレットの説明、パラメータ一覧、および各パラメータの目的が表示されます。ヘルプは、Get-Help コマンドレットで表示することもできます (「Get-Help」と入力するだけで助けが得られるなんて嬉しいと思いませんか。実生活でも自分の知人がこんなコマンドレットを実行してくれたらよいのにと思ったりしませんか)。

コマンドレットに指定可能なパラメータを確認するには、パラメータ名の最後で Tab キーを押すという方法もあります。たとえば、「Get-Mailbox -S」と入力して Tab キーを押すと、S で始まる有効なパラメータが繰り返し処理されます。

詳細なヘルプ システムも用意されています。探している項目がオフラインで見つからない場合は、定期的に更新されている go.microsoft.com/fwlink/?linkid=79421 (英語) のヘルプ コンテンツおよび microsoft.com/downloads/details.aspx?FamilyID=01A441B9-4099-4C0F-B8E0-0831D4A2CA86&displaylang=ja のクイック リファレンス ガイドを参照してください。

これで、Exchange 管理コンソールを使い始めることができますが、ここに記載した情報は、コマンド ラインの機能および柔軟性のほんの表面をなぞったにすぎません。詳細については、今後のコラムで取り上げるつもりです。

質問 - Exchange Server 2003 ESM (Exchange システム マネージャ) では、すべてのユーザーのメールボックスのサイズを簡単に表示することができましたが、この機能は Exchange 2007 ではなくなっているようです。Exchange 2007 でこの機能を使用する方法はありますか。

新しい Exchange 2007 コンソールでは、メールボックスの全般的なプロパティ ページにメールボックスのサイズが表示されます。複数ユーザーのメールボックス サイズを確認するには、Exchange 管理シェルを使用する必要があります。

Get-MailboxStatistics を実行すると、特定のデータベースのみではなく、サーバー全体に関するデータが返されます。既定では、サイズは表示されません。サイズを取得するには、このコマンドレットと Format-List を実行する必要があります。

get-mailboxstatistics | format-list

表示内容を自分で選択してテーブルにパイプすることができれば、さらに便利です。この例では、メールボックスの表示名、アイテムの合計サイズ、削除済みアイテムの合計サイズ、およびメールボックスが存在するデータベースを取得します。

Get-MailboxStatistics | Select-Object 
displayname,totalitemsize,
totaldeleteditemsize,databasename 
| Format-Table

検索する情報に応じて、出力書式を変えることができます。この例では、Format-Table の方が Format-List より適しています。

KC Lemsonは Exchange Server チームのリード プログラム マネージャです。ATM PIN 番号は 0000 です。一度に全部使わないでください。

Nino Bilicはテクニカル リードです。暇な時は、電子メールを転送する謝礼として Bill から 1,000 ドルの小切手を集金して過ごしています。

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.