實(shí)用:優(yōu)化Windows服務(wù)器磁盤性能

字號:

在一臺服務(wù)器的使用上,磁盤往往占據(jù)著很重要的位置。服務(wù)器磁盤的配置和維護(hù)對整個服務(wù)器性能方面產(chǎn)生很大影響。實(shí)際上,優(yōu)化服務(wù)器磁盤的方法只需要花費(fèi)一點(diǎn)點(diǎn)時間。在這篇文章中,我將會分享一些提高你的服務(wù)器磁盤子系統(tǒng)效率的方法。
    注意:幾乎所有的服務(wù)器都被做了不相同的配置。也就是說,最適合您的組織的磁盤配置和優(yōu)化技巧可能對另外一個組織的服務(wù)器是有害的。的完全優(yōu)化一臺服務(wù)器磁盤的方法是去分析,在這臺服務(wù)器上都運(yùn)行了哪些應(yīng)用,并且這些應(yīng)用在服務(wù)器磁盤子系統(tǒng)中占用了多少工作量。
    所以說,在這里是沒有辦法去提供面最完善的方法,來讓你的服務(wù)器以化的性能運(yùn)行。這篇文章將會帶來一些通用方法,通常能夠用來提高大多數(shù)類型服務(wù)器的性能。
    文件布置
    優(yōu)化服務(wù)器性能的一個竅門是去把文件放置在適當(dāng)?shù)拇疟P上。舉例來說,Windows Server操作系統(tǒng)通常情況下是被安裝在C盤上。在這樣的情況下,我推薦將C盤僅用作存放操作系統(tǒng)文件之用,盡管在一些情況下,你也可以將一些其他應(yīng)用到C盤上而沒有對性能產(chǎn)生不好的影響。
    因?yàn)椴僮飨到y(tǒng)組件會消耗大量的磁盤輸入/輸出時間,并生成pagefile系統(tǒng)文件,我推薦將它放在一個專屬磁盤驅(qū)動器(并不是一個專屬分區(qū))。這能夠防止磁盤輸入/輸出關(guān)聯(lián)虛擬內(nèi)存分頁而不打斷系統(tǒng)其他部分。
    存儲到服務(wù)器上的任何一個數(shù)據(jù)通常都應(yīng)該被存放在一個專屬卷上。因?yàn)榻^大多數(shù)的服務(wù)器磁盤輸入/輸出通常同讀取數(shù)據(jù)和寫入數(shù)據(jù)相關(guān)聯(lián),它通常需要在一個RAID(獨(dú)立磁盤冗余陣列)陣列上存放數(shù)據(jù),類型依賴于你所需要的性能級別和容錯控制。RAID(獨(dú)立磁盤冗余陣列)10陣列常常是一個較好的選擇對象,因?yàn)樗麄兺琑AID 1陣列一樣迅速,但卻是通過鏡像(mirroring)提供容錯控制。
    內(nèi)存
    不管你是否相信,你的系統(tǒng)中內(nèi)存總數(shù)會給磁盤子系統(tǒng)性能帶來巨大差異。我已經(jīng)討論過在一個專屬的磁盤上存放頁面文件,以此來將帶給系統(tǒng)閑置的虛擬內(nèi)存頁面的影響最小化。虛擬內(nèi)存的概念是相對于物理內(nèi)存而言的,當(dāng)系統(tǒng)的物理內(nèi)存空間入不敷出時,操作系統(tǒng)便會在硬盤上開辟一塊磁盤空間當(dāng)做內(nèi)存。
    然而,這個技巧是很差強(qiáng)人意的。首先,磁盤的相應(yīng)速度甚至比最慢的物理內(nèi)存還要慢。磁盤的存取速度是在毫秒的數(shù)量級上,而物理內(nèi)存的存取速度是在十億分之一秒的數(shù)量級上。
    另外一個問題是操作系統(tǒng)不能利用存儲在虛擬內(nèi)存上的內(nèi)存分頁。如果操作系統(tǒng)需要去執(zhí)行在一個內(nèi)存分頁執(zhí)行一個指令,那首先這個分頁必須被移動到物理內(nèi)存上。這個步驟被稱為交換(swapping)或者paging(線性空間到物理地址空間的映射)。
    如果一臺服務(wù)器的物理內(nèi)存被裝載滿了,并且在它需要去訪問一個存放在虛擬內(nèi)存中的內(nèi)存分頁的時候,那在這個時候,服務(wù)器將不得不去將一個暫時不用的分頁從物理內(nèi)存中交換到虛擬內(nèi)存上,以使得物理內(nèi)存上有空間,能夠?qū)⑿枰L問的內(nèi)存分頁從虛擬內(nèi)存中交換到物理內(nèi)存上。
    這種分頁進(jìn)程不但只消耗磁盤資源,并且還占用大量的CPU時間和內(nèi)存。有一些服務(wù)器的物理內(nèi)存往往會去記錄哪些分頁在隨機(jī)存儲器(RAM)上,哪些分頁在虛擬內(nèi)存上。這就是為什么分頁方法是如此的低效。一些分頁是正常的,但是過量的分頁會嚴(yán)重的制約一個系統(tǒng)的性能。過量的分頁會導(dǎo)致不變的磁盤工作(disk activity)。
    減少分頁的方法是在你的服務(wù)器上安裝盡可能多的內(nèi)存。隨著服務(wù)器中的隨機(jī)存儲器(RAM)數(shù)量的增加,相應(yīng)的,pagefile文件的大小也會增加。然而,在pagefile文件上的系統(tǒng)依賴將會減少。這將會騰出數(shù)量相當(dāng)可觀的磁盤處理時間和CPU處理時間。
    磁盤碎片整理程序
    這里最重要的方法之一是為保證你能夠有一個性能良好的磁盤,你應(yīng)該去規(guī)則定期的執(zhí)行磁盤碎片整理程序。磁盤被設(shè)計為寫入數(shù)據(jù)以線性方式。但是,當(dāng)文件被刪除時,磁盤文件就不會被連續(xù)存放,在文件被刪除的地方,就會形成無法利用的空間。
    在將數(shù)據(jù)寫入可用空間之前,磁盤將會計算這些可用空間。如果可用空間不能向被寫入的數(shù)據(jù)提供足夠的空間時,文件就會被分散保存到磁盤的不同地方:文件的一部分會被插入到可用空間的縫隙中,剩下的一部分可能會被存放到下一個可用空間的縫隙中,或者磁盤的末尾部分。
    這種文件碎片對系統(tǒng)性能產(chǎn)生不好的影響,因?yàn)槲募槠^多會使系統(tǒng)在讀寫文件的時候來回尋找,使效率變低。整理磁盤碎片,并且允許文件以一個線性方式存放,這將會加快磁盤的存取讀寫速度。
    索引
    根據(jù)你服務(wù)器的以往使用經(jīng)驗(yàn),索引的使用在其中起到的作用應(yīng)該是喜憂參半的。索引包括讀取磁盤上的所有文件,并且創(chuàng)建一個索引告訴操作系統(tǒng)所包含的是什么文件。如果用戶通過這種例行搜索方式去在一個大數(shù)據(jù)量中去查找特殊文件,索引就會讓這種方法變得更有效。
    然而,許多系統(tǒng)管理員不喜歡使用索引,因?yàn)樗饕M(jìn)程會占用大量的CPU處理時間和內(nèi)存。一些磁盤空間也往往會去存儲索引。
    我的建議:以server-by-server的基礎(chǔ)去判斷是否使用索引是很恰當(dāng)?shù)摹T谖业慕M織中我做索引文件服務(wù)器,因?yàn)槲医?jīng)常不得不去通過我的文件搜索來查看我是否已經(jīng)寫了關(guān)于某些問題的文章。然而,我的郵件服務(wù)器,數(shù)據(jù)庫服務(wù)器,主域服務(wù)器(DNS),域控制器等等并沒有被編入索引。為這些類型的服務(wù)器作索引是沒有任何意義的。事實(shí)上,如果你希望去提高系統(tǒng)性能,你應(yīng)該檢查你的結(jié)構(gòu)底層服務(wù)器,來確定它們沒有被編入索引。