專利名稱:海量數(shù)據(jù)分級存儲方法
技術(shù)領(lǐng)域:
海量數(shù)據(jù)分級存儲方法屬于數(shù)據(jù)遷移領(lǐng)域,尤其涉及其中的數(shù)據(jù)分級,數(shù)據(jù)管理和遷移決策領(lǐng)域。
背景技術(shù):
海量數(shù)據(jù)分級存儲技術(shù)是指由具有不同性能、可用性和每位價格等指標的存儲設(shè)備構(gòu)成多級存儲系統(tǒng);根據(jù)海量數(shù)據(jù)的訪問規(guī)律,按照近期訪問概率的不同將數(shù)據(jù)分成不同級別;根據(jù)數(shù)據(jù)級別的變化在不同級別的存儲設(shè)備之間遷移數(shù)據(jù)。在合適的時間將合適的數(shù)據(jù)動態(tài)遷移到合適的位置,目的是使該存儲系統(tǒng)的服務(wù)質(zhì)量在統(tǒng)計上較高,而總擁有成本較低。傳統(tǒng)的分級存儲系統(tǒng)由在線設(shè)備(磁盤)和離線設(shè)備(磁帶)兩級構(gòu)成,數(shù)據(jù)在創(chuàng)建時放在在線設(shè)備上,當在線設(shè)備容量快滿時將不重要的文件遷移到離線設(shè)備上。而離線設(shè)備不能提供在線訪問,用戶如果需要訪問離線設(shè)備上的文件,必須將其先遷移到在線設(shè)備上,這樣不但造成訪問不命中開銷很大,也造成了遷移數(shù)據(jù)量過大。因此,傳統(tǒng)的分級存儲系統(tǒng)主要應(yīng)用在訪問不是特別頻繁的歸檔/備份環(huán)境中。另外,傳統(tǒng)的分級存儲系統(tǒng)沒有考慮到設(shè)備的性能差異,性能差異大的設(shè)備和性能差異小的設(shè)備采用相同的遷移觸發(fā)條件,不利于系統(tǒng)的可擴展性。
本發(fā)明提出了一種新的海量數(shù)據(jù)分級存儲方法,分級存儲系統(tǒng)由均可提供在線訪問的快速設(shè)備和慢速設(shè)備構(gòu)成,將數(shù)據(jù)按照訪問情況進行分級,同時在遷移決策過程中考慮設(shè)備的性能差異,有效解決了上述問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能全面滿足網(wǎng)絡(luò)服務(wù)和科學計算需要的海量數(shù)據(jù)分級存儲方法,實現(xiàn)多級存儲設(shè)備中文件的統(tǒng)一管理,能夠兼顧較高的訪問性能和較低的總擁有成本。本發(fā)明的重點在于元數(shù)據(jù)服務(wù)器中遷移決策模塊和數(shù)據(jù)服務(wù)器中遷移執(zhí)行模塊的設(shè)計,數(shù)據(jù)分級方法和數(shù)據(jù)服務(wù)器在遷移過程的一致性保證。
本發(fā)明的特征在于它是在由以下設(shè)備構(gòu)成的并行文件系統(tǒng)中實現(xiàn)的,該系統(tǒng)含有各種類型的前端主機,即應(yīng)用服務(wù)器,該前端主機的并行文件系統(tǒng)客戶代理模塊實現(xiàn)虛擬文件系統(tǒng)層(VFS)的各種文件操作以及從下述元數(shù)據(jù)服務(wù)器讀取相應(yīng)文件的元數(shù)據(jù);元數(shù)據(jù)服務(wù)器,有一臺或多臺,按照TCP/IP協(xié)議經(jīng)以太網(wǎng)與上述各前端主機相連,把位于不同數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件組織成統(tǒng)一的并行文件系統(tǒng)視圖,為上述各前端主機提供元數(shù)據(jù)操作服務(wù),同時執(zhí)行文件掃描,數(shù)據(jù)分級,遷移決策和遷移速率控制等操作,實現(xiàn)對海量數(shù)據(jù)分級存儲系統(tǒng)的文件管理;數(shù)據(jù)服務(wù)器,有多臺,按照性能高低劃分為快速數(shù)據(jù)服務(wù)器和慢速數(shù)據(jù)服務(wù)器,保存著每個文件分片后的數(shù)據(jù)文件,可以為前端主機提供文件I/O操作,同時執(zhí)行元數(shù)據(jù)服務(wù)器發(fā)來的文件遷移命令;1.海量數(shù)據(jù)分級存儲方法,其特征在于,依次含有以下步驟步驟(1).初始化在作為應(yīng)用服務(wù)器的各種類型的前端主機上部署并行文件系統(tǒng)客戶代理模塊,以實現(xiàn)虛擬文件系統(tǒng)層VFS的各種文件操作,并從下述元數(shù)據(jù)服務(wù)器中存取各文件的元數(shù)據(jù),該模塊由下述兩部分子模塊構(gòu)成系統(tǒng)接口子模塊及VFS子模塊,其中系統(tǒng)接口子模塊,在用戶空間實現(xiàn),為文件訪問提供系統(tǒng)接口通過網(wǎng)絡(luò)通信層讀寫元數(shù)據(jù)服務(wù)器中的文件元數(shù)據(jù);通過網(wǎng)絡(luò)通信層從數(shù)據(jù)服務(wù)器讀寫文件數(shù)據(jù);該系統(tǒng)接口子模塊又提供文件遷移的客戶端接口,支持用戶手動對文件遷移;VFS子模塊,在內(nèi)核空間實現(xiàn),通過系統(tǒng)接口子模塊中的系統(tǒng)接口,實現(xiàn)文件的VFS層操作,供用戶通過VFS層對由所述應(yīng)用服務(wù)器、元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器構(gòu)成的并行文件系統(tǒng)中的文件進行訪問;該并行文件系統(tǒng)客戶代理模塊按如下步驟運行VFS子模塊接收由應(yīng)用層發(fā)來的VFS訪問請求,并把該請求轉(zhuǎn)化為對系統(tǒng)接口子模塊的各系統(tǒng)接口的請求;在元數(shù)據(jù)服務(wù)器上部署一組運行在Linux系統(tǒng)上的用戶空間程序,其中包括元數(shù)據(jù)系統(tǒng)模塊、元數(shù)據(jù)管理模塊以及文件遷移決策模塊,其中元數(shù)據(jù)系統(tǒng)模塊,通過網(wǎng)絡(luò)通信層接收到并行文件系統(tǒng)客戶代理模塊發(fā)來的元數(shù)據(jù)訪問指令后,提供以下執(zhí)行元數(shù)據(jù)操作的接口文件創(chuàng)建、文件刪除、目錄創(chuàng)建、目錄刪除以及文件查找,供通過網(wǎng)絡(luò)通信層與并行文件系統(tǒng)客戶代理模塊通信用;元數(shù)據(jù)管理模塊,為由多個數(shù)據(jù)服務(wù)器并行組成的文件自管理系統(tǒng)提供管理元數(shù)據(jù)的接口,執(zhí)行包括目錄項管理、系統(tǒng)負載獲取、所述文件系統(tǒng)統(tǒng)計信息顯示在內(nèi)的操作;文件遷移決策模塊,由增量掃描器、文件訪問表管理器和遷移調(diào)度控制器組成,按以下步驟執(zhí)行文件的遷移增量掃描器定期向所有數(shù)據(jù)服務(wù)器發(fā)出掃描請求,每個數(shù)據(jù)服務(wù)器在收到該請求后,把本掃描周期內(nèi)所有被訪問文件的訪問情況發(fā)送給該增量掃描器,這些訪問情況包括文件的inode節(jié)點值、文件所對應(yīng)的數(shù)據(jù)文件的inode節(jié)點值、數(shù)據(jù)文件的大小、所述文件在本掃描周期內(nèi)的被訪問次數(shù)以及所述文件在本掃描周期內(nèi)的被訪問字節(jié)數(shù);增量掃描器在收到這些數(shù)據(jù)后,將其發(fā)送到并通知文件訪問表管理器對自己維護的文件訪問表進行更新,該文件訪問表包括文件的inode節(jié)點值、文件大小、文件從創(chuàng)建開始到當前的生存時間、文件的平均重復(fù)訪問間隔、文件的總訪問次數(shù)、文件的總訪問字節(jié)數(shù)以及文件從上次訪問到現(xiàn)在的未訪問時間;文件訪問表管理器計算每個文件當前訪問和上次訪問之間的時間間隔current_rereference_time,并利用該值來更新平均訪問時間間隔rereference_time,更新后的平均訪問時間間隔為rereference_time1=α*current_rereference_time+(1-α)*rereference_time0,rereference_time0>0current_rereference_time,rereference_time0=0,]]>其中,rereference_time0為更新前的平均訪問時間間隔,rereference_time1為更新后的平均訪問時間間隔;α為遺忘因子,在
之間取值;文件訪問表管理器按下式計算文件升級的預(yù)期收益時間benefit_time;benefit_time=rereference_time*filesize*access_numaccess_bytes*ThrufastThruslow-Thrufast,]]>其中Thrufast,快速設(shè)備的吞吐率,快速設(shè)備包括固態(tài)磁盤SSD,光纖陣列在內(nèi)的設(shè)備;Thruslow,慢速設(shè)備的吞吐率,慢速設(shè)備包括IDE陣列,SATA陣列在內(nèi)的設(shè)備;access_num,文件的被訪問總次數(shù);access_bytes,文件的被訪問總字節(jié)數(shù);filesize,文件大?。籸ereference_time,文件平均訪問時間間隔;若文件的升級預(yù)期收益大于設(shè)定的升級閾值時,文件訪問表管理器把該文件放入升級候選隊列中,由升級線程處理;若文件從上次訪問到現(xiàn)在的未訪問時間大于設(shè)定的降級閾值時,文件訪問表管理器把該文件放入降級候選隊列中,由降級線程處理;
遷移調(diào)度控制器由升級線程和降級線程兩部分組成,負責遷移指令的生成和速率控制;對于升級候選文件,遷移調(diào)度控制器讀取它的元數(shù)據(jù),從其中查找該升級候選文件對應(yīng)的數(shù)據(jù)文件所在的已經(jīng)包含在數(shù)據(jù)服務(wù)器中的源數(shù)據(jù)服務(wù)器,然后向該源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊發(fā)送升級指令;對于降級候選文件,遷移調(diào)度控制器讀取它的元數(shù)據(jù),從其中查找該降級候選文件對應(yīng)的數(shù)據(jù)文件所在的已經(jīng)包含在數(shù)據(jù)服務(wù)器中的源數(shù)據(jù)服務(wù)器,在系統(tǒng)負載空閑時才向源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊發(fā)送降級指令;在數(shù)據(jù)服務(wù)器上部署源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器后,分別在這兩個數(shù)據(jù)服務(wù)器上部署I/O記錄模塊和遷移執(zhí)行模塊;源數(shù)據(jù)服務(wù)器中的I/O記錄模塊與固態(tài)磁盤SSD互連,而該固態(tài)磁盤SSD受遷移執(zhí)行模塊控制;目標數(shù)據(jù)服務(wù)器中部署的I/O記錄模塊與電子集成驅(qū)動器IDE陣列互連,而該IDE陣列受該目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊控制;并行文件系統(tǒng)客戶代理模塊與所述源數(shù)據(jù)服務(wù)器以及目標數(shù)據(jù)服務(wù)器中相應(yīng)的I/O記錄模塊相連,以執(zhí)行I/O操作;當源數(shù)據(jù)服務(wù)器中的I/O記錄模塊收到并行文件系統(tǒng)客戶代理模塊發(fā)出的I/O操作指令以及后繼的由元數(shù)據(jù)服務(wù)器中的遷移調(diào)度控制器發(fā)給遷移執(zhí)行模塊的遷移指令后,得到要遷移文件的inode節(jié)點值、目標數(shù)據(jù)服務(wù)器的通信地址以及目標數(shù)據(jù)文件的inode節(jié)點值,然后,該源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊與目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊建立連接并把源數(shù)據(jù)文件的數(shù)據(jù)寫入目標數(shù)據(jù)文件,發(fā)往目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊,再送往IDE陣列;步驟(2).由步驟(1)所述的并行文件系統(tǒng)依次按以下步驟執(zhí)行海量數(shù)據(jù)分級存儲方法步驟(2.1).初始化元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器步驟(2.1.1).把配置文件分別讀入元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器;步驟(2.1.2).元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器分別從該配置文件中讀取各自的通信地址和服務(wù)端口,同時解析出inode節(jié)點分配表,根據(jù)文件的inode節(jié)點值將其映射到對應(yīng)的數(shù)據(jù)服務(wù)器并存儲;同時元數(shù)據(jù)服務(wù)器啟動文件遷移模塊中的升級線程、降級線程以及增量掃描器中的文件掃描線程;步驟(2.2).初始化并行文件系統(tǒng)客戶代理模塊步驟(2.2.1).把配置文件讀入該客戶代理模塊,步驟(2.2.2).獲取元數(shù)據(jù)服務(wù)器的通信地址和服務(wù)端口,步驟(2.2.3).初始化該代理模塊的cache子系統(tǒng),步驟(2.2.4).虛擬出子設(shè)備,供VFS子模塊存入用戶的VFS訪問命令,并在處理完后將返回值寫入,供VFS子模塊調(diào)用;步驟(2.3).按以下步驟執(zhí)行文件遷移
步驟(2.3.1).元數(shù)據(jù)服務(wù)器從本地讀取該文件的元數(shù)據(jù),獲取文件的inode節(jié)點值和所在的數(shù)據(jù)服務(wù)器編號;步驟(2.3.2).元數(shù)據(jù)服務(wù)器中的遷移調(diào)度控制器向文件要遷移的目標數(shù)據(jù)服務(wù)器發(fā)出創(chuàng)建數(shù)據(jù)文件的指令,待創(chuàng)建完畢后,再由該目標數(shù)據(jù)服務(wù)器向所述的遷移調(diào)度控制器返回新創(chuàng)建好的數(shù)據(jù)文件的inode節(jié)點值;步驟(2.3.3).元數(shù)據(jù)服務(wù)器中的遷移調(diào)度控制器向文件所在的源數(shù)據(jù)服務(wù)器發(fā)送遷移指令,包含目標數(shù)據(jù)服務(wù)器的通信地址、該文件所在源數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件的inode節(jié)點值、該文件所在目標數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件的inode節(jié)點值;步驟(2.3.4).源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊收到遷移指令后,根據(jù)其中的通信地址與目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊建立連接,之后通過所述的SSD把本地的數(shù)據(jù)文件的內(nèi)容全部寫入目標數(shù)據(jù)服務(wù)器對應(yīng)的數(shù)據(jù)文件中去,執(zhí)行完畢后,遷移執(zhí)行模塊把本地數(shù)據(jù)文件從源數(shù)據(jù)服務(wù)器中刪除,并向元數(shù)據(jù)服務(wù)器的遷移調(diào)度控制器返回遷移成功的指令;步驟(2.3.5).遷移調(diào)度控制器讀取文件的元數(shù)據(jù)信息,把它所在的位置改成目標數(shù)據(jù)服務(wù)器,同時把該文件所對應(yīng)的數(shù)據(jù)文件的inode節(jié)點值改成目標數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件的inode節(jié)點值。
2.根據(jù)權(quán)利要求1所述的海量數(shù)據(jù)分級存儲方法,其特征在于所述源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器的遷移執(zhí)行模塊通過讀寫鎖來解決在遷移時由于用戶對被遷移文件執(zhí)行寫操作產(chǎn)生的源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器中所述數(shù)據(jù)文件的一致性問題。
本發(fā)明的優(yōu)點如下(1)元數(shù)據(jù)服務(wù)器對數(shù)據(jù)服務(wù)器上的文件執(zhí)行周期性的增量掃描,僅讀取近期被訪問過的文件信息,對近期訪問過的文件重新進行遷移價值評價即可,無需掃描整個文件系統(tǒng)。
(2)將升級操作和降級操作區(qū)分開來,設(shè)計了雙候選隊列的遷移體系結(jié)構(gòu)。將升級候選文件放入升級隊列中,因為升級任務(wù)比較緊迫,升級線程采用“盡力而為”的方法進行升級遷移;將降級候選文件放入降低隊列中,對降級任務(wù)進行速率控制,在系統(tǒng)空閑時才對其進行遷移,避免降級對前端應(yīng)用造成影響。
(3)所有的遷移決策都由元數(shù)據(jù)服務(wù)器給出,數(shù)據(jù)服務(wù)器負責具體的遷移工作,實現(xiàn)了單點管理,降低了管理復(fù)雜性,提高了系統(tǒng)的可控性和安全性。
(4)使用對源數(shù)據(jù)文件加鎖的方法解決了遷移過程中有寫操作時源數(shù)據(jù)文件和目標數(shù)據(jù)文件的一致性問題。
本發(fā)明在清華大學計算機系高性能計算技術(shù)研究所進行了測試。結(jié)果表明,海量數(shù)據(jù)分級存儲方法可以根據(jù)負載情況完成自動的數(shù)據(jù)遷移過程,有效提高了快速設(shè)備I/O訪問的命中率,并且遷移文件較少,遷移進程對前端應(yīng)用造成的影響較小。
對海量數(shù)據(jù)分級存儲方法的測試從字節(jié)命中率和遷移文件數(shù)等兩方面進行衡量。測試環(huán)境由一臺元數(shù)據(jù)服務(wù)器、一臺代表慢速設(shè)備的數(shù)據(jù)服務(wù)器,一臺代表快速設(shè)備的數(shù)據(jù)服務(wù)器,一臺前端主機,1臺千兆以太網(wǎng)交換機組成。元數(shù)據(jù)服務(wù)器和兩臺數(shù)據(jù)服務(wù)器均采用64位Intel Itanium 2 1GHZ雙CPU服務(wù)器,內(nèi)存2GB,操作系統(tǒng)為Linux,內(nèi)核版本為2.6.9。我們采用清華大學計算機系高性能計算技術(shù)研究所開發(fā)的文件trace播放器作為測試工具,使用美國加州大學大學伯克利分校Roselli等人在1997年采集的文件traceResearch作為測試數(shù)據(jù),在上述實驗環(huán)境中模擬運行了15天,測試了文件訪問在快速設(shè)備上的字節(jié)命中率和升級遷移的文件數(shù)。測試結(jié)果見圖8、圖9。從測試結(jié)果中可以看出,文件訪問命中在快速設(shè)備上的命中率接近90%,遷移文件字節(jié)數(shù)同總文件字節(jié)數(shù)相比較小,同時由于降級的作用,快速設(shè)備上的總文件大小也維持在較低范圍。
圖1.數(shù)據(jù)文件分片示意圖。
圖2.海量數(shù)據(jù)分級存儲方法硬件結(jié)構(gòu)圖。
圖3.海量數(shù)據(jù)分級存儲方法軟件結(jié)構(gòu)圖。
圖4.元數(shù)據(jù)服務(wù)器文件遷移決策模塊示意圖。
圖5.海量數(shù)據(jù)分級存儲方法整體各模塊結(jié)構(gòu)關(guān)系圖。
圖6.海量數(shù)據(jù)分級存儲方法在線數(shù)據(jù)遷移示意圖。
圖7.海量數(shù)據(jù)分級存儲方法整體流程圖。
圖8.文件訪問命中在快速設(shè)備上的字節(jié)命中率。
圖9.升級遷移字節(jié)數(shù),所有設(shè)備總文件字節(jié)數(shù)和快速設(shè)備上總文件字節(jié)數(shù)的比較 所有設(shè)備總文件大小 快速設(shè)備上的總文件大小 升級遷移的總文件大小具體實施方式
海量數(shù)據(jù)分級存儲方法主要由元數(shù)據(jù)服務(wù)器、數(shù)據(jù)服務(wù)器和前端主機上的并行文件系統(tǒng)客戶代理軟件組成。該方法是基于并行文件系統(tǒng)實施的。在并行文件系統(tǒng)中,為提高訪問吞吐率,每個文件的數(shù)據(jù)都按照分片方式保存在各數(shù)據(jù)服務(wù)器上,文件在數(shù)據(jù)服務(wù)器上的分片稱為數(shù)據(jù)文件。文件分片的方式如圖1所示。元數(shù)據(jù)服務(wù)器主要負責將不同數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件構(gòu)建成一個統(tǒng)一的文件視圖,并通過周期性掃描數(shù)據(jù)服務(wù)器來更新文件訪問表,以負責文件遷移的決策和管理。應(yīng)用服務(wù)器上的并行文件系統(tǒng)客戶代理模塊主要功能包括根據(jù)文件名從元數(shù)據(jù)服務(wù)器查找文件inode值,根據(jù)文件inode值從元數(shù)據(jù)服務(wù)器獲取元數(shù)據(jù),根據(jù)文件inode值查找映射表獲取保存該文件對應(yīng)數(shù)據(jù)文件的數(shù)據(jù)服務(wù)器的地址。為了消除一臺元數(shù)據(jù)服務(wù)器帶來的單點故障,可以由兩臺或多臺元數(shù)據(jù)服務(wù)器形成集群。海量數(shù)據(jù)分級存儲方法硬件結(jié)構(gòu)如圖2所示。
前端主機,元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器通過以太網(wǎng)交換機連接在一起,按照數(shù)據(jù)服務(wù)器上掛載設(shè)備的性能不同,將其劃分為快速和慢速數(shù)據(jù)服務(wù)器。被遷移文件的遷移起始端稱為源數(shù)據(jù)服務(wù)器,遷移目的端稱為目標數(shù)據(jù)服務(wù)器。
元數(shù)據(jù)服務(wù)器上的元數(shù)據(jù)系統(tǒng)模塊和元數(shù)據(jù)管理模塊完成對元數(shù)據(jù)的操作,文件遷移決策模塊完成增量掃描,文件訪問情況更新,遷移決策并負責生成遷移指令,發(fā)送給源數(shù)據(jù)服務(wù)器。海量數(shù)據(jù)分級存儲方法軟件結(jié)構(gòu)如圖3所示。
并行文件系統(tǒng)客戶代理模塊分為應(yīng)用層、系統(tǒng)接口層、任務(wù)管理層和網(wǎng)絡(luò)通信層。應(yīng)用層發(fā)來的VFS訪問請求由并行文件系統(tǒng)客戶代理模塊中的VFS子模塊來處理,將VFS訪問請求轉(zhuǎn)化成對并行文件系統(tǒng)的系統(tǒng)接口層訪問請求。系統(tǒng)接口層提供一組可以直接訪問并行文件系統(tǒng)的接口。任務(wù)管理層在元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器的軟件中也都存在,它負責把系統(tǒng)接口層和操作狀態(tài)機發(fā)來的操作請求按照不同的操作類型(如網(wǎng)絡(luò)訪問,本地數(shù)據(jù)訪問,遠程數(shù)據(jù)訪問等)放入不同的調(diào)度隊列中進行調(diào)度處理。網(wǎng)絡(luò)通信層使用TCP/IP協(xié)議,支持并行文件系統(tǒng)客戶代理模塊、元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器之間進行通信。元數(shù)據(jù)服務(wù)器由于管理遷移過程包含文件遷移決策模塊,源和目標數(shù)據(jù)服務(wù)器為執(zhí)行元數(shù)據(jù)服務(wù)器發(fā)來的遷移指令包含遷移執(zhí)行模塊。元數(shù)據(jù)服務(wù)器的元數(shù)據(jù)系統(tǒng)模塊和元數(shù)據(jù)管理模塊與數(shù)據(jù)服務(wù)器的數(shù)據(jù)服務(wù)模塊都維護一張操作映射表,映射表中每個表項的內(nèi)容包括操作碼,字符串類型的操作名稱以及執(zhí)行該操作請求的操作狀態(tài)機入口地址。執(zhí)行元數(shù)據(jù)或數(shù)據(jù)操作時,根據(jù)操作請求的操作碼在操作映射表中找到相應(yīng)表項,然后進入該操作請求的操作狀態(tài)機執(zhí)行操作。操作狀態(tài)機是執(zhí)行一次操作的若干組操作狀態(tài)的集合,每個操作狀態(tài)包括操作名稱,該狀態(tài)要執(zhí)行的操作函數(shù)以及下一個操作狀態(tài)的入口地址。根據(jù)操作函數(shù)返回值的不同,每個操作狀態(tài)的下一個狀態(tài),以及何時進入下一個狀態(tài)都是不同的。例如,如果一個操作狀態(tài)的執(zhí)行函數(shù)需要通過網(wǎng)絡(luò)通信層傳輸若干數(shù)據(jù),而傳輸過程被阻塞不能立即完成,那么執(zhí)行函數(shù)就返回“該狀態(tài)需要等待”的返回值,由狀態(tài)機調(diào)度器將該狀態(tài)放入等待隊列進行等待,等其需要的操作執(zhí)行完之后再執(zhí)行。圖3中,在遷移操作完成之前,并行文件系統(tǒng)客戶代理模塊通過訪問源數(shù)據(jù)服務(wù)器執(zhí)行文件I/O操作,遷移操作完成之后,元數(shù)據(jù)服務(wù)器將被遷移文件元數(shù)據(jù)中文件存放位置從源數(shù)據(jù)服務(wù)器修改為目標數(shù)據(jù)服務(wù)器,因此并行文件系統(tǒng)客戶代理模塊訪問目標數(shù)據(jù)服務(wù)器執(zhí)行文件I/O操作。
元數(shù)據(jù)服務(wù)器的文件遷移決策模塊是海量數(shù)據(jù)分級存儲方法的核心模塊,由一組用戶空間程序構(gòu)成,包括增量掃描器,文件訪問表管理器和遷移調(diào)度控制器。各模塊之間的關(guān)系如圖4所示。
增量掃描器定期向所有數(shù)據(jù)服務(wù)器發(fā)出掃描請求,數(shù)據(jù)服務(wù)器收到該請求后將本周期內(nèi)所有被訪問文件的訪問情況發(fā)送給元數(shù)據(jù)服務(wù)器。文件訪問情況的消息內(nèi)容如下Struct scan_info{uint64_t meta_handle/*文件的inode值*/uint64_t data_handle/*文件對應(yīng)數(shù)據(jù)文件的inode值*/uint64_t dspace_size/*數(shù)據(jù)文件的大小*/uint64_t access_size/*該文件在本掃描周期內(nèi)的訪問字節(jié)數(shù)*/}增量掃描器收到這些數(shù)據(jù)之后,通知文件訪問表管理器對文件訪問表中的相關(guān)文件進行更新。文件訪問表中一個表項的格式如下Typedef struct{uint64_t meta_handle /*文件的inode值*/uint64_t file_size /*文件大小*/umt32_t lifetime /*文件從創(chuàng)建開始到當前的生存時間*/uint32_t rereference_time/*文件的平均重復(fù)訪問間隔*/uint32_t access_num /*文件的總訪問次數(shù)*/uint64_t access_bytes /*文件的總訪問字節(jié)數(shù)*/uint32_t unaccess_time /*文件從上次訪問到現(xiàn)在的未訪問時間*/}file_migration每個訪問表項占用的空間是40字節(jié),對于百萬文件規(guī)模的文件系統(tǒng)來說,占用的內(nèi)存空間為40M。
文件訪問表管理器計算每個文件當前訪問和上次訪問之間的時間間隔current_rereference_time,并利用該值來更新平均訪問時間間隔rereference_time。
rereference_time的計算公式如下
rereference_time1=α*current_rereference_time+(1-α)*rereference_time0,rereference_time0>0current_rereference_time,rereference_time0=0,]]>其中,rereference_time0為更新前的平均訪問時間間隔,rereference_time1為更新后的平均訪問時間間隔;rereference_time的計算公式中使用遺忘因子α把當前的訪問時間間隔累加到歷史訪問時間間隔中去,是根據(jù)文件的歷史訪問時間間隔和當前訪問時間間隔對文件的下次訪問時間間隔進行的預(yù)測值。遺忘因子α取值范圍為
。
海量分級存儲方法按照性能高低將設(shè)備分為快速設(shè)備和慢速設(shè)備??焖僭O(shè)備包括固態(tài)磁盤SSD,光纖陣列等設(shè)備,其吞吐率較高但是價格相對昂貴;慢速設(shè)備包括IDE陣列,SATA陣列等設(shè)備,其吞吐率較低但是價格相對便宜。設(shè)Thrufast和Thruslow分別是快速設(shè)備和慢速設(shè)備的吞吐率,access_num表示文件的被訪問總次數(shù),access_bytes表示文件的被訪問總字節(jié)數(shù),filesize表示文件大小。對文件升級的預(yù)期收益時間計算公式如下benefit_time=reference_time*filesize*access_numaccess_bytes*ThrufastThruslow-Thrufast,]]>如果文件的升級預(yù)期收益時間大于給定的升級閾值(實驗中使用5小時),文件訪問表管理器將該文件放入升級候選隊列中,由升級線程進行處理。
如果文件的未訪問時間大于給定的降級閾值(實驗中使用10小時),文件訪問表管理器將文件放入降級候選隊列中,由降級線程進行處理。
遷移調(diào)度控制器由升級線程和降級線程兩部分組成,負責遷移指令的生成和速率控制。對于升級候選文件,遷移調(diào)度控制器讀取它的元數(shù)據(jù),從元數(shù)據(jù)中查找該文件對應(yīng)數(shù)據(jù)文件所在的源數(shù)據(jù)服務(wù)器,然后向該源數(shù)據(jù)服務(wù)器發(fā)出升級指令。降級候選文件遷移指令的生成同升級候選文件相同,但是由于降級任務(wù)的不緊迫性,需要加入速率控制,當系統(tǒng)負載空閑時才把降級指令發(fā)出。
源和目標數(shù)據(jù)服務(wù)器的遷移執(zhí)行模塊負責執(zhí)行具體的遷移工作。源數(shù)據(jù)服務(wù)器解析元數(shù)據(jù)服務(wù)器發(fā)來的遷移指令,得到要遷移數(shù)據(jù)文件的inode節(jié)點值,目標數(shù)據(jù)服務(wù)器的通信地址,以及目標數(shù)據(jù)文件的inode節(jié)點值。之后源數(shù)據(jù)服務(wù)器同目標數(shù)據(jù)服務(wù)器建立連接,將源數(shù)據(jù)文件的數(shù)據(jù)寫入目標數(shù)據(jù)文件。
由于海量數(shù)據(jù)分級存儲方法是支持不間斷在線訪問的,如果在文件遷移過程中,用戶對該文件執(zhí)行了寫操作,那么在源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器的兩份數(shù)據(jù)文件之間就會出現(xiàn)一致性問題。為解決該問題,源和目標數(shù)據(jù)服務(wù)器的遷移執(zhí)行模塊通過讀寫鎖實現(xiàn)數(shù)據(jù)一致性的保證。讀寫鎖有三種狀態(tài)讀模式下加鎖狀態(tài)即讀者鎖,寫模式下加鎖狀態(tài)即寫者鎖,不加鎖狀態(tài)。當讀寫鎖是寫者鎖時,在該鎖被解鎖之前,所有試圖對這個鎖加鎖的線程都會被阻塞。當讀寫鎖是讀者鎖時,所有試圖以讀模式對它進行加鎖的線程都可以得到訪問權(quán)。在遷移進程開始之前,由源數(shù)據(jù)服務(wù)器對遷移文件申請寫者鎖,由于文件是以塊為單位執(zhí)行遷移的,當有寫請求發(fā)生時,有以下幾種情況(1)寫請求作用于已經(jīng)遷移過的塊時,可以不申請讀者鎖,直接對目標數(shù)據(jù)文件進行寫操作;(2)寫請求作用于正在遷移的塊時,需要申請讀者鎖,之后對目標數(shù)據(jù)文件進行寫操作;(3)寫請求作用于還未遷移的塊時,申請讀者鎖,之后對源數(shù)據(jù)文件進行寫操作;(4)如果寫請求改變了文件的大小,則需要對目標數(shù)據(jù)文件進行同樣的寫操作。
一致性策略可以保證遷移過程中數(shù)據(jù)的一致性,同時由于遷移粒度以劃分塊為單位,減小了對前臺IO訪問的影響。
源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器還包含I/O記錄模塊,每次對文件的I/O操作,都由該模塊進行記錄,在元數(shù)據(jù)服務(wù)器進行增量掃描時將記錄的內(nèi)容發(fā)送給元數(shù)據(jù)服務(wù)器。
所述的海量數(shù)據(jù)分級存儲方法依次含有以下步驟步驟1構(gòu)造軟件模塊并行文件系統(tǒng)客戶代理模塊,由兩部分子模塊構(gòu)成系統(tǒng)接口子模塊和VFS子模塊。系統(tǒng)接口子模塊在用戶空間實現(xiàn),負責提供一組文件訪問的系統(tǒng)接口通過網(wǎng)絡(luò)通信層同元數(shù)據(jù)服務(wù)器通信以存取文件元數(shù)據(jù),通過網(wǎng)絡(luò)通信層同數(shù)據(jù)服務(wù)器通信以存取文件數(shù)據(jù),同時系統(tǒng)接口子模塊提供文件遷移的客戶端接口,支持用戶手動對文件進行遷移,提高遷移的靈活性;VFS子模塊在內(nèi)核空間實現(xiàn),通過調(diào)用系統(tǒng)接口子模塊中的系統(tǒng)接口,實現(xiàn)文件的VFS層操作,以支持用戶通過VFS層對并行文件系統(tǒng)中的文件進行訪問。
元數(shù)據(jù)服務(wù)器的軟件,運行在Linux系統(tǒng)上,由一組用戶空間程序組成,包括以下模塊元數(shù)據(jù)系統(tǒng)模塊,接受到并行文件系統(tǒng)客戶代理模塊的元數(shù)據(jù)訪問指令后,提供執(zhí)行元數(shù)據(jù)操作的接口,包括文件創(chuàng)建,文件刪除,目錄創(chuàng)建,目錄刪除、文件查找等操作,該接口通過網(wǎng)路通信模塊與并行文件系統(tǒng)客戶代理模塊通信,通過存儲服務(wù)模塊與底層文件系統(tǒng)和數(shù)據(jù)庫通信。
元數(shù)據(jù)管理模塊,提供管理元數(shù)據(jù)的接口,把多個數(shù)據(jù)服務(wù)器并行組織成一個統(tǒng)一的文件自管理系統(tǒng),包括管理目錄項,獲取系統(tǒng)負載情況,顯示文件系統(tǒng)統(tǒng)計信息等操作。
文件遷移決策模塊,根據(jù)文件系統(tǒng)負載和設(shè)備分級情況,執(zhí)行對文件遷移的決策任務(wù),該模塊維護一個文件訪問信息表,保存每個文件的訪問次數(shù),文件大小,當前位置等信息。該文件訪問信息表由文件遷移決策模塊中的文件掃描器定期進行更新,每次更新后,文件遷移模塊根據(jù)文件的歷史訪問信息和當前訪問信息計算文件的訪問熱度并判斷文件的遷移價值,當文件遷移價值達到規(guī)定的閾值時,由該模塊將文件放入升級或者降級隊列中,作為升級或降級的候選文件。根據(jù)遷移目標的不同,文件遷移決策模塊把遷移隊列分為兩類升級隊列和降級隊列,分別保存需要升級和降級的候選文件,并由升級線程和降級線程處理這兩個隊列中的候選文件。由于升級任務(wù)的緊迫性,每當升級隊列中有未升級的升級候選文件,升級線程就對其進行升級操作;由于降級任務(wù)的緊迫性相對較小,降級線程加入了速率控制技術(shù),當系統(tǒng)負載較小時才對降級候選文件進行處理,系統(tǒng)負載較重時不進行降級操作,避免降級任務(wù)同前端負載爭用帶寬資源。文件遷移決策模塊中包含文件掃描器。每隔一個掃描周期,由文件掃描器中的文件掃描線程向數(shù)據(jù)服務(wù)器發(fā)出掃描指令,獲取文件訪問的信息,包括文件的inode數(shù)值,文件在本周期內(nèi)的訪問次數(shù)和文件大小等信息,并利用該信息更新文件訪問信息表。更新后,通知文件遷移決策模塊判斷是否有新的文件需要遷移。
數(shù)據(jù)服務(wù)器的軟件運行在Linux用戶空間,負責管理文件分片后的數(shù)據(jù)文件,它由兩部分模塊組成數(shù)據(jù)服務(wù)模塊,向并行文件系統(tǒng)客戶代理模塊提供文件讀寫等操作接口,同時負責創(chuàng)建或者釋放數(shù)據(jù)文件空間,對數(shù)據(jù)文件進行管理。
遷移執(zhí)行模塊,在收到元數(shù)據(jù)服務(wù)器發(fā)來的遷移指令之后,同目標數(shù)據(jù)服務(wù)器建立連接,同時把要遷移的源數(shù)據(jù)文件中的數(shù)據(jù)寫入目標數(shù)據(jù)服務(wù)器中的目標數(shù)據(jù)文件。
步驟2初始化元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器讀取海量數(shù)據(jù)分級存儲軟件的配置文件,解析出各元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器的通信地址和服務(wù)端口,同時解析出inode節(jié)點分配表,以根據(jù)文件的inode節(jié)點值將其映射到對應(yīng)的數(shù)據(jù)服務(wù)器上。然后在本地文件系統(tǒng)上創(chuàng)建存儲空間,保存元數(shù)據(jù)服務(wù)器或數(shù)據(jù)服務(wù)器生成的各種數(shù)據(jù)。同時,元數(shù)據(jù)服務(wù)器啟動文件遷移決策模塊中的升級線程,降級線程和文件掃描線程,步驟3初始化并行文件系統(tǒng)客戶代理模塊并行文件系統(tǒng)客戶代理模塊讀取海量數(shù)據(jù)分級存儲軟件的配置文件,獲取元數(shù)據(jù)服務(wù)器的通信地址和服務(wù)端口,初始化并行文件系統(tǒng)客戶代理模塊的Cache子系統(tǒng),以保存熱點文件的元數(shù)據(jù)。同時,創(chuàng)建一個監(jiān)控子進程,調(diào)用系統(tǒng)調(diào)用poll監(jiān)控并行文件系統(tǒng)客戶代理模塊虛擬出的一個設(shè)備,每接受到用戶的VFS訪問,VFS子模塊都會向該虛擬設(shè)備中寫入相應(yīng)的VFS命令,由系統(tǒng)子接口模塊處理,處理完后將該操作的返回值寫入虛擬設(shè)備中,由VFS子模塊讀取并將其返回給VFS層的調(diào)用。
步驟4當元數(shù)據(jù)服務(wù)器的文件遷移決策模塊對一個文件進行遷移時,按以下步驟執(zhí)行步驟4.1元數(shù)據(jù)服務(wù)器讀取該文件的元數(shù)據(jù),獲取文件的inode節(jié)點值和文件所在的數(shù)據(jù)服務(wù)器編號;步驟4.2元數(shù)據(jù)服務(wù)器向文件要遷移的目標數(shù)據(jù)服務(wù)器發(fā)出創(chuàng)建數(shù)據(jù)文件的指令,目標數(shù)據(jù)服務(wù)器創(chuàng)建完畢之后,返回給元數(shù)據(jù)服務(wù)器新創(chuàng)建好的數(shù)據(jù)文件的inode節(jié)點值;步驟4.3元數(shù)據(jù)服務(wù)器向文件所在的數(shù)據(jù)服務(wù)器發(fā)出遷移指令,指令內(nèi)容包括目標數(shù)據(jù)服務(wù)器的通信地址,該文件在源數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件inode節(jié)點值,該文件在目標數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件inode節(jié)點值;步驟4.4源數(shù)據(jù)服務(wù)器收到元數(shù)據(jù)服務(wù)器發(fā)來的遷移指令之后,根據(jù)遷移指令中的通信地址與目標數(shù)據(jù)服務(wù)器建立連接,然后將本地的數(shù)據(jù)文件中的內(nèi)容全部寫入目標數(shù)據(jù)服務(wù)器的數(shù)據(jù)文件中去。執(zhí)行完畢之后,將本地的數(shù)據(jù)文件刪除,并向元數(shù)據(jù)服務(wù)器返回遷移成功的消息;步驟4.5元數(shù)據(jù)服務(wù)器修改文件的元數(shù)據(jù)信息,把它所在的位置改成目標數(shù)據(jù)服務(wù)器,同時把該文件對應(yīng)數(shù)據(jù)文件的inode節(jié)點值改成目標數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件的inode節(jié)點值。
海量數(shù)據(jù)分級存儲方法的整體各模塊結(jié)構(gòu)關(guān)系圖如圖5所示。
在線數(shù)據(jù)遷移的過程如圖6所示。海量數(shù)據(jù)分級存儲方法同時支持兩種遷移方式用戶通過并行文件系統(tǒng)客戶代理模塊執(zhí)行手工文件遷移,元數(shù)據(jù)服務(wù)器上的文件遷移決策模塊執(zhí)行自動文件遷移。系統(tǒng)負載變化劇烈時,由于增量掃描的時延,文件遷移決策模塊可能難以有效及時地管理和遷移數(shù)據(jù)。在這種情況下,管理員對海量數(shù)據(jù)分級存儲方法進行人工干預(yù)是非常必要的。手工文件遷移接口為管理員的人工干預(yù)提供了操作界面,它由系統(tǒng)管理員通過并行文件系統(tǒng)客戶代理模塊啟動。在同元數(shù)據(jù)服務(wù)器建立連接后,手工遷移的執(zhí)行步驟同自動遷移的執(zhí)行步驟完全相同。圖6中,手工文件遷移對應(yīng)步驟1~步驟17,自動文件遷移對應(yīng)步驟2~步驟16。
權(quán)利要求
1.海量數(shù)據(jù)分級存儲方法,其特征在于,依次含有以下步驟步驟(1).初始化在作為應(yīng)用服務(wù)器的各種類型的前端主機上部署并行文件系統(tǒng)客戶代理模塊,以實現(xiàn)虛擬文件系統(tǒng)層VFS的各種文件操作,并從下述元數(shù)據(jù)服務(wù)器中存取各文件的元數(shù)據(jù),該模塊由下述兩部分子模塊構(gòu)成系統(tǒng)接口子模塊及VFS子模塊,其中系統(tǒng)接口子模塊,在用戶空間實現(xiàn),為文件訪問提供系統(tǒng)接口通過網(wǎng)絡(luò)通信層讀寫元數(shù)據(jù)服務(wù)器中的文件元數(shù)據(jù);通過網(wǎng)絡(luò)通信層從數(shù)據(jù)服務(wù)器讀寫文件數(shù)據(jù);該系統(tǒng)接口子模塊又提供文件遷移的客戶端接口,支持用戶手動對文件遷移;VFS子模塊,在內(nèi)核空間實現(xiàn),通過系統(tǒng)接口子模塊中的系統(tǒng)接口,實現(xiàn)文件的VFS層操作,供用戶通過VFS層對由所述應(yīng)用服務(wù)器、元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器構(gòu)成的并行文件系統(tǒng)中的文件進行訪問;該并行文件系統(tǒng)客戶代理模塊按如下步驟運行VFS子模塊接收由應(yīng)用層發(fā)來的VFS訪問請求,并把該請求轉(zhuǎn)化為對系統(tǒng)接口子模塊的各系統(tǒng)接口的請求;在元數(shù)據(jù)服務(wù)器上部署一組運行在Linux系統(tǒng)上的用戶空間程序,其中包括元數(shù)據(jù)系統(tǒng)模塊、元數(shù)據(jù)管理模塊以及文件遷移決策模塊,其中元數(shù)據(jù)系統(tǒng)模塊,通過網(wǎng)絡(luò)通信層接收到并行文件系統(tǒng)客戶代理模塊發(fā)來的元數(shù)據(jù)訪問指令后,提供以下執(zhí)行元數(shù)據(jù)操作的接口文件創(chuàng)建、文件刪除、目錄創(chuàng)建、目錄刪除以及文件查找,供通過網(wǎng)絡(luò)通信層與并行文件系統(tǒng)客戶代理模塊通信用;元數(shù)據(jù)管理模塊,為由多個數(shù)據(jù)服務(wù)器并行組成的文件自管理系統(tǒng)提供管理元數(shù)據(jù)的接口,執(zhí)行包括目錄項管理、系統(tǒng)負載獲取、所述文件系統(tǒng)統(tǒng)計信息顯示在內(nèi)的操作;文件遷移決策模塊,由增量掃描器、文件訪問表管理器和遷移調(diào)度控制器組成,按以下步驟執(zhí)行文件的遷移增量掃描器定期向所有數(shù)據(jù)服務(wù)器發(fā)出掃描請求,每個數(shù)據(jù)服務(wù)器在收到該請求后,把本掃描周期內(nèi)所有被訪問文件的訪問情況發(fā)送給該增量掃描器,這些訪問情況包括文件的inode節(jié)點值、文件所對應(yīng)的數(shù)據(jù)文件的inode節(jié)點值、數(shù)據(jù)文件的大小、所述文件在本掃描周期內(nèi)的被訪問次數(shù)以及所述文件在本掃描周期內(nèi)的被訪問字節(jié)數(shù);增量掃描器在收到這些數(shù)據(jù)后,將其發(fā)送到并通知文件訪問表管理器對自己維護的文件訪問表進行更新,該文件訪問表包括文件的inode節(jié)點值、文件大小、文件從創(chuàng)建開始到當前的生存時間、文件的平均重復(fù)訪問間隔、文件的總訪問次數(shù)、文件的總訪問字節(jié)數(shù)以及文件從上次訪問到現(xiàn)在的未訪問時間;文件訪問表管理器計算每個文件當前訪問和上次訪問之間的時間間隔current_rereference_time,并利用該值來更新平均訪問時間間隔rereference_time,更新后的平均訪問時間間隔為rereference_time1=α*current_rereference_time+(1-α)*rereference_time0,rereference_time0>0current_rereference_time,rereference_time0=0,]]>其中,rereference_time0為更新前的平均訪問時間間隔,rereference_time1為更新后的平均訪問時間間隔;α為遺忘因子,在
之間取值;文件訪問表管理器按下式計算文件升級的預(yù)期收益時間benefit_time;benefit_time=rereference_time*filesze*access_numaccess_bytes*ThrufastThruslow-Thurfast,]]>其中Thrufast,快速設(shè)備的吞吐率,快速設(shè)備包括固態(tài)磁SSD,光纖陣列在內(nèi)的設(shè)備;Thruslow,慢速設(shè)備的吞吐率,慢速設(shè)備包括IDE陣列,SATA陣列在內(nèi)的設(shè)備;access_num,文件的被訪問總次數(shù);access_bytes,文件的被訪問總字節(jié)數(shù);filesize,文件大小;rereference_time,文件平均訪問時間間隔;若文件的升級預(yù)期收益大于設(shè)定的升級閾值時,文件訪問表管理器把該文件放入升級候選隊列中,由升級線程處理;若文件從上次訪問到現(xiàn)在的未訪問時間大于設(shè)定的降級閾值時,文件訪問表管理器把該文件放入降級候選隊列中,由降級線程處理;遷移調(diào)度控制器由升級線程和降級線程兩部分組成,負責遷移指令的生成和速率控制;對于升級候選文件,遷移調(diào)度控制器讀取它的元數(shù)據(jù),從其中查找該升級候選文件對應(yīng)的數(shù)據(jù)文件所在的已經(jīng)包含在數(shù)據(jù)服務(wù)器中的源數(shù)據(jù)服務(wù)器,然后向該源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊發(fā)送升級指令;對于降級候選文件,遷移調(diào)度控制器讀取它的元數(shù)據(jù),從其中查找該降級候選文件對應(yīng)的數(shù)據(jù)文件所在的已經(jīng)包含在數(shù)據(jù)服務(wù)器中的源數(shù)據(jù)服務(wù)器,在系統(tǒng)負載空閑時才向源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊發(fā)送降級指令;在數(shù)據(jù)服務(wù)器上部署源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器后,分別在這兩個數(shù)據(jù)服務(wù)器上部署I/O記錄模塊和遷移執(zhí)行模塊;源數(shù)據(jù)服務(wù)器中的I/O記錄模塊與固態(tài)磁盤SSD互連,而該固態(tài)磁盤SSD受遷移執(zhí)行模塊控制;目標數(shù)據(jù)服務(wù)器中部署的I/O記錄模塊與電子集成驅(qū)動器IDE陣列互連,而該IDE陣列受該目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊控制;并行文件系統(tǒng)客戶代理模塊與所述源數(shù)據(jù)服務(wù)器以及目標數(shù)據(jù)服務(wù)器中相應(yīng)的I/O記錄模塊相連,以執(zhí)行I/O操作;當源數(shù)據(jù)服務(wù)器中的I/O記錄模塊收到并行文件系統(tǒng)客戶代理模塊發(fā)出的I/O操作指令以及后繼的由元數(shù)據(jù)服務(wù)器中的遷移調(diào)度控制器發(fā)給遷移執(zhí)行模塊的遷移指令后,得到要遷移文件的inode節(jié)點值、目標數(shù)據(jù)服務(wù)器的通信地址以及目標數(shù)據(jù)文件的inode節(jié)點值,然后,該源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊與目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊建立連接并把源數(shù)據(jù)文件的數(shù)據(jù)寫入目標數(shù)據(jù)文件,發(fā)往目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊,再送往IDE陣列;步驟(2).由步驟(1)所述的并行文件系統(tǒng)依次按以下步驟執(zhí)行海量數(shù)據(jù)分級存儲方法步驟(2.1).初始化元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器步驟(2.1.1).把配置文件分別讀入元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器;步驟(2.1.2).元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器分別從該配置文件中讀取各自的通信地址和服務(wù)端口,同時解析出inode節(jié)點分配表,根據(jù)文件的inode節(jié)點值將其映射到對應(yīng)的數(shù)據(jù)服務(wù)器并存儲;同時元數(shù)據(jù)服務(wù)器啟動文件遷移模塊中的升級線程、降級線程以及增量掃描器中的文件掃描線程;步驟(2.2).初始化并行文件系統(tǒng)客戶代理模塊步驟(2.2.1).把配置文件讀入該客戶代理模塊,步驟(2.2.2).獲取元數(shù)據(jù)服務(wù)器的通信地址和服務(wù)端口,步驟(2.2.3).初始化該代理模塊的cache子系統(tǒng),步驟(2.2.4).虛擬出子設(shè)備,供VFS子模塊存入用戶的VFS訪問命令,并在處理完后將返回值寫入,供VFS子模塊調(diào)用;步驟(2.3).按以下步驟執(zhí)行文件遷移步驟(2.3.1).元數(shù)據(jù)服務(wù)器從本地讀取該文件的元數(shù)據(jù),獲取文件的inode節(jié)點值和所在的數(shù)據(jù)服務(wù)器編號;步驟(2.3.2).元數(shù)據(jù)服務(wù)器中的遷移調(diào)度控制器向文件要遷移的目標數(shù)據(jù)服務(wù)器發(fā)出創(chuàng)建數(shù)據(jù)文件的指令,待創(chuàng)建完畢后,再由該目標數(shù)據(jù)服務(wù)器向所述的遷移調(diào)度控制器返回新創(chuàng)建好的數(shù)據(jù)文件的inode節(jié)點值;步驟(2.3.3).元數(shù)據(jù)服務(wù)器中的遷移調(diào)度控制器向文件所在的源數(shù)據(jù)服務(wù)器發(fā)送遷移指令,包含目標數(shù)據(jù)服務(wù)器的通信地址、該文件所在源數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件的inode節(jié)點值、該文件所在目標數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件的inode節(jié)點值;步驟(2.3.4).源數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊收到遷移指令后,根據(jù)其中的通信地址與目標數(shù)據(jù)服務(wù)器中的遷移執(zhí)行模塊建立連接,之后通過所述的SSD把本地的數(shù)據(jù)文件的內(nèi)容全部寫入目標數(shù)據(jù)服務(wù)器對應(yīng)的數(shù)據(jù)文件中去,執(zhí)行完畢后,遷移執(zhí)行模塊把本地數(shù)據(jù)文件從源數(shù)據(jù)服務(wù)器中刪除,并向元數(shù)據(jù)服務(wù)器的遷移調(diào)度控制器返回遷移成功的指令;步驟(2.3.5).遷移調(diào)度控制器讀取文件的元數(shù)據(jù)信息,把它所在的位置改成目標數(shù)據(jù)服務(wù)器,同時把該文件所對應(yīng)的數(shù)據(jù)文件的inode節(jié)點值改成目標數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件的inode節(jié)點值。
2.根據(jù)權(quán)利要求1所述的海量數(shù)據(jù)分級存儲方法,其特征在于所述源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器的遷移執(zhí)行模塊通過讀寫鎖來解決在遷移時由于用戶對被遷移文件執(zhí)行寫操作產(chǎn)生的源數(shù)據(jù)服務(wù)器和目標數(shù)據(jù)服務(wù)器中所述數(shù)據(jù)文件的一致性問題。
全文摘要
海量數(shù)據(jù)分級存儲方法屬于數(shù)據(jù)遷移領(lǐng)域,其特征在于各前端主機上的并行文件系統(tǒng)客戶代理軟件通過系統(tǒng)接口子模塊和VFS層子模塊實現(xiàn)對VFS訪問的支持;元數(shù)據(jù)服務(wù)器負責把不同數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件組織成統(tǒng)一的并行文件系統(tǒng)視圖,由元數(shù)據(jù)管理模塊提供訪問元數(shù)據(jù)的操作,由文件遷移決策模塊定期從數(shù)據(jù)服務(wù)器獲取文件訪問信息,并根據(jù)文件系統(tǒng)負載和設(shè)備分級情況對文件遷移進行決策。數(shù)據(jù)服務(wù)器的遷移執(zhí)行模塊執(zhí)行具體的遷移工作。該方法根據(jù)負載情況自動地完成數(shù)據(jù)遷移過程,有效提高了系統(tǒng)的吞吐率,并且遷移文件少,遷移進程對前端應(yīng)用的影響也較小。
文檔編號G06F17/30GK101079902SQ20071011811
公開日2007年11月28日 申請日期2007年6月29日 優(yōu)先權(quán)日2007年6月29日
發(fā)明者舒繼武, 薛巍, 于得水, 張廣艷 申請人:清華大學