Exchange Server 2013/2016/2019 でログファイルをクリーンアップ、切り捨て、または移動する方法

Exchangeで容量を圧迫するログの処理は、特にログが絶えず増加し、ディスク容量を急速に消費するため、頭を悩ませる問題となることがあります。サーバーでエラーが発生したり、452 4.3.1 Insufficient system resourcesメールボックスデータベースが予期せずアンマウントされたりする場合は、ログが原因である可能性があります。ログは単に整理整頓するだけでは不十分です。ログは復旧に不可欠ですが、制御不能に陥ると、サーバーの速度が低下したり、まったく使用できなくなったりする可能性があります。そこで、ここでは、ログをクリーンアップ、切り捨て、または移動することで、何も損なわない回避策を見つけることを目的としています。

私の経験から言うと、これは一度で解決できる問題ではありません。ログのスパイラル化を防ぐためのルーチンを設定することが重要です。定期的にログを消去したり、ログの保存場所を変更したり、面倒な作業を自動化するログ機能を有効にしたりすることができます。ただし、Exchangeのバージョンによってパスや動作が多少異なるため、環境を再度確認することをお勧めします。それでは、具体的な方法を見ていきましょう。

Exchangeでログファイルが容量を消費する問題を解決する方法

方法1: トランザクションログを消去する — ただし注意が必要

トランザクションログはリカバリに不可欠です。データベースにコミットされるまでのすべての変更が記録されます。最新のバックアップがある場合や、データベースがクリーンシャットダウン状態にある場合を除き、手動でトランザクションログを切り捨てるのは危険です。それでも、迅速なクリーンアップを行うには、以下の手順を実行してください。

  • メールボックスデータベースを最近バックアップしたことを確認してください。そうすることで、データ損失のリスクなくログを安全に削除できます。ボリュームシャドウコピー(VSS)またはWindows Serverバックアップをサポートする最新のバックアップソリューションを使用してください。このプロセスは、データベースがクリーンシャットダウンとしてマークされている場合にのみ機能します( で確認してくださいGet-MailboxDatabase -Identity "DatabaseName" | Select-Object Name, Mounted)。
  • 確認後、次のコマンドを実行して、Restart-Service MSExchangeISデータベースがマウントされ、クリーンな状態であることを確認できます。
  • データベースを適切にバックアップしていれば、ログは自動的に切り捨てられます。バックアップなしで即時にパージを実行したい場合は、循環ログが有効になっている場合は、まず循環ログを無効にしてみてください。循環ログはログの自動切り捨てを防ぐことができます。

注意:バックアップなしで手動で切り捨てを行うと、障害発生時にデータが失われる可能性があるため、慎重に作業を進めてください。多くの場合、バックアップを実行するだけで問題が解決します。

方法2: 循環ログを有効にする(適切な場合)

これは、特にディスク容量が不足している場合には、劇的な変化をもたらす可能性があります。循環ログは古いログ情報を上書きするため、情報が永久に蓄積されることはありません。ただし、ポイントインタイムリカバリの選択肢が減るので、バックアップ計画がしっかりしている場合にのみ実行してください。

  • Exchange管理センターで、「サーバー」 > 「データベース」に移動します。
  • データベースを右クリックし、「プロパティ」を選択します。
  • 循環ログのチェックボックスをオンにして保存します
  • PowerShell 経由で実行するには、次のコマンドを実行します。Set-MailboxDatabase -Identity "DatabaseName" -CircularLoggingEnabled $true
  • その後、データベースをアンマウントして再マウントします。 Dismount-Database -Identity "DatabaseName" Mount-Database -Identity "DatabaseName"

これで、各チェックポイントの後にログが自動的に上書きされるはずです。設定によっては、スペースが解放されるまで再起動や少しの待ち時間が必要になる場合があります。

方法3: データベースとログを別のドライブに移動する

これは一見複雑に見えますが、一度コツをつかめばそれほど難しくありません。メールボックスデータベースとそのログを、より大容量で負荷の少ないディスクに移動すると、大量の空き容量が確保され、パフォーマンスが向上します。

  • まず、宛先フォルダ(例:M:\DB\Mdb1 )を準備します。
  • PowerShellMove-DatabasePathコマンドレットを使用します。
  • 例:Move-DatabasePath -Identity "MDB1" -EdbFilePath "M:\DB\MDB1\mdb1.edb" -LogFolderPath "M:\DB\MDB1\logs"
  • 常に最初にデータベースを停止します。 Dismount-Database "MDB1" Move-DatabasePath... Mount-Database "MDB1"

ある設定ではスムーズに進みましたが、別の設定では権限に問題が発生しました。そのため、この操作を行うアカウントに適切な権限があることを確認してください。また、パスの権限とクォータも確認してください。

方法4: トランスポートとIISログをリダイレクトする

トランスポートログは、特に混雑した環境では、放置しておくと肥大化する可能性があります。これらのログを専用のドライブやネットワーク共有に移動しておくと、後で簡単にクリーンアップできます。

  • 収集パスを変更するには、Exchange 管理センターまたは PowerShell を使用してください。IIS ログの場合は、IIS マネージャーを開き、サイトを選択して「ログ」タブを選択してください。
  • ディレクトリの場所を変更します (例: M:\IISLogs )。
  • または、コマンドライン愛好家の場合は、PowerShell を使用します。 Import-Module WebAdministration Set-ItemProperty 'IIS:\Sites\Default Web Site' -name logfile.directory 'M:\IISLogs'
  • 古いログを保持しながら移動したい場合は、IIS を停止し、フォルダーを移動してから IIS を再起動するだけです。大した手間ではありません。

mklink /dIIS 構成を直接変更せずに、ログ フォルダーを新しい場所にリダイレクトするためのシンボリック リンクを作成することもできます。

方法5: PowerShellでログのクリーンアップを自動化する

自動化がなければ、これは単なる面倒な作業です。スケジュールされたタスクを使用して古いログを削除しましょう。Exchangeログフォルダから21日以上経過したログを削除する簡単なスクリプトを以下に示します。

$dirs = @( "C:\inetpub\logs\LogFiles\", "C:\Program Files\Microsoft\Exchange Server\V15\Logging\", "C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\", "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\" ) Get-ChildItem $dirs -Recurse -File | Where-Object { $_. LastWriteTime -lt (Get-Date).AddDays(-21) } | Remove-Item -Force -ErrorAction SilentlyContinue 

このスクリプトを Windows タスク スケジューラ経由で毎日または毎週実行するように設定します。PowerShell の実行ポリシーでスクリプトの実行が許可されていることを確認するか、 で実行してください-ExecutionPolicy Bypass

まとめ

Exchangeのログに関するディスク容量の問題への対処は、クローゼットの整理に似ています。定期的に行うことで、後々面倒な手間を省くことができます。ログを別のドライブに移動したり、循環ログを有効にしたり(問題がなければ)、自動化を設定したりするだけで、作業がはるかに楽になります。ただし、特にトランザクションログを扱う場合は、手動でクリーンアップする前に必ず最新のバックアップを用意しておくことが重要です。なぜ効果があるのか​​は分かりませんが、これらのルーチンをいくつか設定すると、容量の問題が突然再発することはほとんどありません。

まとめ

  • 定期的なバックアップは古いログを自動的に消去するのに役立ちますが、必ず最初にデータベースの状態を確認してください。
  • 循環ログを有効にすると、ログの蓄積は減りますが、ポイントインタイムリカバリは犠牲になります。
  • データベースとログ ファイルを、より大きなまたはより高速なドライブに移動すると、パフォーマンスとスペース管理が向上します。
  • トランスポート ログと IIS ログの再配置は、PowerShell または IIS マネージャーを使用すると簡単に行えます。
  • 安心していただけるよう、スケジュールされた PowerShell スクリプトを使用してクリーンアップ タスクを自動化します。

これでログファイルの増大を抑え、サーバーの空き容量を確保できるといいですね。頑張ってください!