一種分布式文件系統(tǒng)中海量小文件io操作傳輸提速方法
【專利摘要】本發(fā)明提供了一種分布式文件系統(tǒng)中海量小文件IO操作傳輸提速方法,在發(fā)送端將大量小文件IO操作緩存,執(zhí)行流量匯集,打包成單一大文件一次性傳輸?shù)浇邮斩耍诮邮斩藢λ龃笪募M行解析,獲得每一個小文件IO操作,并執(zhí)行相關(guān)文件寫入操作。所述方法大大降低了網(wǎng)絡(luò)交互次數(shù),提高了海量小文件IO操作的傳輸速度。
【專利說明】一種分布式文件系統(tǒng)中海量小文件IO操作傳輸提速方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機存儲領(lǐng)域,具體涉及集群存儲中,海量小文件傳輸加速的方法?!颈尘凹夹g(shù)】
[0002]隨著網(wǎng)絡(luò)應(yīng)用的迅速發(fā)展,網(wǎng)絡(luò)信息數(shù)據(jù)量越來越大,PB級別的海量數(shù)據(jù)存儲變得越來越重要。傳統(tǒng)意義的文件系統(tǒng)已不能滿足現(xiàn)有應(yīng)用的大容量、高可靠性、高性能等要求,為滿足這些新要求,基于分布式文件系統(tǒng)發(fā)展而來的集群NAS系統(tǒng)得到了廣泛重視。
[0003]現(xiàn)有分布式文件系統(tǒng)的研究主要分為元數(shù)據(jù)與實際數(shù)據(jù)存儲分開管理,通過元數(shù)據(jù)與實際數(shù)據(jù)的隔離實現(xiàn)了分布式文件系統(tǒng)的容量動態(tài)增減、性能現(xiàn)行擴展。然而,社會化網(wǎng)絡(luò)、移動通信、網(wǎng)絡(luò)視頻音頻、電子商務(wù)、傳感器網(wǎng)絡(luò)、科學(xué)實驗等各種應(yīng)用產(chǎn)生的數(shù)據(jù),不僅存儲容量巨大,而且還具有數(shù)據(jù)類型繁多、數(shù)據(jù)大小變化大、流動快等顯著特點,往往能夠產(chǎn)生千萬級、億級甚至十億、百億級的海量小文件,而且更多地是海量大小文件混合存儲。由于在元數(shù)據(jù)管理、訪問性能、存儲效率等方面面臨巨大的挑戰(zhàn)性,因此海量小文件(LOSF, lots of small files)問題成為了工業(yè)界和學(xué)術(shù)界公認的難題。
[0004]通常我們認為大小在IMB以內(nèi)的文件稱為小文件,百萬級數(shù)量及以上稱為海量,由此量化定義海量小文件問題,以下簡稱LOSF。LOSF應(yīng)用在目前實際中越來越常見,如社交網(wǎng)站、電子商務(wù)、廣電、網(wǎng)絡(luò)視頻、高性能計算。
[0005]由于分布式文件系統(tǒng)的設(shè)計原理導(dǎo)致其在解決海量小文件傳輸問題時具有先天缺陷,使得現(xiàn)有集群NAS系統(tǒng)存在嚴重的小文件傳輸瓶頸,圖1示出了現(xiàn)有集群NAS系統(tǒng)中小文件IO操作方式。
【發(fā)明內(nèi)容】
[0006]為了充分利用分布式文件系統(tǒng)的高并發(fā)處理能力特性解決海量小文件傳輸問題,本發(fā)明設(shè)計了一種分布式文件系統(tǒng)中海量小文件IO操作傳輸提速方法,包括:
[0007]S1:在發(fā)送端將大量小文件IO操作緩存,并按照預(yù)定的格式進行流量合
[0008]并,打包為單一的大文件傳輸?shù)浇邮斩耍?br>
[0009]S2:在接收端對接收到的所述單一大文件進行解析,獲得所述大量小文件IO操作,并執(zhí)行文件寫入操作。
[0010]本發(fā)明的有益效果是:該方法對海量小文件的操作利用多線程技術(shù)進行緩存和匯集,將大量的小文件操作轉(zhuǎn)換為單一的大文件操作,大大降低了網(wǎng)絡(luò)交互次數(shù),提高了海量小文件IO操作的傳輸速度。
【專利附圖】
【附圖說明】
[0011]圖1示出的是現(xiàn)有技術(shù)中的海量小文件IO操作傳輸方案。
[0012]圖2示出的是本發(fā)明提出的分布式文件系統(tǒng)中海量小文件IO操作傳輸提速方法流程圖?!揪唧w實施方式】
[0013]下面參照附圖1詳細描述本發(fā)明提出的分布式文件系統(tǒng)中海量小文件傳輸提速方法,所述方法涉及如下幾個主要步驟
[0014]1,客戶端的IO調(diào)用截取。該步驟通過在客戶端安裝專門的軟件,實現(xiàn)對客戶端操作系統(tǒng)IO操作的重定向,通過對文件體積的獲取,區(qū)分小文件與大文件,對于大文件使用系統(tǒng)默認的IO路徑進行傳輸,對于小文件則進行攔截處理。
[0015]2,海量小文件的流量合并。在客戶端進行了小文件IO操作的攔截之后,對小文件的文件名、文件長度、文件內(nèi)容、文件屬性進行讀取和編碼,寫入到預(yù)設(shè)的網(wǎng)絡(luò)路徑中。此時大量的小文件的IO被合并為單一的大文件的10。對于海量小文件從客戶端寫入集群NAS的情況,這一步驟在客戶端進行小文件操作的緩存和匯集,實現(xiàn)流量合并;對于海量小文件從集群NAS寫入客戶端的情況,這一步驟在集群NAS服務(wù)端進行處理,通過多線程并發(fā)訪問分布式文件系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù),實現(xiàn)高速的小文件操作的緩存和匯集,實現(xiàn)流量合并。
[0016]3,數(shù)據(jù)解析及文件寫入。上一步驟中進行了流量合并后,在IO對端一側(cè),對于接收到的合并后的單一大文件IO操作進行分解,對分解得到的大量小文件的操作在本地進行并行處理。對于海量小文件從客戶端寫入集群NAS的情況,這一步在集群NAS的服務(wù)端運行,通過多線程的并行處理進行海量小文件的數(shù)據(jù)寫入、文件屬性更新等操作;對于海量小文件從集群NAS寫入到客戶端的情況,則在客戶端進行處理,并根據(jù)客戶端的資源情況進行一定的并發(fā)處理。
[0017]參照圖2,本發(fā)明體系結(jié)構(gòu)包括:客戶端IO截取模塊和集群NAS服務(wù)端數(shù)據(jù)處理模塊。
[0018]再一個典型的配置環(huán)境里,客戶端IO截取模塊作為一般應(yīng)用軟件安裝到客戶端操作系統(tǒng)中,當客戶進行文件傳輸操作時,客戶端IO截取模塊(I)能夠攔截到文件傳輸?shù)腎O調(diào)用,并根據(jù)文件體積進行判斷,對于體積大于IMB的文件判定為大文件,調(diào)用系統(tǒng)默認IO流程進行處理。對于體積小于IMB的文件判定為小文件,不使用系統(tǒng)的默認IO流程,而是使用本發(fā)表明定義的數(shù)據(jù)格式進行緩存。
[0019]對于小文件從客戶端寫入集群NAS,客戶端IO截取模塊緩存小文件IO操作的文件屬性和文件內(nèi)容,待積累的小文件IO操作將緩存填滿后,客戶端IO截取模塊將緩存內(nèi)容按照預(yù)定的格式進行流量合并,打包為單一的大文件傳輸?shù)郊篘AS服務(wù)端數(shù)據(jù)處理模塊,由集群NAS服務(wù)端數(shù)據(jù)處理模塊進行數(shù)據(jù)解包,并將相關(guān)文件內(nèi)容、文件屬性利用多線程并發(fā)直接寫入到分布式文件系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)中。
[0020]對于小文件從集群NAS寫入客戶端,客戶端IO截取模塊將小文件IO操作指令緩存起來,緩存滿后將指令打包發(fā)給集群NAS服務(wù)端數(shù)據(jù)處理模塊進行處理。集群NAS服務(wù)端數(shù)據(jù)處理模塊根據(jù)打包的指令利用多線程技術(shù)并發(fā)直接從分布式文件系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)中獲取相關(guān)文件的文件屬性、文件內(nèi)容,進行流量匯聚,打包成單一的大文件傳送給客戶端IO截取模塊,客戶端IO截取模塊接收到該打包后的大文件后進行數(shù)據(jù)解析和文件內(nèi)容、文件屬性的寫入,完成IO流程。
[0021]至此,已經(jīng)完成了傳統(tǒng)海量小文件傳輸模式到本發(fā)明設(shè)計的海量小文件加速模式的轉(zhuǎn)換,實現(xiàn)了分布式文件系統(tǒng)作為集群NAS系統(tǒng)場景下海量小文件的高速傳輸。[0022]當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護范圍。
【權(quán)利要求】
1.一種分布式文件系統(tǒng)中海量小文件IO操作傳輸提速方法,其特征在于包括: S1:在發(fā)送端將大量小文件IO操作緩存,并按照預(yù)定的格式進行流量合并,打包為單一的大文件傳輸?shù)浇邮斩耍? S2:在接收端對接收到的所述單一大文件進行解析,獲得所述大量小文件IO操作,并執(zhí)行文件寫入操作。
2.如權(quán)利要求1所述的方法,其特征在于: 所述發(fā)送端為客戶端IO截取模塊,所述接收端為集群NAS服務(wù)端數(shù)據(jù)處理模塊; 所述步驟SI具體為:客戶端IO截取模塊攔截所述大量小文件IO操作,并緩存每一個小文件IO操作的文件屬性和文件內(nèi)容,待積累的小文件IO操作將緩存填滿后,客戶端IO截取模塊將緩存內(nèi)容按照預(yù)定的格式進行流量合并,打包為單一的大文件傳輸?shù)郊篘AS服務(wù)端數(shù)據(jù)處理模塊; 所述步驟S2具體為:由集群NAS服務(wù)端數(shù)據(jù)處理模塊對接收到的所述單一大文件進行數(shù)據(jù)解析,獲得每一個小文件IO操作的文件內(nèi)容和文件屬性,并利用多線程并發(fā)方式將所述文件內(nèi)容和文件屬性直接寫入到分布式文件系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)中。
3.如權(quán)利要求1所述的方法,其特征在于: 所述發(fā)送端為集群NAS服務(wù)端數(shù)據(jù)處理模塊,所述接收端為客戶端IO截取模塊; 所述步驟SI之前還包括步驟:客戶端IO截取模塊將大量小文件IO操作指令緩存起來,當緩存填滿后,將所述緩存中的指令打包一次性發(fā)送給所述集群NAS服務(wù)端數(shù)據(jù)處理模塊; 所述步驟SI具體為:集群NAS服務(wù)端數(shù)據(jù)處理模塊根據(jù)所述指令利用多線程技術(shù)并發(fā)方式直接從分布式文件系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)中獲取相關(guān)小文件IO操作的文件屬性和文件內(nèi)容,進行流量匯聚,打包成單一的大文件傳送給客戶端IO截取模塊; 所述步驟S2具體為:客戶端IO截取模塊接收到該打包后的大文件后進行數(shù)據(jù)解析,獲得每一個小文件IO操作的文件內(nèi)容和文件屬性并執(zhí)行寫入操作。
【文檔編號】G06F17/30GK103716413SQ201410014559
【公開日】2014年4月9日 申請日期:2014年1月13日 優(yōu)先權(quán)日:2014年1月13日
【發(fā)明者】孟圣智 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司