[Blue Screen] Exchange 2003 資料庫重整 (Exchange Database Defragmentation)


Exchange Server 資料庫用了一段時間後,最好是來重新整理一下,以增加效率。

Defragmentation 不算什麼新鮮事,就是把資料重新整理排好,以後在讀的時候,能夠增加效率。如果 Exchange Server 當初有存 email 的話,資料庫就會越來越大。若不勤於整理,整個資料庫就會變的很雜亂無章,增加 server 的負擔。IT 人員應該將公司中 Exchange 資料庫重整,列為固定的維護項目之一。

一般來講的『整理』 Exchange Server 資料庫,並不是說把一些沒用的 email 刪掉就算了。因為 delete 的動作只是把 email 做個標記,以後不會被讀到而以,實際上它在硬碟上還是佔有一個空間。也就因為這樣,時間一久之後,整個資料庫內的資料就會變的斷斷續續的不連續,server 就要花較多的時間來尋找及拼湊出所要的資訊出來。所以光是 delete 是不夠的,還必須要做 defragmentation 的動作。Defragmentation 的另一個好處就是,重整完後的資料庫,通常會比重整前的還小。至於小多少,則是看有多少資料真正被刪掉而論,每台 server 上的情況都會不一樣。

這次用的是 Exchange 2003 Server 來做示範。從 Exchange 2000 之後,大至上的步驟都是大同小異。

每個 server 會有兩個資料庫檔案,分別是 .EDB 跟 .STM 檔。如果當初在架設 server 時是按照系統內訂的檔名及目錄的話,那就分別會是 priv1.edb 跟 priv1.stm 兩個檔,且會在 C:\Program Files\Exchsrvr\MDBDATA 目錄下。

要做 Exchange 的資料庫重整,須要用到 eseutil 這個小工具。如果當初安裝 Exchange 的時候是按照系統內定的路徑來裝的話,那它會在 C:\Program Files\Exchsrvr\Bin 目錄下。

Exchange 資料庫重整的動作,是把原有的資料一一的 copy 到一個新的地方暫存好,然後再把整理好的暫存資料庫,整個搬回到原本的位置上覆蓋掉原有的資料庫。由於是這樣,所以必須先確定硬碟上要有一個至少跟原本資料庫一樣大或更大的空間才行。所以假設 priv1.edb 跟 priv1.stm 總共是 50GB,那麼硬碟上就要有至少 50GB 以上的剩餘空間才行。如果對於老 server,或是資料庫實在是長到一個很恐怖的地步,造成硬碟上剩餘空間已經不夠了,也可以用 USB 硬碟來充當,甚至是網路上的空間也行。但是這兩種做法並不是很推薦,主要原因就是速度會太慢;而且如果使用網路上的硬碟,可能會很不穩定。有時候就算把 server shutdown 之後,裝個夠大的 IDE 硬碟當暫存用之後再開始做,速度上都會快很多很多,而且也比較實際。

當確定有足夠的硬碟空間之後,接著就來進行資料庫重整吧。


首先,先進入 Exchange 的管理程式。


在做 Exchange 資料庫重整之前,必須要先做 dismount 的動作。

Dismount 完之後,就無法再存取 email 了,接著就是用 eseutil 來重組。

一般來講,使用 /d 這個參數就行,而且只須要對 priv1.edb 這個檔案做就行,另一個檔案會自動被拿來重整。如果原本存放資料庫上的硬碟空間不夠了,須要用到另一顆硬碟來當暫存的話,那還要下 /t 來指定暫存檔的位置。

舉個實際例子。當初 Exchange 是裝在 D:\Program Files\Exchsrvr 目錄下,所以 eseutil 就會在 D:\Program Files\Exchsrvr\Bin 下,而資料庫是在 D:\Program Files\Exchsrvr\MDBDATA 目錄下。而 D:\ 槽上的空間不夠了,將使用 F:\ 槽來當暫存。所以實際所下的指令就會是:

D:
cd program files
cd exchsrvr
cd bin
eseutil /d "D:\program files\exchsrvr\mdbdata\priv1.edb" /t "F:\Tempdfrg.edb"

接著,就是讓它自己跑吧.....


Eseutil 會先將原本資料庫中的資料,一一 copy 到暫存的地方。然後會將整理好的兩個檔案,都搬回到原目錄中覆蓋掉舊的。當所有步驟都跑到 100% 之後,整個資料庫重整的動作就算完成了。

最後,別忘了再把資料庫 mount 回去,這樣才能收發 email。

IT 人員除了可將 Exchange 資料庫重整列為固定的維護項目外,另在如果在 delete 了很多資料之後,或是把很多使用者搬到其它的 Exchange 上之後,都可以做一次資料庫重整,來讓 server 更有效率。



參考資料:
How to defragment Exchange databases
How to defragment with the Eseutil utility (Eseutil.exe)



分享


回到 Blogger 的童言童語


沒有留言: