郵件過濾系統(tǒng)專用文件系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第1頁
郵件過濾系統(tǒng)專用文件系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第2頁
郵件過濾系統(tǒng)專用文件系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第3頁
郵件過濾系統(tǒng)專用文件系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第4頁
郵件過濾系統(tǒng)專用文件系統(tǒng)的設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩106頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

分類號密級UDC學(xué)位論文郵件過濾系統(tǒng)專用文件系統(tǒng)的設(shè)計與實(shí)現(xiàn)(題名和副題名)注1注明《國際十進(jìn)分類法UDC》的類號獨(dú)創(chuàng)性聲明本人聲明所呈交的學(xué)位論文是本人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我所知,除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得電子科技大學(xué)或其它教育機(jī)構(gòu)的學(xué)位或證書而使用過的材料。與我一同工作的同志對本研究所做的任何貢獻(xiàn)均已在論文中作了明確的說明并表示謝意。簽名:日期:年月日關(guān)于論文使用授權(quán)的說明本學(xué)位論文作者完全了解電子科技大學(xué)有關(guān)保留、使用學(xué)位論文的規(guī)定,有權(quán)保留并向國家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和磁盤,允許論文被查閱和借閱。本人授權(quán)電子科技大學(xué)可以將學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存、匯編學(xué)位論文。(保密的學(xué)位論文在解密后應(yīng)遵守此規(guī)定)簽名:導(dǎo)師簽名:日期:年月日摘要“郵件過濾系統(tǒng)專用文件系統(tǒng)”是信息產(chǎn)業(yè)部“電子發(fā)展基金”支持的“網(wǎng)絡(luò)多功能服務(wù)器”項目下的一個子課題。在Internet迅猛發(fā)展的今天,電子郵件已經(jīng)成為信息交換的重要載體,是目前Internet上最常用的功能。在本論文中,首先介紹了郵件服務(wù)器的基本理論、工作原理以及l(fā)inux文件系統(tǒng)原理和特征,總結(jié)了各種文件系統(tǒng)在郵件系統(tǒng)應(yīng)用中的優(yōu)缺點(diǎn)。通過對垃圾郵件過濾中出現(xiàn)的問題進(jìn)行分析和比較,最后提出了郵件過濾系統(tǒng)專用文件系統(tǒng)MFFS(MailFilteringFileSystem)的設(shè)計框架。在常規(guī)linux操作系統(tǒng)上,設(shè)計了一個用戶級的基于linux原始輸入輸出的文件系統(tǒng)。本文件系統(tǒng)一方面采用高效的磁盤管理策略,用預(yù)先分配的連續(xù)磁盤空間作為磁盤隊列,消除或減少文件創(chuàng)建、刪除等文件管理開銷,并減少磁盤碎片;采用延遲聚集寫和預(yù)先連續(xù)讀策略,通過一次磁盤搜索旋轉(zhuǎn)定位,盡量讀、寫更多的有效數(shù)據(jù),不僅減少了讀、寫次數(shù),而且讀、寫連續(xù)的磁盤塊也充分利用了磁盤帶寬使郵件系統(tǒng)的磁盤性能有了顯著提高;另一方面,采用了基于優(yōu)先級的郵件隊列設(shè)計方案,在一定程度上解決了常規(guī)郵件過濾方法準(zhǔn)確率不高,誤刪郵件的缺點(diǎn)。并且使郵件服務(wù)器在垃圾郵件的高強(qiáng)度分布式拒絕服務(wù)攻擊下具有很好的穩(wěn)定性。通過對MFFS的功能和性能測試,表明這個文件系統(tǒng)達(dá)到了設(shè)計目標(biāo)并具有較高的性能。關(guān)鍵詞:電子郵件,文件系統(tǒng),垃圾郵件過濾,郵件隊列AbstractMailFilteringFileSystemisoneofthesub-subjectsofMultipleFunctionServer,anationalprojectsupportedbyElectricDevelopmentFundsofMII(MinistryofInformationIndustry).AstheInternetisgrowingexplosively,e-mailhasbecomeanimportantcarrierforinformationexchangeandoneofthemostfrequentlyusedfunctionsonInternet.Inthispaper,wefirstintroducedthebasictheoriesandworkingprocedureofamailserver,aswellastheprincipleandfeaturesofLinuxfilesystem.Thenwesummarizedtheadvantagesanddisadvantagesofvariousfilesystemsappliedonthemailserver.Throughanalyzingandcomparingproblemsencounteredinjunkmailfiltering,weputforwardsthedesignframeworkfortheMailFilteringFileSystem.BasedontheordinaryLinuxoperatingsystem,wedesignedauser-levelfilesystembuildingonLinux'srawinputandoutput.Thisfilesystemadoptedhighefficientdiskmanagementstrategies,whichutilizesadiskspacetoserveasdiskqueuetoreducefilemanageoverhead,inwhichadjacentmessagesarestoredinadjacentdiskblock.SeveralmessagesarewrittentodiskqueueinaonelargewritebyLazyGatheringWrite.SeveraladjacentmessagesarereadintobufferinaonereadbySequentialGroupingPrefetch.whichimprovedthediskperformanceforthemailserver.Ontheotherhand,italsoadoptedadesignformailqeueuesbasedondifferentpriorities,andtosomeextent,preventedtheincorrectdeletionsappearedinnormalmailserversandimprovedaccuracyformailfiltering.Besides,themailserverusingthisfilesystemshowedhigherstabilityunderstrongdistributedDOSattacks. Throughtests,ithasbeenprovedthatthisfilesystemhasachievedourdesigninggoalandprovideshighperformance.Keywords:ElectricMailSystem,F(xiàn)ileSystem,SpamFiltering,MailQueue目錄TOC\o"1-3"\h\z摘要 IIIAbstract IV目錄 V第一章引言 11.1背景 11.2論文內(nèi)容組織 2第二章理論基礎(chǔ)及相關(guān)協(xié)議 42.1郵件服務(wù)器相關(guān)協(xié)議 42.1.1幾個概念 52.1.2Internet郵件發(fā)送和接收協(xié)議--SMTP協(xié)議 52.1.3Internet郵件提取協(xié)議 72.2文件系統(tǒng) 102.2.1Linux文件系統(tǒng)簡介 102.2.2虛擬文件系統(tǒng)VFS 112.2.3幾種linux下常用文件系統(tǒng)研究 122.3小結(jié) 19第三章郵件隊列的管理及其磁盤性能分析 203.1常用郵件隊列管理方式分析 203.1.1郵件隊列的物理磁盤管理方式分析 203.1.2郵件隊列的邏輯管理方式分析 233.2磁盤性能分析 243.3郵件隊列的優(yōu)化 253.4小結(jié) 26第四章郵件過濾的插入點(diǎn)分析 274.1常規(guī)郵件系統(tǒng)過濾的插入點(diǎn)概述 274.1.1MTA過濾 274.1.2MDA過濾 284.1.3MUA過濾 284.2郵件過濾插入點(diǎn)效率分析 294.2.1郵件插入點(diǎn)效率概述 294.2.2基于優(yōu)先級的策略中郵件過濾插入點(diǎn)分析 304.3小結(jié) 31第五章MFFS文件系統(tǒng)設(shè)計 325.1設(shè)計背景概述 325.2總體設(shè)計 345.2.1MFFS接口模塊 365.2.2請求隊列管理模塊 385.2.3緩沖區(qū)管理模塊 395.2.4郵件隊列管理模塊 475.2.5磁盤隊列管理模塊 485.3小結(jié) 56第六章MFFS文件系統(tǒng)的實(shí)現(xiàn) 576.1MFFS文件系統(tǒng)的模塊劃分 576.2郵件轉(zhuǎn)發(fā)模塊的實(shí)現(xiàn) 576.2.1主程序流程 586.2.2子線程流程 596.2.3Deliverd服務(wù)流程 596.2.4Deliverd主要函數(shù)實(shí)現(xiàn)分析 606.3郵件接收模塊 636.3.1算法及流程 636.3.2函數(shù)說明 666.4MFFS接口模塊 706.4.1總體結(jié)構(gòu)設(shè)計 706.4.2寫郵件的接口設(shè)計 706.4.3讀郵件的接口設(shè)計 756.4.4讀狀態(tài)接口設(shè)計 766.4.5隊列控制接口設(shè)計 786.5請求隊列管理模塊 796.5.1基本功能 796.5.2主要函數(shù)實(shí)現(xiàn)分析 796.6緩沖區(qū)管理模塊 816.6.1基本功能 816.6.2主要函數(shù)實(shí)現(xiàn)分析 816.7郵件隊列管理模塊 836.7.1基本功能 836.7.2主要數(shù)據(jù)結(jié)構(gòu) 846.7.3主要函數(shù)實(shí)現(xiàn)分析 846.8磁盤隊列管理模塊 846.8.1基本功能 846.8.2主要函數(shù)實(shí)現(xiàn)分析 856.9小結(jié) 87第七章測試及尚待解決的問題 887.1、測試項目 887.1.1、功能測試 887.1.2、性能測試 887.2、功能測試 897.2.1、SMTP服務(wù)器 897.3、性能測試 907.3.1、80%負(fù)載 917.3.2、100%負(fù)載 927.3.3、120%負(fù)載 927.3.4、120%負(fù)載下,%30垃圾郵件 937.3.5、120%負(fù)載下,%50垃圾郵件 947.4、小結(jié) 95第八章結(jié)論 97參考文獻(xiàn) 98致謝 100個人簡歷 101引言背景隨著因特網(wǎng)的不斷普及,國內(nèi)因特網(wǎng)的用戶數(shù)呈指數(shù)級增長。其中電子郵件是Internet所有服務(wù)中最基本的服務(wù),超過百分之八十的用戶使用電子郵件服務(wù)。它為人們的工作、生活、娛樂提供了極大的便利。在充分享受電子郵件帶來的便捷、實(shí)時和廉價的同時,網(wǎng)絡(luò)時代的人們也飽嘗垃圾郵件帶來的煩惱。幾乎每個人的信箱都充斥著大量來歷不明的郵件,垃圾郵件像瘟疫一樣蔓延,污染網(wǎng)絡(luò)環(huán)境,影響網(wǎng)絡(luò)的正常通信。而在我國,由于成百上千的開放郵件中繼服務(wù)器被國外不法分子利用,國外許多郵件服務(wù)商曾一度封殺了中國郵件服務(wù)器的IP地址,致使中國用戶蒙受不可估量的損失。垃圾郵件數(shù)量的增長速度如此之快的原因在于:第一,垃圾郵件一直被吹捧為是一種最有效卻最廉價的廣告形式。郵件地址列表很容易買到,也很容易從英特網(wǎng)搜集,特別是為了工作的需要,企業(yè)一般都在Web站點(diǎn)列出了員工的電子郵件地址。這使得編輯一個郵件地址數(shù)據(jù)庫變得非常的廉價和容易。然后,再使用一個廉價的郵件軟件按數(shù)據(jù)庫中的郵件地址自動發(fā)送出去即可,非常簡單。其次,傳統(tǒng)的控制方法無法有效的過濾垃圾郵件,使得終端用戶經(jīng)常收到來自不同地方的商業(yè)廣告。垃圾郵件制造者是通過郵件報頭欺騙,對郵件主題和內(nèi)容進(jìn)行處理以及利用第三方服務(wù)器進(jìn)行轉(zhuǎn)發(fā)來達(dá)到目的。一個常見的垃圾郵件偽裝方法是利用網(wǎng)絡(luò)中的開放式SMTP服務(wù)器進(jìn)行轉(zhuǎn)發(fā)。如果網(wǎng)絡(luò)中的一臺SMTP服務(wù)器沒有被配置為禁止轉(zhuǎn)發(fā)電子郵件,那么它將可能成為被垃圾郵件制造者利用的對象。概括起來說,垃圾郵件是指一切通過非法手段和非正常手段發(fā)送的以破環(huán)郵件系統(tǒng)網(wǎng)絡(luò)或者宣傳反動,色情的電子郵件的總稱。目前,從服務(wù)器本身的性能上來說,垃圾郵件的破壞方式有堵塞郵件服務(wù)器的出口,大量處理導(dǎo)致郵件服務(wù)器拒絕服務(wù)?;蛘呃煤笈_內(nèi)容過濾數(shù)據(jù)庫的更新不及時、內(nèi)容過濾的缺陷不斷的更換關(guān)鍵字,如果過濾服務(wù)器本身的效率較低,就很容易受到破壞。而在垃圾郵件的處理中,普遍存在著過濾效率低的問題。其中一個最大的瓶頸就是文件系統(tǒng)的效率較低,通過專用文件系統(tǒng)的設(shè)計,將極大的提高系統(tǒng)的吞吐量,為過濾策略的實(shí)現(xiàn),提供了良好的技術(shù)支持,從而更有效的遏制垃圾郵件的泛濫。目前,國內(nèi)還沒有廠商研制生產(chǎn)專用的郵件過濾服務(wù)器。國外有少量的廠商研制出了郵件過濾服務(wù)器,正處于市場推廣階段。這些產(chǎn)品價格昂貴,不適合國內(nèi)市場。此外,郵件過濾系統(tǒng)是核心網(wǎng)絡(luò)信息安全產(chǎn)品,對保證我國各行業(yè)的通信安全具有重要意義。因此,開發(fā)具有自主知識產(chǎn)權(quán)的郵件過濾系統(tǒng)將為中國的信息化進(jìn)程提供堅實(shí)的保證,具有重大的社會意義和市場價值。論文內(nèi)容組織本文從郵件協(xié)議,文件系統(tǒng)和物理磁盤讀寫的原理入手,概述了郵件協(xié)議及通用文件系統(tǒng)和物理磁盤的原理,分析常用郵件系統(tǒng)郵件隊列的設(shè)計方式,以及通用文件系統(tǒng)應(yīng)用于郵件過濾系統(tǒng)存在的問題。在以上研究的基礎(chǔ)上,設(shè)計和實(shí)現(xiàn)了一個基于linux操作系統(tǒng)的用戶級郵件過濾專用文件系統(tǒng)。后續(xù)章節(jié)的主要內(nèi)容安排如下:第二章、理論基礎(chǔ)及相關(guān)協(xié)議。主要講述了郵件服務(wù)器的相關(guān)協(xié)議,常用linux文件系統(tǒng)原理,以及相關(guān)的技術(shù)。第三章、郵件隊列的管理及其磁盤性能分析。主要分析了常用郵件系統(tǒng)的一些郵件隊列管理機(jī)制,及其在磁盤性能上的優(yōu)缺點(diǎn)。第四章、常用郵件過濾的插入點(diǎn)分析。主要分析了幾種郵件過濾中過濾插入點(diǎn)的性能和效率,以及優(yōu)缺點(diǎn)。第五章、郵件過濾專用文件系統(tǒng)的設(shè)計。主要講述了郵件過濾專用文件系統(tǒng)設(shè)計中的關(guān)鍵技術(shù),相關(guān)算法。第六章、郵件過濾專用文件系統(tǒng)的實(shí)現(xiàn)。著重講述了郵件過濾專用文件系統(tǒng)實(shí)現(xiàn)中的關(guān)鍵技術(shù)、相關(guān)算法和主要流程。第七章、測試及尚待考慮的問題。從功能和性能兩方面對文件系統(tǒng)進(jìn)行測試,測試的結(jié)果表明系統(tǒng)實(shí)現(xiàn)了設(shè)計的功能并達(dá)到較高的性能。第八章、結(jié)論對MFFS文件系統(tǒng)設(shè)計的總結(jié)和結(jié)論。

理論基礎(chǔ)及相關(guān)協(xié)議郵件服務(wù)器相關(guān)協(xié)議為了保證電子郵件系統(tǒng)的正常運(yùn)行,TCP/IP定義了一組協(xié)議,SMTP(簡單郵件傳輸協(xié)議)、POP3(郵局協(xié)議)和IMAP(Internet消息訪問協(xié)議)是主要的幾個協(xié)議。它們的關(guān)系如圖2-1所示:POP3IMAPRead/WriteMTAMUAMUAMTASMTPPOP3IMAPRead/WriteMailboxMailboxMDAMDASMTPSMTPPOP3IMAPRead/WriteMTAMUAMUAMTASMTPPOP3IMAPRead/WriteMailboxMailboxMDAMDASMTPSMTP圖2-1Internet郵件傳送示意圖電子郵件從發(fā)送到接收的過程如下:發(fā)送者利用MUA寫一封新郵件,通過SMTP協(xié)議發(fā)送給MTA。如果該郵件是發(fā)送給本地用戶的,MTA則將其交給MDA,MDA將該郵件投遞到本地用戶的郵箱中供用戶通過MUA讀??;如果該郵件是發(fā)送給遠(yuǎn)程用戶的,MTA則通過SMTP協(xié)議將其發(fā)送給另一SMTP服務(wù)器的MTA,遠(yuǎn)程MTA判斷該郵件接收者是本地或者遠(yuǎn)程,作上述同樣的操作,直到該郵件存儲到最終接收者的用戶郵箱中。而接收者則利用MUA通過POP3/IMAP協(xié)議讀取郵件。SMTP和POP3/IMAP服務(wù)器是服務(wù)器軟件,它們運(yùn)行在郵件服務(wù)器上。SMTP服務(wù)器功能包括MTA和MDA,也就是負(fù)責(zé)接收待發(fā)送的郵件,并發(fā)送至目標(biāo)郵件服務(wù)器的SMTP服務(wù)器,由該SMTP服務(wù)器寫入用戶郵箱。實(shí)際上,由于SMTP服務(wù)器具有中轉(zhuǎn)(Relay)功能,它并不區(qū)分郵件是來自用戶機(jī)(如普通PC)還是其它SMTP服務(wù)器。如果用戶想在普通客戶機(jī)(沒有SMTP服務(wù)器的普通主機(jī))上接收郵件的話,它需要通過POP3協(xié)議或IMAP協(xié)議從郵件服務(wù)器上獲取。不同的是,POP3服務(wù)器要求用戶將郵件取回本地的普通客戶機(jī)進(jìn)行維護(hù),而IMAP則可以在服務(wù)器上直接維護(hù),例如建立不同的郵件夾等。幾個概念1.MUA(MailUserAgent)稱為郵件用戶代理,用戶利用MUA讀取郵件,回復(fù)郵件以及寫新郵件并發(fā)送。MUA種類繁多,有foxmail和微軟的Outlook系列等客戶端工具,還有專用的Webmail等。2.MTA(MailTransportAgent)稱為郵件傳輸代理,MTA負(fù)責(zé)將電子郵件從一個SMTP服務(wù)器發(fā)送到另一個SMTP服務(wù)器。3.MDA(MailDeliveryAgent)稱為郵件投遞代理,MDA負(fù)責(zé)將電子郵件投遞到最終目的地,實(shí)現(xiàn)上可以是MTA的一部分。4.Envelop稱為信封,指明郵件的發(fā)送者和接收者的名字和地址,用于在MTA之間傳輸,分別是SMTP協(xié)議的MAILFROM命令和RCPTTO命令的參數(shù)。5.Header稱為郵件信頭,指明郵件的發(fā)送者和接收者的名字和地址,以及諸如主題、發(fā)送日期、關(guān)鍵詞等郵件細(xì)節(jié)信息,還有該郵件所通過的MTA,加上郵件路由信息和Message-ID字段等。6.Body稱為郵件正文,是發(fā)送給收件人的資料(包括文本或文件),一個空白行將正文同信頭分開。郵件信頭和正文構(gòu)成了一封完整的郵件,其格式由RFC822規(guī)定。Internet郵件發(fā)送和接收協(xié)議--SMTP協(xié)議SMTP(SimpleMailTransferProtocol,RFC821/2821)是一個用7-bit基本ASCII字符傳送簡單信文的郵件協(xié)議。它是一個獨(dú)立的用戶級協(xié)議,它要求一個可靠的資料信道。在TCP/IP協(xié)議中,這個信道是8-bit的TCP數(shù)據(jù)流,因此SMTP的7-bit字節(jié)一律按照最高位為零的8-bit字節(jié)進(jìn)行傳輸。如果要傳送8-bit資料,需要用特殊的調(diào)制算法(例如MIME)將其轉(zhuǎn)為7-bit資料,在接收端再用相反的算法將其復(fù)原。如圖2-2,SMTP設(shè)計基于以下通信模型:針對用戶的郵件請求,發(fā)送方SMTP建立與接收方SMTP之間是一個雙向傳送信道。接收方SMTP可以是最終接收者也可以是中間傳送者。SMTP命令由發(fā)送方SMTP發(fā)出,由接收方SMTP接收,而應(yīng)答則反方面?zhèn)魉?。一旦傳送信道建立,SMTP發(fā)送者發(fā)送MAIL命令指明郵件發(fā)送者。如果SMTP接收者可以接收郵件則返回OK應(yīng)答。SMTP發(fā)送者再發(fā)出RCPT命令確認(rèn)郵件接收者是否可以到達(dá)。如果SMTP接收者接收,則返回OK應(yīng)答;如果不能接收到,則發(fā)出拒絕接收應(yīng)答(但不中止整個郵件操作),雙方將如此重復(fù)多次。當(dāng)接收者收到全部郵件后會接收到特別的序列,如果接收者成功處理了郵件,則返回OK應(yīng)答。SMTP提供傳送郵件的機(jī)制,如果接收方與發(fā)送方連接在同一個傳送服務(wù)下時,郵件可以直接由發(fā)送方主機(jī)傳送到接收方主機(jī);或者,當(dāng)兩者不在同一個傳送服務(wù)下時,通過中繼SMTP服務(wù)器傳送。為了能夠?qū)MTP服務(wù)器提供中繼能力,它必須擁有最終目的主機(jī)地址和郵箱名稱。MAIL命令參數(shù)是回復(fù)路徑,它指定郵件從何處來;而RCPT命令的參數(shù)是轉(zhuǎn)發(fā)路徑的,它指定郵件向何處去。向前路徑是源路徑,而回復(fù)路徑是返回路徑(它用于發(fā)生錯誤時返回郵件)。當(dāng)同一個消息要發(fā)往不同的接收者時,SMTP遇到了向不同接收者發(fā)送同一份資料的復(fù)制品的問題,郵件命令和應(yīng)答有一個比較獨(dú)特的語法,應(yīng)答也有一個數(shù)字代碼。命令與應(yīng)答對大小寫不敏感,也就是說,命令和應(yīng)答可以是大寫,小寫或兩者的混合,但這一點(diǎn)對用戶郵件名稱卻不一定是對的,因為有的主機(jī)對用戶名大小寫是敏感的。這樣SMTP實(shí)現(xiàn)中就將用戶郵箱名稱保留成初始時的樣子,主機(jī)名稱對大小寫不敏感。命令與應(yīng)答由ASCII字母表組成,當(dāng)傳送服務(wù)提供8位字節(jié)傳送信道,每7位字符正確傳送,而最高位被填充為0。當(dāng)指定一般的命令或應(yīng)答格式后,參數(shù)會由一些類似于語言的字符串表示出來,如"<string>"或"<reverse-path>",這里尖括號表示這是一種類似于語言的變量。SMTP的一個重要特點(diǎn)是“中轉(zhuǎn)”(Relay)。一般地,用戶可以選擇任意一臺SMTP服務(wù)器(如A)來發(fā)送郵件(只要能與該服務(wù)器建立傳輸層連接),若該服務(wù)器與目標(biāo)SMTP服務(wù)器B可以建立直接連接,則郵件將被直接送至目標(biāo)服務(wù)器B;若不能建立直接連接,該SMTP服務(wù)器將向其它所知的SMTP服務(wù)器詢問路由,假如有一臺SMTP服務(wù)器C可以與目標(biāo)建立直接連接,或知道通向目標(biāo)的路由,則郵件被轉(zhuǎn)至服務(wù)器C,由服務(wù)器C向目標(biāo)B轉(zhuǎn)發(fā)。不管是從客戶機(jī)到服務(wù)器的發(fā)送還是服務(wù)器間的中轉(zhuǎn),SMTP使用同一套指令來進(jìn)行連接和數(shù)據(jù)的接收發(fā)送,從而使得整個過程清晰簡捷。Internet郵件提取協(xié)議Internet文件RFC1733定義了分布式消息訪問系統(tǒng)的三種操作模式或者稱為消息訪問機(jī)制:脫機(jī)方式(Offline)、聯(lián)機(jī)方式(Online)和斷開方式(Disconnected)。在脫機(jī)方式中,郵件客戶程序,即郵件用戶代理(MUA)從服務(wù)器將消息取回到本地機(jī),并在服務(wù)器上將該消息刪除,以后對消息的處理完全在本地機(jī)上進(jìn)行。在聯(lián)機(jī)方式中,郵件客戶程序直接對服務(wù)器上的消息進(jìn)行遠(yuǎn)程操作,不必將消息下載到本地。在斷開方式中,郵件客戶程序?qū)⒎?wù)器上的消息緩存到本地機(jī)后就與服務(wù)器斷開連接,然后用戶“脫機(jī)”得對已緩存到本地機(jī)的消息進(jìn)行處理,若需要則可以重新連接到服務(wù)器并與服務(wù)器保持同步。但這個模型與純粹的“脫機(jī)”方式是不同的,因為斷開方式下原始消息是留在服務(wù)器上的,并且客戶程序隨后重新連接到服務(wù)器并對服務(wù)器和客戶機(jī)消息緩存之間的消息狀態(tài)進(jìn)行同步。POP3協(xié)議是為脫機(jī)方式消息訪問機(jī)制設(shè)計的;IMAP協(xié)議最初是為支持聯(lián)機(jī)方式而設(shè)計的,同時也支持脫機(jī)和斷開訪問,并且IMAP4還為以后的功能擴(kuò)展做好了準(zhǔn)備。POP3協(xié)議POP3(PostOfficeProtocolversion3,RFC1939)定義了客戶機(jī)從郵件服務(wù)器上獲取郵件的一個簡單的方法,它通過一組簡單指令和應(yīng)答實(shí)現(xiàn)與用戶的交互操作。例如,用戶通過user指令和pass指令實(shí)現(xiàn)身份認(rèn)證,認(rèn)證成功后可以通過retr指令收取郵件等。加州大學(xué)針對SMTP服務(wù)器Sendmail,開發(fā)了一個共享的POP3服務(wù)器軟件popper,該軟件具有與Sendmail相同的支持多平臺和多種類型郵件的優(yōu)點(diǎn),并且在設(shè)計上采用結(jié)構(gòu)清晰的狀態(tài)機(jī)模型,其模型如下圖2-3所示。user和user和pass匹配會話(TRANSACT會話(TRANSACT)狀態(tài)身份認(rèn)證(AUTH)狀態(tài)接到quit命令user接到quit命令user和pass不匹配郵件更新(郵件更新(UPDATE)狀態(tài)退出(HALT)狀態(tài)圖2-3POPPER狀態(tài)機(jī)模型list、list、retr、dele…命令I(lǐng)MAP協(xié)議IMAP4(InternetMessageAccessProtocolversion4rev1,RFC2060)最初是為支持聯(lián)機(jī)方式而設(shè)計的,同時也支持脫機(jī)和斷開訪問方式,并且IMAP4還為以后的功能擴(kuò)展做好了準(zhǔn)備。它具有很多POP3不支持的功能:支持多級活頁夾,遠(yuǎn)程活頁夾操作,支持共享文檔夾,新到郵件通知,不用下載整個消息就可以確定消息的組成部分,有選擇的取出郵件的MIME信體部分,支持基于服務(wù)器的搜索與選擇以減少數(shù)據(jù)傳輸,設(shè)置標(biāo)準(zhǔn)的或用戶定義的消息狀態(tài)標(biāo)記,聯(lián)機(jī)性能優(yōu)化等?;贗MAP的這些良好特性,使得IMAP4協(xié)議比POP3協(xié)議更適合現(xiàn)在的分布式計算環(huán)境。近來越來越多的電子郵件服務(wù)器軟件已開始支持IMAP4,相應(yīng)的郵件客戶程序也將都會增加對IMAP4的支持。IMAP4提供了一種客戶機(jī)/服務(wù)器模型,客戶機(jī)通過向服務(wù)器發(fā)送一些命令來完成相應(yīng)的操作。如圖2-4客戶機(jī)能夠發(fā)送的命令與它所處的狀態(tài)有關(guān)。IMAP定義了3種狀態(tài):未確認(rèn)(Non-AuthenticatedState)、已確認(rèn)狀態(tài)(AuthenticatedState)和已選定狀態(tài)(SelectedState)。在不同的狀態(tài)下,客戶機(jī)可以向服務(wù)器發(fā)送的命令是有區(qū)別的,某些命令還會導(dǎo)致狀態(tài)的轉(zhuǎn)換。如同POP3,IMAP客戶機(jī)向服務(wù)器提出TCP連接請求,如果允許建立連接,服務(wù)器返回一個初始問候,表明連接已建立,然后服務(wù)器等待客戶機(jī)向其發(fā)送請求。與POP3客戶機(jī)發(fā)送完一個命令后必須等待服務(wù)器響應(yīng)不同的是,IMAP允許客戶機(jī)在不等待服務(wù)器響應(yīng)的情況下發(fā)送多個命令請求。這就引起怎樣來區(qū)分服務(wù)器返回的響應(yīng)對應(yīng)于哪個命令的問題。IMAP規(guī)定客戶機(jī)發(fā)送命令的時候必須帶上一個標(biāo)識此命令的標(biāo)簽,即完整的IMAP命令應(yīng)該是一個唯一的標(biāo)簽及命令本身和可能的參數(shù)。每個返回的響應(yīng)也包含了一個標(biāo)簽,利用此標(biāo)簽就可以將該響應(yīng)與相應(yīng)的命令對應(yīng)起來。對某些命令,服務(wù)器還會返回一類“無標(biāo)簽”響應(yīng),這類響應(yīng)使用特殊的星號(*)作為標(biāo)簽。服務(wù)器返回的響應(yīng)包含“OK”、“NO”、“BAD”、“BYE”、“PREAUTH”等用于表明狀態(tài)的內(nèi)容。與POP3相比,IMAP的命令要多得多,服務(wù)器返回的響應(yīng)格式種類更多也更為復(fù)雜,因而實(shí)現(xiàn)起來更為困難。初始化連接和服務(wù)器問候初始化連接和服務(wù)器問候非預(yù)確認(rèn)連接非預(yù)確認(rèn)連接拒絕連接預(yù)確認(rèn)連接未確認(rèn)拒絕連接預(yù)確認(rèn)連接未確認(rèn)Login或AuthenticateLogin或Authenticate命令成功,LogoutLogout或服務(wù)器關(guān)閉或連接關(guān)閉Select或ExamineSelect或Examine命令失敗,或Close命令已確認(rèn)Logout或服務(wù)器關(guān)閉或連接關(guān)閉Select或Logout或服務(wù)器關(guān)閉或連接關(guān)閉Select或Examine命令成功已選定已選定Logout或服務(wù)器關(guān)閉或連接關(guān)閉Logout或服務(wù)器關(guān)閉或連接關(guān)閉注銷并關(guān)閉連接注銷并關(guān)閉連接圖2-4IMAP狀態(tài)機(jī)文件系統(tǒng)Linux文件系統(tǒng)簡介LINUX操作系統(tǒng)包含許多實(shí)際的文件系統(tǒng),如ext,ext2,minix,ums,ext3等,文件管理的最上層模塊是文件系統(tǒng)。系統(tǒng)啟動時,必須首先裝入“根”文件系統(tǒng),然后根據(jù)/etc/fstab中的指定,逐個建立文件系統(tǒng)。此外,用戶也可以通過mount、umount操作,隨時安裝或卸載文件系統(tǒng)。當(dāng)裝入一個文件系統(tǒng)時,應(yīng)首先向系統(tǒng)核心注冊該系統(tǒng)及其類型。當(dāng)卸載一個文件系統(tǒng)時,應(yīng)向核心申請注銷該系統(tǒng)及類型。文件系統(tǒng)的注冊和注銷反映在以vfsmntlist為鏈頭,vfsmnttail為鏈尾,以vfsmount為節(jié)點(diǎn)的單向鏈表中。從鏈表的每一個vfsmount節(jié)點(diǎn)可找出一個已注冊文件系統(tǒng)的信息。文件系統(tǒng)類型的注冊和注銷反映在以file_systems為鏈頭,以file_system_type為節(jié)點(diǎn)的單向鏈表中。鏈表的每一個file_system_type節(jié)點(diǎn)描述一個已注冊的文件系統(tǒng)類型。系統(tǒng)管理可從vfsmntlist開始,遍歷整個文件系統(tǒng)鏈表,獲得任何一個已安裝文件系統(tǒng)的vfsmount。由vfsmount中的指針mnt_sb,獲得該文件系統(tǒng)的super_block。再從super_block得到具體信息,如s_type指向文件系統(tǒng)類型鏈表,s_mounted指向第一個VFSinode,s_covered指向安裝點(diǎn)目錄項的VFSinode。虛擬文件系統(tǒng)VFSVFS是物理文件系統(tǒng)與服務(wù)之間的一個接口層,它對LINUX的每個文件系統(tǒng)的所有細(xì)節(jié)進(jìn)行抽象,使得不同的文件系統(tǒng)在LINUX核心以及系統(tǒng)中運(yùn)行的其他進(jìn)程看來,都是相同的。嚴(yán)格說來,VFS并不是一種實(shí)際的文件系統(tǒng)。它只存在于內(nèi)存中,不存在于任何外存空間。VFS在系統(tǒng)啟動時建立,在系統(tǒng)關(guān)閉時消亡。VFS的功能包括:記錄可用的文件系統(tǒng)的類型;將設(shè)備同對應(yīng)的文件系統(tǒng)聯(lián)系起來;處理一些面向文件的通用操作;涉及到針對文件系統(tǒng)的操作時,VFS把它們映射到與控制文件、目錄、以及inode相關(guān)的物理文件系統(tǒng)。當(dāng)某個進(jìn)程發(fā)布了一個面向文件的系統(tǒng)調(diào)用時,核心將調(diào)用VFS中相應(yīng)的函數(shù),這個函數(shù)處理一些與物理結(jié)構(gòu)無關(guān)的操作,并且把它重定向為真實(shí)文件系統(tǒng)中相應(yīng)的函數(shù)調(diào)用,而這些函數(shù)調(diào)用則用來處理那些與物理結(jié)構(gòu)相關(guān)的操作。VFS描述系統(tǒng)文件使用superblock和inode的方式。在系統(tǒng)初起時,所有被初始化的文件系統(tǒng)(file_system_type)都要向VFS(file_systems)登記。每種文件系統(tǒng)類型的讀超級塊子例程(read_super)必須識別該文件系統(tǒng)的結(jié)構(gòu)并且將其信息映射到一個VFS的超級塊數(shù)據(jù)結(jié)構(gòu)上。為了文件系統(tǒng)的性能,設(shè)備上的超級塊(或FAT表等索引信息)必須駐留內(nèi)存空間。VFS的super_block數(shù)據(jù)結(jié)構(gòu)即提供了這樣的內(nèi)存空間。其中,聚合類型成員super_block.u是實(shí)現(xiàn)的關(guān)鍵。例如,ext2類型的文件系統(tǒng)一旦安裝,磁盤上的超級塊信息即會復(fù)制到一個ext2_sb_info結(jié)構(gòu),super_block.u.ext2_sb將指向該結(jié)構(gòu)。VFS超級塊包含了一個指向文件系統(tǒng)中的第一個inode的指針s_mounted。對于根文件系統(tǒng),它就是代表根目錄的inode節(jié)點(diǎn)(inode結(jié)構(gòu)將在下文描述)。VFS超級塊也包含一個指向該文件系統(tǒng)安裝點(diǎn)的inode(此inode屬于另一文件系統(tǒng))的指針s_covered。對于根文件系統(tǒng),s_covered無效。利用VFS超級塊的s_mounted和s_covered,以及inode,可以構(gòu)造包容所有已安裝文件系統(tǒng)的樹型目錄結(jié)構(gòu)。文件系統(tǒng)由子目錄和文件構(gòu)成。每個子目錄或文件只能由唯一的inode描述。inode是LINUX管理文件系統(tǒng)的最基本單位,也是文件系統(tǒng)連接任何子目錄、任何文件的橋梁。VFS的inode同VFS的super_block一樣,是物理設(shè)備上文件或目錄在內(nèi)存中的統(tǒng)一封裝。其中,聚合類型成員inode.u是實(shí)現(xiàn)的關(guān)鍵。例如,對于ext2類型的文件系統(tǒng),其磁盤上的inode信息ext2_inode復(fù)制到內(nèi)存中就是一個ext2_inode_info結(jié)構(gòu),inode.u.ext2_i將指向該結(jié)構(gòu)。幾種linux下常用文件系統(tǒng)研究ext2文件系統(tǒng)ext2的設(shè)計者主要考慮的是文件系統(tǒng)的效率和性能方面的問題。ext2在寫入文件內(nèi)容的同時并沒有同時寫入文件的meta-data(和文件有關(guān)的信息,例如:權(quán)限、所有者以及創(chuàng)建和訪問時間)。換句話說,Linux先寫入文件的內(nèi)容,然后等到有空的時候才寫入文件的meta-data。如果在寫入文件內(nèi)容之后但在寫入文件的meta-data之前,突然斷電了,文件系統(tǒng)就會處于不一致的狀態(tài)。在一個需要大量文件操作的系統(tǒng)中(例如,像Hotmail這樣的免費(fèi)的Webe-mail),出現(xiàn)這種情況會導(dǎo)致很嚴(yán)重的后果。日志文件系統(tǒng)可以幫助解決這個問題。假定你正在更新一個目錄項(directoryentry)。你已經(jīng)在這個巨大的目錄項的第五個文件塊(block)中改變了23個文件項(fileentry)。當(dāng)正在寫這個文件塊的時候突然間斷電了,這個文件塊還沒有寫完,也就是被損壞了。重新啟動的時候,Linux(就像其它的Unix)會運(yùn)行一個叫做“fsck”(filesystemcheck)的程序,掃描整個文件系統(tǒng),保證所有的文件塊都被正確地分配或使用。它將找到這個被損壞的目錄項并試圖修復(fù)它,但是不能夠保證fsck一定能夠修復(fù)損壞。修復(fù)不了是經(jīng)常的事。所以,當(dāng)出現(xiàn)上面那種情況,目錄項中所有的文件項可能會丟失,也就造成文件的丟失。如果文件系統(tǒng)很大,fsck掃描要費(fèi)很長時間。在一個有數(shù)十億個文件的計算機(jī)上,fsck可能要運(yùn)行10個小時以上。在這段時間內(nèi),系統(tǒng)是不可用的,也就是導(dǎo)致了很長的當(dāng)機(jī)時間。日志文件系統(tǒng)可以避免這種情況。對于郵件系統(tǒng)來說,用戶能夠忍受電子郵件的延遲到達(dá),卻不能忍受丟信。所以我們必須找一種更好的設(shè)計方式,以便保證郵件文件的安全,同時在災(zāi)難恢復(fù)的時候能夠快速,方便。Resierfs文件系統(tǒng)Resierfs文件系統(tǒng)是一個linux下的日志文件系統(tǒng),它設(shè)計的主要目標(biāo)是在系統(tǒng)崩潰的時候能夠快速恢復(fù)。而且在用于小文件和包含許多文件目錄時,文件系統(tǒng)的效率也很高,這種特征和郵件文件大小分布相符合。Resierfs的一個重要概念是統(tǒng)一的名字空間。在理論上,HansReiser想創(chuàng)建一個由對象組成的文件系統(tǒng),這些對象既是對象又是目錄。Resierfs使文件邊界與磁盤上的塊對齊。這樣做的原因是:使一個文件跨越的塊數(shù)減到最少,在存儲每一個沒有完全填滿的塊時避免浪費(fèi)磁盤和緩沖區(qū)空間。存在引用的局域性的時候,避免對沒有完全填滿的塊的每一次訪問浪費(fèi)I/O帶寬,減少在訪問目錄中的每一個文件時所需要的平均塊獲取數(shù)量,并且為它產(chǎn)生最簡單的代碼。Resierfs從一開始就以某種方式聚集小文件,避免磁盤空間的浪費(fèi)。理解I/O效率和塊大小之間的相互影響是非常復(fù)雜的,ReiserFS具有以下的結(jié)構(gòu)缺點(diǎn),這些缺點(diǎn)源于重新打包以節(jié)省空間和增加塊大小的開銷:當(dāng)文件的尾部變得足夠大,它自己就可以占用整個節(jié)點(diǎn)時,將從它所在的格式化節(jié)點(diǎn)中刪除它,并將它轉(zhuǎn)換為一個未格式化節(jié)點(diǎn)。小于一個節(jié)點(diǎn)的尾部可能跨越兩個節(jié)點(diǎn),如果引用的局域性很糟糕,那么這需要執(zhí)行更多的I/O。將多個尾部聚集到一個節(jié)點(diǎn)中會使文件主體和尾部分離,這會降低讀性能。對于大小接近節(jié)點(diǎn)的文件來說,這種效果會很明顯。在向非格式化節(jié)點(diǎn)中的最后一個項目的文件或者尾部添加一個字節(jié)時,那么平均起來整個節(jié)點(diǎn)中會有一半在內(nèi)存中移動。如果任何一個應(yīng)用程序執(zhí)行I/O并生成許多小型的未緩存寫入,那么將讓你為無法緩存I/O付出巨大的代價。使用最少的序列化和數(shù)據(jù)位移來確??苫謴?fù)的問題不可避免的會影響性能設(shè)計。Resierfs用perservelists的方案來確保可恢復(fù)性,這樣在附近寫入元數(shù)據(jù),從而避免了覆蓋原來的元數(shù)據(jù)。Reiserfs總的來說是非常出色的,這主要是由于科學(xué)和聰明的設(shè)計和編程方法,不過它最大的缺點(diǎn)是和linux內(nèi)核組件(如NFS)的交互性很差。Log文件系統(tǒng)在過去的十多年,CPU的速度發(fā)生了戲劇性的變化,但是磁盤的的存取速度卻提高很少,而且這一趨勢在以后還有可能繼續(xù),越來越多的應(yīng)用的瓶頸都集中在磁盤性能上,為了減少這個問題對應(yīng)用程序的影響,設(shè)計出了一種新的磁盤存儲方式,Log文件系統(tǒng)。它能夠比常規(guī)的文件系統(tǒng)更好的利用磁盤帶寬。Log文件系統(tǒng)比傳統(tǒng)的文件系統(tǒng)安全,因為它用獨(dú)立的日志文件跟蹤磁盤內(nèi)容的變化。就像關(guān)系型數(shù)據(jù)庫(RDBMS),日志文件系統(tǒng)可以用事務(wù)處理的方式,提交或撤消文件系統(tǒng)的變化。文件系統(tǒng)通過為每個文件分配文件塊的方式把數(shù)據(jù)存儲在存儲設(shè)備中。這樣就需要維護(hù)每一個文件的文件塊的分配信息,而分配信息本身也要保存在磁盤上。不同的文件系統(tǒng)用不同的方法分配和讀取文件塊。有兩種常用的文件系統(tǒng)的分配策略:塊分配(blockallocation)和擴(kuò)展分配(extentallocation)。塊分配當(dāng)文件變大的時候每一次都為這個文件分配磁盤空間,而擴(kuò)展分配則是當(dāng)某個文件的磁盤空間不夠的時候,一次性為它分配一連串連續(xù)的塊。傳統(tǒng)的Unix文件系統(tǒng)使用的塊分配的機(jī)制提供了一個靈活而高效的文件塊分配策略。磁盤上的文件塊根據(jù)需要分配給文件,這樣可以減少存儲空間的浪費(fèi)。當(dāng)一個文件慢慢變大的時候,就會造成文件中文件塊的不連續(xù)。這就導(dǎo)致了過多的磁盤尋道時間,當(dāng)讀取一個文件的時候有可能要隨機(jī)而不是連續(xù)的讀取文件塊,這樣的效率很低??梢酝ㄟ^優(yōu)化文件塊的分配策略(盡可能為文件分配連續(xù)的塊)來避免文件塊的隨機(jī)分配。通過使用聰明的塊分配策略,可以實(shí)現(xiàn)塊的連續(xù)分配。這樣就可以減少磁盤的尋道時間。但是,當(dāng)整個文件系統(tǒng)的文件塊的分配形成碎片的時候,就再也不可能連續(xù)分配了。每一次當(dāng)文件擴(kuò)展的時候,塊分配的算法就要寫入一些關(guān)于新分配的塊所在位置的信息。如果每一次文件擴(kuò)展的時候只增加一個塊,那么就需要很多額外的磁盤I/O用來寫入文件塊的結(jié)構(gòu)信息。文件塊的結(jié)構(gòu)信息也就是meta-data。meta-data總是一起同時地寫入存儲設(shè)備的,這就意味著改變文件大小的操作要等到所有的meta-data的操作都完成之后才能進(jìn)行。因此,meta-data的操作會顯著地降低整個文件系統(tǒng)的性能。擴(kuò)展分配方式一次性為文件分配很多連續(xù)的塊。當(dāng)創(chuàng)建一個文件的時候,很多文件塊同時被分配;當(dāng)文件擴(kuò)展的時候,也一次分配很多塊。文件系統(tǒng)的meta-data在文件創(chuàng)建的時候被寫入,當(dāng)文件的大小沒有超過所有已分配的文件塊的大小,就不用寫入meta-data。(直到需要再分配文件塊的時候)這樣可以優(yōu)化磁盤尋道的方式,可以成組地分配塊,有利于一次寫一大批數(shù)據(jù)到存儲設(shè)備中,這樣就可以減少磁盤設(shè)備寫數(shù)據(jù)的時間?;跀U(kuò)展分配的文件系統(tǒng)在讀取順序文件的時候有很好的性能,因為文件塊都是成組連續(xù)分配的。但是,如果I/O操作是隨機(jī)的,基于擴(kuò)展分配的文件系統(tǒng)的好處就非常有限了。例如,當(dāng)我們要連續(xù)地讀取一個基于擴(kuò)展分配的文件的時候,我們只要讀起始塊號和文件長度就行了。然后,就可以連續(xù)地讀取所有的文件塊了,這樣在順序讀取文件的時候,讀meta-data的開銷就很小。反之,如果隨機(jī)地讀取文件,我們就要先查找每一個所需塊的塊地址然后再讀取塊的內(nèi)容,這樣就和塊分配方式很象了。在ext2文件系統(tǒng)中,對寫性能的增強(qiáng)是通過盡量延遲寫的時間,這樣就能一次寫一大批數(shù)據(jù)而不是每次寫一小點(diǎn)。隨之而來的就是系統(tǒng)效率的提高。同樣,當(dāng)讀的時候,ext2也是一次讀取一整組的塊,也就是采用預(yù)讀策略。這樣就能提高ext2文件系統(tǒng)的讀性能,大量減少每次讀取少量數(shù)據(jù)的I/O操作。文件塊的組或塊簇(blockcluster)的大小是在編譯的時候確定的。怎樣設(shè)定簇的大小不是這里所要介紹的內(nèi)容。但是,可以這么說,簇的大小對文件系統(tǒng)的性能確實(shí)有很大的影響,而且簇的大小也是文件系統(tǒng)設(shè)計的時候需要考慮的一個很重要的方面。像Veritas這樣的擴(kuò)展分配的文件系統(tǒng)和象ext2這樣的“成簇寫”(write-clustering)的文件系統(tǒng),在默認(rèn)情況下都使用512字節(jié)的塊而不用1k字節(jié)的塊。如果ext2用4k而不是1k字節(jié)的塊,大概會有20%的性能提升。但是,為了減少被浪費(fèi)的空間ext2文件系統(tǒng)的設(shè)計者建議使用1k字節(jié)的塊。日志文件的設(shè)計思想是跟蹤文件系統(tǒng)的變化而不是文件系統(tǒng)的內(nèi)容。為了更好地解釋這個問題,下面我用ext2文件系統(tǒng)和日志文件系統(tǒng)舉一個例子:當(dāng)我們改變文件“test.file”的內(nèi)容的時候會出現(xiàn)什么情況?先假定“test.file”的inode有四個數(shù)據(jù)塊。用來保存“test.file”文件的數(shù)據(jù)塊的塊號分別為3110、3111、3506和3507(因為在3111和3506之間的塊已經(jīng)分配給其它文件了,所以這些塊不連續(xù))。當(dāng)硬盤要先找到3100,讀兩塊,在跳到3500,再讀兩塊,才能讀取整個文件。假定你改變了第三塊,文件系統(tǒng)會讀取第三塊,改變它,然后重新寫入第三塊,這一塊還在3506這個位置。如果你往這個文件中添加了一些內(nèi)容,就要從別的地方另外分配一些空余的塊。如果在日志文件系統(tǒng)中,情況就有所不同。日志文件系統(tǒng)不會改變第3506塊的內(nèi)容,它會把“test.file”的inode的一個拷貝和新的第三塊保存到磁盤上。在內(nèi)存中的inode列表需要更新,讓“test.file”使用新的inode。所有的變化、添加和改變需要被記錄到一個文件系統(tǒng)中被稱為“日志”的那部分中去。每隔一段時間,文件系統(tǒng)在“檢查點(diǎn)”(checkpoint)回更新在磁盤上的inode,并且釋放文件中用不到的那些舊塊(例如:“test.file”文件最初的第三塊)。在系統(tǒng)崩潰之后,日志文件系統(tǒng)很快就能恢復(fù)。它需要恢復(fù)的只是日志中記錄下來的很少的幾塊。當(dāng)斷電之后,“fsck”只要用幾秒鐘的掃描時間。但是,文件系統(tǒng)為得到額外的安全也是要付出代價的,這就是系統(tǒng)開銷。每一次更新和大多數(shù)的“日志”操作都需要寫同步,這樣就需要更多的磁盤I/O操作。系統(tǒng)管理員就面臨這樣一個問題:為了有一個更安全的文件系統(tǒng)值不值得犧牲一部分性能?大多數(shù)系統(tǒng)管理員會根據(jù)實(shí)際情況作出決定。沒有必要把“/usr”目錄放在日志文件系統(tǒng)上因為“/usr”目錄大部分是只讀的操作。但是,可以考慮把“/var”或包含e-mailspool文件的目錄放在日志文件系統(tǒng)上。幸運(yùn)的是在Linux系統(tǒng)中可以根據(jù)需要混合使用這些文件系統(tǒng)。日志文件系統(tǒng)還有一個問題就是更容易產(chǎn)生碎片。因為它的文件分配方式與眾不同,很容易在文件系統(tǒng)中到處產(chǎn)生碎片。ext2文件系統(tǒng)也會產(chǎn)生碎片但是可能不會有這么嚴(yán)重。每個月定期把文件系統(tǒng)備份到磁帶中然后重新恢復(fù),不僅可以解決這問題,而且可以檢查備份/恢復(fù)的過程是否正確。Webproxy文件系統(tǒng)。隨著計算機(jī)網(wǎng)絡(luò)尤其是Internet的快速發(fā)展,作為緩存服務(wù)器的WebProxy得到了普遍的應(yīng)用。而隨著網(wǎng)絡(luò)速度的提高和磁盤速度的緩慢,WebProxy所在的文件系統(tǒng)的延遲在人們感覺到在WebProxy服務(wù)的響應(yīng)時間中占了很大的比例。通常作為緩存的WebProxy運(yùn)行在普通文件系統(tǒng)上,而普通的文件系統(tǒng)不是針對WebProxy應(yīng)用服務(wù)來設(shè)計而優(yōu)化的,所以這會造成服務(wù)的效率不高。商用的緩存服務(wù)器通常采用專用的操作系統(tǒng)、專用的文件系統(tǒng)甚至專用的硬件,加上專門的緩存服務(wù)程序,具有較高的性能,但是代價較為昂貴。Webproxy文件系統(tǒng)利用了WebProxy負(fù)載的一些特點(diǎn),例如webpages一旦緩存大小就不會發(fā)生變化,存取權(quán)限也不會發(fā)生變化,webpages訪問的鄰接性等。這些特點(diǎn)可以讓我們把一個文件的數(shù)據(jù)存儲到連續(xù)的磁盤塊之上。這種存儲的連續(xù)性可以使對文件的讀寫最大限度的利用了磁盤的帶寬,縮短了尋找的時間。WebProxy存儲的文件是遠(yuǎn)方服務(wù)器的一個備份,這種冗余性可以使我們把所有的元信息放在內(nèi)存當(dāng)中來提高文件系統(tǒng)的效率。隨著分布式計算越來越普遍,用戶對服務(wù)器性能滿意程度很大部分上取決于和遠(yuǎn)端服務(wù)器的交互的響應(yīng)時間。為了性能和管理的原因,很多服務(wù)采用的是專用的硬件,專用的操作系統(tǒng)和專用的文件系統(tǒng)。然而,這些服務(wù)也經(jīng)常跑在通用的操作系統(tǒng)和文件系統(tǒng)比如UNIX的UFS、FFS、LFS和Linux的EXT2之上,而這些操作系統(tǒng)和文件系統(tǒng)又是未對某一單獨(dú)的應(yīng)用程序優(yōu)化過的,通常這會造成性能的下降。統(tǒng)計數(shù)據(jù)表明,對一個proxy的訪問命中的文件90%來自于磁盤,而磁盤的延遲又對響應(yīng)時間(用戶感覺到的)的貢獻(xiàn)是30%。由于網(wǎng)絡(luò)速度的不斷提高,而磁盤存取速度的沒有什么提高,所以這個比重還會加大。通用文件系統(tǒng)在解決WebProxy系統(tǒng)性能上的局限性在于:命名策略:傳統(tǒng)的UNIX文件系統(tǒng)采用的是層次化的樹狀目錄命名策略來管理文件,而WebProxy不需要此層次結(jié)構(gòu),它需要的只是一個平坦的名字空間。比較深的層次化的樹狀目錄結(jié)構(gòu)會造成很長的遍歷時間。而如果一個目錄內(nèi)有大量的文件也會減慢查詢速度,因為在一個目錄中查找文件很多系統(tǒng)的實(shí)現(xiàn)是線性查找.一致性:文件系統(tǒng)的元數(shù)據(jù)保存在inode里面,為了保持元數(shù)據(jù)的一致性,許多文件系統(tǒng)采用的同步寫的技術(shù),這樣整個系統(tǒng)的性能就會下降。而WebProxy由于自身的特點(diǎn),在一致性要求上較為寬松,不需要嚴(yán)格的一致性,從而換來一定的速度提升。數(shù)據(jù)緩沖的重復(fù)和不方便管理:例如一個典型的UNIX系統(tǒng)會把數(shù)據(jù)用DMA方式從設(shè)備放到設(shè)備驅(qū)動程序的緩沖區(qū)里面,然后再把數(shù)據(jù)拷貝到文件系統(tǒng)的緩沖區(qū),最后再拷貝到應(yīng)用程序的緩沖區(qū)。而后面兩個拷貝應(yīng)該避免。另外文件系統(tǒng)cache不方便管理。由于文件系統(tǒng)不能存取應(yīng)用程序的信息,WebProxy一般在應(yīng)用程序級維護(hù)自己的cache管理。但是應(yīng)用程序級維護(hù)的cache很可能在文件系統(tǒng)級別也存在,特別是剛剛從磁盤存取過。這就是多重緩存的問題,這個問題降低了計算機(jī)內(nèi)存的利用率、命中率以及造成響應(yīng)時間的延長。訪問的鄰接性:磁盤的讀寫延遲主要是由于數(shù)據(jù)塊的不連續(xù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論