非Exchangeサーバでオフラインデフラグ

障害対応の関係でExchangeの本番データをデフラグしました。方式はオフラインデフラグ。普通のオンラインデフラグと違って実際に見かけのデータベースサイズを小さくできます。ただしその間サービスは停止しますが。

■手順

  1. メールボックスサーバからバックアップサーバにデータをコピー(サーバ負荷を考慮して)
  2. バックアップサーバにeseutil.exeをコピー
  3. オフラインデフラグ実行

■注意点とか

  • eseutilと一緒に必要なdllもコピーしましょう。dllが足りなかった場合、処理途中で停止してやりなおしとなります。参照:How to run Eseutil on a computer without Exchange Server
  • ディスクの十分な空き領域がある事を確認します。必要領域は元のDBサイズ+処理後のDBサイズ×1.05です。足りない場合は、eseutilのスイッチでワーク領域(処理中、処理後のDBが保存される場所)を別ディスクに指定しましょう。
  • メモリ使用率が100%近くになるので注意しましょう。

■パフォーマンス

  • OS:Win2003Server noSP
  • CPU:Xeon 3GHz × 2
  • メモリ:2GB
  • 処理前のDBサイズ:約25GB
  • 所要時間:約50分

2GB/分。思ったよりも処理が早くて驚きました。オンラインデフラグ実行直後のDBを使用したからかもしれませんが…。同スペック、同容量でもDBの状態によって処理時間が変わる可能性があります。

■オフラインデフラグ実行時のイベント"MSExchangeIS Mailbox Store 1221I"について

オンラインデフラグ終了時に以下のようなイベントが出力されます。

種類 : 情報ソース : MSExchangeIS Mailbox Store 分類 : General イベント ID : 1221 説明 : オンラインでのディスクの最適化が終了した後、データベース Storage Group Name \Mailbox Store には 565 MB の空き容量があります。

ここで表示される空き容量は"edbとstmを合わせたもの"というのがMS担当者の説明でしたが、今回オフラインデフラグ前に表示された"空き容量"は2.3GB。そしてオフラインデフラグで削減できたのは2.8GB(edb),7.23GB(stm)。状況から考えると、"edbのみの空き容量"が正しいような気がします。(そうなると、オンラインデフラグでstmを処理しているのか…という問題も出てきますが)

■残る問題

実はこのストアに保存されているユーザデータの合計は約9GBです。それに対してオフラインデフラグ後のDBサイズは16GB。DB管理領域を考慮しても計算が合いません…。その使ってない7GBはなんなんだ?MS社の説明では、というより理論的にはオフラインデフラグを行うと不要領域は一層されるはずなのですが…。もしかしてExchangeのデータベース効率ってもの凄く悪いとかそういうオチ?雲行きが怪しくなってきました…。