Время от времени ИТ специалисты в форумах жалуются на то, что на диске с базами Exchange заканчивается место и оно забито странными файлами с расширением LOG. Как-то мне знакомый админ сказал, что место на диске Exchange сервера 2007 закончилось и он все логи удалил, я долго ждал когда он пожалуется на убитый сервер, но этого не произошло… ему просто повезло 🙂 Или например, как бекапить и что делать с логами Exchange 2007, установленного на Windows Server 2008? И так, как же работает механизм логов, как бекапить Exchange без ntbackup и специальных программ резервного копирования, а также безопасно ли удалять логи вручную?
Все знают, что данные в Microsoft Exchange Server 2007 хранятся в почтовых базах и логах. Папка с файлами данных Exchange выглядит примерно так:
Name Length
—- ——
E00.chk 8
E000000001B.log 1024
E00tmp.log 1024
E00res00002.jrs 1024
E00res00001.jrs 1024
E0000000019.log 1024
E00.log 1024
E000000001A.log 1024
E0000000018.log 1024
E0000000017.log 1024
tmp.edb 2064
Mailbox Database.edb 10256
CatalogData-1da9bbdf-30e6-4777-9f5c-… 0
Где Mailbox Database.edb — база сообщений, а файлы E00000*.log — файлы транзакций. Письмо перед тем, как попасть в базу сначала сохраняется в лог файл, а затем уже Information Store «проигрывает» его в базу. Информация об уже проигранных логах хранится в файле E00.CHK. Проигранные логи могут быть удалены. Обычно они удаляются с помощью программы резервного копирования Microsoft Exchange и для многих ИТ специалистов это является единственным способом по освобождению места на диске и удалению файлов логов.
Но это не так, существует несколько способов для удаления логов и освобождению места на диске:
- 1. Главный, он же правильный метод, это своевременное резервное копирование Microsoft Exchange Server с помощью специально предназначенных для этого программ. Они это делают с помощью специального API, простым файловым бекапом копировать базу нельзя, т.к. файлы базы, логов и вспомогательных файлов будут открыты и не скопируются. Исключением является размонтирование базы и ее копирование, как файла. Но это не рекомендуется.
- 2. Перемещение логов или баз на другой диск
- 3. Размонтирование баз и удаление вручную ВСЕХ логов. Для большей надежности лучше убедиться в корректном закрытии базы(eseutil /MH) и проверить последний сброшенный в базу лог (eseutil /MK)
- 4. Проверка последнего сброшенного в базу лога (eseutil /MK) и удаление всех ненужных. Последний сброшенный лог можно определить командой:
C:\eseutil /mk «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\E00.chk» |find » Checkpoint:»
Checkpoint: (0x21,8,16)
0x21 означает, что файлы E0000000020.log и старше, т.е. E0000000019.log, можно спокойно удалить.
Что собственно и делает программа резервного копирования. Full backup делает бекап базы+ бекап логов, потом ненужные логи удаляет. Incremental бекап тупо копирует логи с момента Full backup и удаляет проигранные в базу.
Если лень удалять файлы вручную, то можно использовать скрипт на PowerShell.
$temp = (eseutil /mk «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\E00.chk»)[13]
$Bottom_Log_File = $temp.remove($temp.IndexOf(«,»)).remove(0,$temp.IndexOf(«x»)+1)
Get-ChildItem «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group» | Where-Object { $_.Name.Length -eq 15 -AND $_.Name -like «E00*.log» -AND $_.Name.Substring(3+8-$Bottom_Log_File.length,$Bottom_Log_File.length) -lt $Bottom_Log_File } | foreach($_) {remove-item $_.fullname}
Для запуска скрипта по времени можно вставить конструкцию powershell.exe -noexit D:\Purge_Exchange_T_Logs_3rdSGroup_LCR.ps1 в Tasks Scheduler.
Скажем в малююююююсеньких компаниях вполне возможен следующий сценарий бекапа:
1. Размонтирование хранилища
2. Копирование файла базы сообщений
3. Удаление всех логов
4. Монтирование базы.
Если по ночам сервер не используется и базы можно размонтировать, то чем плохо? Бесплатно и быстро.
Еще существуют самописные утилиты для очистки от логов. Более подробно написано
На больших и средних предприятиях такими примитивными способами бекапа пользоваться не стоит. Малым предприятиям, установившим Exchange 2007 на Windows 2008 лучше подождать SP2 для Exchange 2007, когда Windows Backup будет делать резервное копирование Exchange 2007.
Этот пост написан в познавательных целях, прежде чем что-то удалять или запускать скрипт, убедитесь, что Вы понимаете, что делаете.
Еще немного есть тут. http://searchexchange.techtarget.com/tip/0,289483,sid43_gci1187056_mem1,00.html
Если есть вопросы и дополнения — всегда Welcome в комменты!
p.s. Кстати, если хотите, чтобы Ваше милое личико отображалось в комментариях возле вашего имени на МНОГИХ сайтах и блогах, то зарегистрируйтесь на сайте