專利名稱:一種用于提高文件服務(wù)器磁盤讀取速率的方法
技術(shù)領(lǐng)域:
本發(fā)明專利基于軟件實(shí)現(xiàn),主要是一種用于提高文件服務(wù)器磁盤讀取速率的方法。
背景技術(shù):
文件服務(wù)器是一般網(wǎng)絡(luò)系統(tǒng)的核心,多個客戶設(shè)備可以共享訪問該服務(wù)器上的文件資源。隨著網(wǎng)絡(luò)寬帶的1飛速增長,磁盤讀取的速率瓶頸越來越明顯,特別是在需要實(shí)時的環(huán)境下更加突出,現(xiàn)在比較常用的解決方法是采用多塊SCSI磁盤組成RAID和組成服務(wù)器群。VOD視頻點(diǎn)播系統(tǒng)是近年來的熱門,廣泛應(yīng)用于校園卡拉OK、賓館。當(dāng)前普通技術(shù)基于文件重定向或直接文件路徑訪問的 基本上都是每臺使用4塊以上IDE硬盤的服務(wù)器穩(wěn)定支持20個DVD客戶端實(shí)際輸出速率為100兆位/每秒,單塊IDE硬盤的服務(wù)器穩(wěn)定支持8個DVD客戶端實(shí)際輸出速率為40兆位/每秒,使用SCSI硬盤的服務(wù)器支持60個DVD客戶端實(shí)際輸出速率為300兆位/每秒。超過該用戶數(shù)文件服務(wù)器無法及時傳輸數(shù)據(jù)給客戶端,客戶端播放經(jīng)常停頓,無法連續(xù)播放。當(dāng)客戶數(shù)較多時靠機(jī)械的增加服務(wù)器數(shù)量來滿足需求,或者采用碼流小的視頻文件如MPEG4等。例如200點(diǎn)并發(fā)的系統(tǒng)需要10臺使用IDE硬盤的視頻服務(wù)器,加上冗余大概要14臺服務(wù)器。當(dāng)前普通技術(shù)的服務(wù)器內(nèi)增加硬盤數(shù),CPU,內(nèi)存,網(wǎng)卡對性能無明顯改善,采用單個硬盤和組成RAID無明顯差別。
經(jīng)過比較權(quán)威的WINBENCH99,HD Tach等軟件測試,單塊IDE普通硬盤的讀取速率一般可以達(dá)到160~320兆位/每秒,高速IDE硬盤可以達(dá)到280~440兆位/每秒,高速SCSI硬盤與高速IDE硬盤讀取速率差別不大。一個DVD的點(diǎn)播為4兆位/每秒~7兆位/每秒,照理單塊硬盤就可以輕松支持幾十個點(diǎn)的并發(fā)點(diǎn)播,為什么實(shí)際上卻做不到。為什么IDE和SCSI硬盤讀取速率差別不大,實(shí)際支持用戶數(shù)卻差別那么大呢?原來它們的尋道時間有很大的差別,IDE硬盤一般在10毫秒左右,SCSI硬盤在4毫秒左右,最快的可以達(dá)到2毫秒,另外SCSI控制器的智能化程度比較高,是面向多用戶的,而IDE控制器主要受CPU控制,智能化程度很低,是面向單用戶的。
現(xiàn)在我們使用的操作系統(tǒng)對硬件進(jìn)行很好的封裝,硬件設(shè)備對應(yīng)用軟件來說是完全透明的,我們只能告訴操作系統(tǒng)我們要做什么而具體怎么做什么時候做完全是操作系統(tǒng)的事情,應(yīng)用程序常常無法干預(yù)。這對于普通的是應(yīng)用非常方便,但對于需要實(shí)時的應(yīng)用場合,這就帶來非常無法預(yù)料的結(jié)果或者需要犧牲相應(yīng)的性能指標(biāo)。
當(dāng)前普通技術(shù)基于文件重定向或文件路徑訪問都是直接使用操作系統(tǒng)提供的服務(wù),也有些服務(wù)器端軟件雖然沒有直接采用文件重定向或文件路徑訪問但還是采用系統(tǒng)調(diào)用,經(jīng)實(shí)際應(yīng)用測試效率也沒什么明顯提高。它們在互連網(wǎng)上做文件服務(wù)器由于受網(wǎng)絡(luò)帶寬限制,磁盤I/O方面沒明顯的不足,但在網(wǎng)絡(luò)帶寬不受限制的局域網(wǎng)上就無法提供足夠的訪問數(shù)據(jù)。
發(fā)明內(nèi)容
本發(fā)明專利提供了一種經(jīng)過具體實(shí)施和全面驗(yàn)證的方法,它們可以在多用戶訪問文件服務(wù)器上面的大數(shù)據(jù)文件時大幅度提高磁盤的讀取速率,此提高幅度隨被訪問文件字節(jié)數(shù)的增加而增加,一般對于1兆以上的文件就有明顯的效果,當(dāng)數(shù)據(jù)文件為幾十兆或以上的視頻文件時磁盤傳輸速率可達(dá)到其物理傳輸速率的90%以上,并且隨著用戶數(shù)的增加沒有明顯的下降。
本發(fā)明基于軟件實(shí)現(xiàn),在基本上不增加硬件成本的基礎(chǔ)上可以大幅度提高文件服務(wù)器磁盤系統(tǒng)讀取性能,特別是對于轉(zhuǎn)速較低的IDE磁盤,可達(dá)到300%至800%。本發(fā)明的方法適用于存儲大文件(1兆字節(jié)以上)的服務(wù)器如存儲視頻文件的視頻服務(wù)器存儲圖書資料的服務(wù)器等。本方法對于小于100k的文件不適用。本發(fā)明用3個不同檔次的視頻點(diǎn)播系統(tǒng)作為研究對象,得到相應(yīng)實(shí)驗(yàn)的數(shù)據(jù),修改參數(shù)方案,最終得到本方法。
讀取提速手段1根據(jù)文件的大小讓系統(tǒng)對每個文件請求每次盡量讀多一點(diǎn)數(shù)據(jù),將尋道時間占的比例盡可能縮小。對于幾十兆的文件可以定義每次讀1M或2M,按當(dāng)前IDE磁盤的傳輸速率50兆/每秒,平均尋道時間10毫秒算,實(shí)際讀速率與連續(xù)傳輸率的比率分別為1兆/(50兆/秒)=20毫秒,20/(20+10)=66%。
2兆/(50兆/秒)=40毫秒,40/(40+10)=80%。
這樣做的開銷是需要占用一些內(nèi)存。比如說服務(wù)器有200個訪問,每個訪問占2兆內(nèi)存則需要400兆的內(nèi)存,作為服務(wù)器配備1~2G的內(nèi)存是很正常的事情,這樣的開銷對文件服務(wù)器來說是在很正常的范圍內(nèi)。
讀取提速手段2操作系統(tǒng)有幾種的磁盤調(diào)度方法,其內(nèi)部具體使用哪種方法我們無法得到,經(jīng)實(shí)際測試發(fā)現(xiàn)在大文件讀取時效果不好。由于我們可以保證磁盤上的數(shù)據(jù)文件是連續(xù)存放的,我們需要繞過操作系統(tǒng)的磁盤調(diào)度,直接從文件分配表中得到文件在磁盤上存放的扇區(qū)號,將待讀文件按其在磁盤上存放的扇區(qū)號大小排序,這樣可以最大限度的減少尋道距離,從而減少尋道時間。提高磁盤的讀取速率。
讀取提速手段3對于多個用戶訪問同一個文件的情況,我們需要用到文件緩存機(jī)制,這種機(jī)制在操作系統(tǒng)里面被普遍采用,但操作系統(tǒng)的設(shè)計主要針對小文件的緩存比較有效,當(dāng)文件很大時,比如視頻文件100MB以上時不但效果不好對系統(tǒng)還有一定的影響,我們使用直接扇區(qū)訪問(匯編實(shí)現(xiàn),驅(qū)動級)的方法,繞開操作系統(tǒng)對我們的磁盤訪問的緩沖,我們的方法設(shè)定一個臨界訪問數(shù),當(dāng)實(shí)際訪問數(shù)小于臨界訪問數(shù)時,直接讀硬盤上的數(shù)據(jù),當(dāng)達(dá)到臨界訪問數(shù)時,將整個文件讀入內(nèi)存,以后對該文件的所有訪問直接從內(nèi)存得到而無需訪問硬盤。這種方法繞開操作系統(tǒng)的緩存機(jī)制,完全根據(jù)客戶端訪問來啟動和關(guān)閉內(nèi)存文件映射塊,在視頻服務(wù)器上提速效果非常明顯,因?yàn)橐曨l服務(wù)器上的文件是節(jié)目,每當(dāng)有新的節(jié)目時往往都是點(diǎn)播率非常高的,這時數(shù)據(jù)在內(nèi)存里面就不存在磁盤I/O速率高低的問題,只要網(wǎng)絡(luò)有足夠的帶寬就可以提供點(diǎn)播服務(wù)。
讀取提速手段4根據(jù)當(dāng)前每個磁盤的物理傳輸速率設(shè)定一個最大可服務(wù)速率,限制對每個磁盤的連接數(shù)使時間實(shí)際讀取速率小于最大可服務(wù)速率。比如該磁盤設(shè)定的最大連接速率為40兆字節(jié)每秒,當(dāng)實(shí)際讀取速率達(dá)到該數(shù)值時禁止對該磁盤新的訪問連接,保證已有每個連接能在其最低速率以上,保證已有連接正常工作不受影響。
本發(fā)明專利的有益效果在于,文件服務(wù)器上使用本方法在客戶端訪問超過1兆的文件時可以大幅度提高系統(tǒng)讀取速率,最大可以達(dá)到現(xiàn)在普通方法的800%,即使用一臺低配置的普通服務(wù)器就可達(dá)到現(xiàn)有方法使用多臺服務(wù)器達(dá)到的效果,直接減少硬件投資,實(shí)踐中便于推廣,且本方法適用于所有操作系統(tǒng)。
具體實(shí)施例方式
視頻點(diǎn)播系統(tǒng)由文件服務(wù)器,網(wǎng)絡(luò)和點(diǎn)播客戶端及相應(yīng)的軟件組成,本發(fā)明使用了3種檔次的文件服務(wù)器來實(shí)現(xiàn)本發(fā)明的方法,這3種文件服務(wù)器占市場的絕大多數(shù)應(yīng)用領(lǐng)域,可以充分驗(yàn)證本方法的實(shí)用性服務(wù)器1普通奔騰4兼容機(jī)做服務(wù)器,內(nèi)存為2G,2塊TP-LINK千兆網(wǎng)卡。
服務(wù)器2雙奔騰4至強(qiáng)部門級服務(wù)器,內(nèi)存為4G,2塊INTEL千兆網(wǎng)卡。
服務(wù)器34路奔騰4至強(qiáng)企業(yè)級服務(wù)器,內(nèi)存為8G,3塊INTEL千兆網(wǎng)卡。
以上3種服務(wù)器均采用8塊西捷酷魚120GIDE硬盤,每2塊磁盤組成RAID0,共有4組磁盤。
該方法在視頻服務(wù)器上的實(shí)現(xiàn)由以下幾部分模塊組成模塊1網(wǎng)絡(luò)收發(fā)模塊。負(fù)責(zé)接收客戶端的請求和將數(shù)據(jù)發(fā)送給客戶端。
模塊2文件讀取模塊。負(fù)責(zé)將磁盤子系統(tǒng)里面的數(shù)據(jù)讀到內(nèi)存。
模塊3控制模塊。負(fù)責(zé)模塊1和模塊2之間的協(xié)調(diào)工作。
啟動服務(wù)器軟件后,模塊1監(jiān)聽指定的端口,接收到客戶端的請求并正確解釋請求后通知模塊3,模塊3判斷當(dāng)前系統(tǒng)內(nèi)磁盤讀數(shù)據(jù)的狀態(tài)和網(wǎng)絡(luò)的狀態(tài),確定可以提供服務(wù)時通知模塊2,模塊2開始將數(shù)據(jù)從磁盤上讀出交給模塊1發(fā)送。如果確定當(dāng)前不可以提供服務(wù),通知模塊1發(fā)送無法提供服務(wù)信息給客戶端,保證已經(jīng)建立好的服務(wù)連接不會因?yàn)樾碌倪B接加入而受到影響。
服務(wù)器磁盤子系統(tǒng)一般由磁盤,控制器組成。本發(fā)明的方法是基于軟件實(shí)現(xiàn),就是說在現(xiàn)有的硬件基礎(chǔ)上通過軟件提高效率來實(shí)現(xiàn),本發(fā)明不涉及硬件改造等方法。
影響磁盤I/O性能的物理因素為磁盤內(nèi)部傳輸速率,磁盤外部傳輸速率,尋道時間,控制器接口速率,系統(tǒng)I/O速率,延遲時間等。我們把現(xiàn)在PC系統(tǒng)主流硬件的相關(guān)性能列(表1)。
普通的文件服務(wù)器不需具有實(shí)時性,系統(tǒng)I/O速率大小雖然也是很重要的性能指標(biāo)但卻沒有必要的最小值。比如說在100兆位/每秒 的局域網(wǎng)里拷貝一個10兆字節(jié)的文件一般是只需要幾秒鐘,而用56K MODEM訪問就要30分鐘以上,雖然說前者比后者好,但都可以實(shí)現(xiàn),現(xiàn)實(shí)中就是這樣的。視頻點(diǎn)播具有實(shí)時性,用56K MODEM網(wǎng)絡(luò)連接做MPEG2的點(diǎn)播大概每播放1秒的數(shù)據(jù)需要2分鐘的傳輸,不具備實(shí)時性,是無法使用的。用視頻點(diǎn)播做本發(fā)明方法的實(shí)現(xiàn)研究具有非常直接的結(jié)果。
本發(fā)明首先確保文件數(shù)據(jù)是保存在連續(xù)的扇區(qū)里面,本發(fā)明采用新的硬盤,依次將視頻文件拷貝到新盤里面,文件一般在100兆字節(jié)到200兆字節(jié)之間,一個120G的硬盤可以儲存900個文件,每個文件的內(nèi)容都是一首歌曲。
按照眾所周知的方法當(dāng)只有一個用戶訪問文件服務(wù)器時,系統(tǒng)只對一個文件進(jìn)行讀操作。當(dāng)有許多用戶訪問文件服務(wù)器時,系統(tǒng)要同時對許多文件進(jìn)行讀操作這個同時是指宏觀的同時微觀上磁盤,假設(shè)此時的訪問數(shù)為50,系統(tǒng)對每個文件訪問在不同的線程里執(zhí)行的情況,系統(tǒng)將給每個線程分配15毫秒的時間,每個用戶得到的時間片為片15ms,在這15ms里面尋道時間花掉了10毫秒,剩下的5毫秒進(jìn)行讀數(shù)據(jù),就是說理論上最大效率只有33%,這種嚴(yán)格時間片方法主要在UNIX系統(tǒng),windows系統(tǒng)是消息事件驅(qū)動,時間片更無序,效率更低。在已經(jīng)公布的一種文件服務(wù)器方法中,將每次讀文件的大小設(shè)定為2.5K*15=37.5k,按現(xiàn)在的IDE硬盤的讀速率50M,需時37.5k/50000k/s=0.75毫秒。就是說系統(tǒng)花10毫秒尋道定位該文件后只需讀0.75毫秒的數(shù)據(jù)就要進(jìn)行下一次尋道操作,實(shí)際用在讀數(shù)據(jù)的時間只占0.75/10.75=7%,也就是說效率只有百分之7,其余93%都用來尋道了。
磁盤數(shù)據(jù)的物理結(jié)構(gòu)為盤片,磁道,扇區(qū)。磁道為盤片上的許多同心圓,分為內(nèi)道外道,靠近圓心的為內(nèi)道,反之為外道。外道為起始磁道,周長比內(nèi)道長,包含的扇區(qū)數(shù)比內(nèi)道多,傳輸率高。
磁盤的訪問時間包括尋道時間和延遲時間和傳輸時間,尋道時間是磁頭移動到指定磁道的時間,其尋道時間隨尋道距離的增大而增大。延遲時間是磁頭移動到磁道后找到需要讀數(shù)據(jù)的扇區(qū)的時間,一般7200轉(zhuǎn)的硬盤每轉(zhuǎn)一圈需時8.3,平均延遲時間為4毫秒。傳輸時間才是真正讀取數(shù)據(jù)的時間,傳輸時間占訪問時間的比例越高,磁盤傳輸率越大,其最大值為物理傳輸率,本發(fā)明的方法就是盡可能提高傳輸時間的比例從而提高訪問速率。
在綜合采用上面4種手段編寫的服務(wù)器管理軟件實(shí)現(xiàn)了文件服務(wù)器磁盤讀取速率的本質(zhì)的飛躍,采用單塊西捷酷魚IDE硬盤的文件服務(wù)器可以穩(wěn)定支持80個DVD客戶端的實(shí)時訪問。采用8塊硬盤組成IDE RAID0時,測試結(jié)果更是非常令人鼓舞服務(wù)器1(普通P4)能夠支持150個DVD客戶端的實(shí)時訪問,播放中偶爾有1~5秒的停頓,穩(wěn)定支持140DVD客戶端的實(shí)時訪問,中間無任何停頓。響應(yīng)時間小于5秒。
服務(wù)器2(2 P4XEON)能夠支持240個DVD客戶端的實(shí)時訪問,播放中偶爾有1~5秒的停頓,穩(wěn)定支持220 DVD客戶端的實(shí)時訪問,中間無任何停頓。響應(yīng)時間小于6秒。
服務(wù)器3(4 P4XEON)能夠支持400個DVD客戶端的實(shí)時訪問,播放中偶爾有1~5秒的停頓,穩(wěn)定支持360 DVD客戶端的實(shí)時訪問,中間無任何停頓。響應(yīng)時間小于8秒。
具體測試數(shù)據(jù)見(表2)。
表1
表2
權(quán)利要求
1.一種用于提高文件服務(wù)器磁盤讀取速率的方法,其特征是一、服務(wù)器端控制磁盤訪問的方法該方法由服務(wù)器軟件控制每次磁盤訪問的文件塊大小,根據(jù)被訪問文件的大小、系統(tǒng)內(nèi)存大小和保證達(dá)到各個訪問請求最低速率的情況下動態(tài)調(diào)整該文件塊的大小,目標(biāo)是在讓尋道時間占訪問時間的比例盡可能小,推薦值為2兆字節(jié),不要低于500千字節(jié);二、服務(wù)器端控制磁盤訪問的方法不使用操作系統(tǒng)的磁盤調(diào)度,直接根據(jù)文件分配表得到文件在磁盤上的位置信息,根據(jù)該信息確定文件讀取時的順序,盡量減少尋道距離;三、服務(wù)器端控制磁盤訪問的方法繞過操作系統(tǒng)的磁盤緩沖機(jī)制,達(dá)到預(yù)定請求數(shù)目的文件將其直接讀入內(nèi)存,系統(tǒng)根據(jù)對同一個文件的請求數(shù)確定直接磁盤讀取還是內(nèi)存讀取。
2.根據(jù)權(quán)利要求1所述,其特征是設(shè)定最大訪問速率,限制實(shí)際訪問速率小于最大訪問速率,禁止超過該速率的新的連接請求,保證已有的連接在正常工作。
3.根據(jù)權(quán)利要求1所述的一、二、三方法,其特征是對于磁盤I/O相關(guān)的操作不使用操作系統(tǒng)提供的函數(shù)或其它調(diào)用,通過驅(qū)動或其它方式直接控制磁盤系統(tǒng)。
全文摘要
本發(fā)明基于軟件實(shí)現(xiàn),主要是公開了一種用于提高文件服務(wù)器磁盤讀取速率的方法。它們可以在多用戶訪問文件服務(wù)器上面的大數(shù)據(jù)文件時大幅度提高磁盤的讀取速率,此提高幅度隨被訪問文件字節(jié)數(shù)的增加而增加,一般對于1兆以上的文件就有明顯的效果,當(dāng)數(shù)據(jù)文件為幾十兆或以上的視頻文件時磁盤傳輸速率可達(dá)到其物理傳輸速率的90%以上,并且隨著用戶數(shù)的增加沒有明顯的下降。文件服務(wù)器上使用本方法在客戶端訪問超過1兆的文件時可以大幅度提高系統(tǒng)讀取速率,最大可以達(dá)到現(xiàn)在普通方法的800%,即使用一臺服務(wù)器就可達(dá)到現(xiàn)有方法使用多臺服務(wù)器達(dá)到的效果,直接減少硬件投資,實(shí)踐中便于推廣,且本方法適用于所有操作系統(tǒng)。
文檔編號G06F13/10GK1624669SQ20031011239
公開日2005年6月8日 申請日期2003年12月2日 優(yōu)先權(quán)日2003年12月2日
發(fā)明者陳凱 申請人:陳凱