最近在作公司郵件系統的數據遷移(zimbra to exchange),原zimbra700多G的數據文件遷移到exchange2010中(IMAPSYNC遷移數據到exchange)。考慮到增加因素,exchange中預留了2T的空間用於數據存儲。linux
Imapsync 詳見:http://imapsync.lamiral.info/shell
本次數據遷移預計10天完成(帳戶5000多及其餘緣由,很耗時,哈哈哈。。。),過程基本正常,當進行到第五天時,查看進度,帳戶完成3000多,數據同步600G左右。zimbra服務器正常運行,郵件收發正常。Exchange服務器正常,同步完的帳戶郵件數量及內容一致。最後查看exchange數據庫佔用磁盤容量,居然多達1.4xTB。繼續下去,exchange會因數據庫磁盤寫滿而沒法正常運行。數據庫
爲何同步後郵件會增加這麼多呢?windows
首先想到的問題是linux系統和windows系統的數據塊大小不一致照成的,查看windows分配單元和linux block size的大小,都是4096字節,因此排除這個緣由。既然和系統及分區無關,其餘可能的緣由就是數據庫自己了。打開一個exchange郵箱數據庫,能看到edb後綴的數據庫文件及log後綴的日誌文件。查看數據大小,log文件的總容量和edb文件幾乎相同(log稍微大一些)。同步過程當中exchange生成了至關於數據大小的日誌文件。至關於在exchange中存有兩份數據。查詢微軟知識庫:Exchange郵箱數據庫的事務日誌文件將記錄數據庫引擎執行的每一個事務。全部事務將先寫入日誌,而後再慢慢寫入數據庫。「天天生成的事務日誌數」的值取決於選擇的郵件配置文件和平均郵件大小。它表示天天每一個郵箱將生成的事務日誌數。每一個郵件配置文件的日誌生成數需考慮如下因素:服務器
郵件大小的影響ide
發送/接收的數據量3d
數據庫運行情況維護操做日誌
記錄管理操做blog
不是郵件但存儲在郵箱中的數據(任務、本地日曆約會、聯繫人)事務
強制的日誌滾動(按期關閉當前事務日誌文件的機制)
詳細參考:http://technet.microsoft.com/zh-CN/library/ee832796
同時IMAPSYNC的工做原理至關於以imap的方式在exchange服務器上接收一份郵件數據。同步的郵件數量和郵件大小是正常工做的幾百甚至上千倍,所以同一時刻會產生至關於數據大小的事務日誌文件,進而磁盤容量暴漲。還好發現及時,問出現故障。
最後就是想辦法清除多於日誌文件,解決方法有兩種,一種是啓用Exchange2010循環日誌,另外一種是使用Windows Server backup執行一次「VSS完整備份」,這種方式會清空日誌(推薦方法)。
注:清除日誌後在mailbox出現問題的時候 沒法進行排錯。
生產環境中遇到日誌佔滿磁盤空間,推薦採用備份的方式清除日誌。考慮到咱們這階段只是同步郵箱數據產生的日誌而非exchange運行中的發送接收產生,不會對mailbox有太大影響。所以採用啓用日誌循環功能,清除日誌完成數據同步後再關閉日誌循環個功能。
方法:
1. 啓動 Exchange 管理控制檯EMC。
2. 在EMC控制檯中,展開「服務器配置」,而後單擊「郵箱」。
3. 在工做窗格中,右鍵單擊要啓用或禁用循環日誌記錄的郵箱數據庫,再單擊「屬性」。將出現「屬性「對話框。
4. 選中「啓用循環日誌記錄」複選框。
5. 單擊「肯定」。
6. 若要使對循環日誌記錄設置的更改生效,請從新啓動 Microsoft Exchange 信息存儲服務,或卸除後再從新裝入存儲組中的全部數據庫。
7 對於多個郵箱數據庫,可以使用exchange powershell 命令開啓日誌循環,格式以下:
Set-MailboxDatabase -CircularLoggingEnabled $true -Identity 'CEOMSBGS'
多條寫入ps1腳本運行便可。
8 當需求不能重啓服務及卸載數據庫時,可經過更改數據庫維護時間時循環日誌生效
對於多個數據庫,一樣適用於腳本,格式以下:
Set-MailboxDatabase -MaintenanceSchedule '日.14:00-日.15:00, 一.14:00-一.15:00, 二.14:00-二.15:00, 三.14:00-三.15:00, 四.14:00-四.15:00, 五.14:00-五.15:00, 六.14:00-六.15:00' -Identity 'CEOMSBGS'
全部執行完成後,查看磁盤容量,數據量大概是zimbra數據量的120%,屬於正常範圍。最後同步完成後再將日誌循環功能關閉。
最後,問題解決,逃過被老闆罵存儲容量未規劃好,呵呵呵。。。