專(zhuān)利名稱(chēng):基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法
技術(shù)領(lǐng)域:
基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法屬于數(shù)據(jù)遷移領(lǐng)域,尤其涉及其 中的增量掃描和速率控制領(lǐng)域。
背景技術(shù):
基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法是指在海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng) 中,根據(jù)海量數(shù)據(jù)的訪問(wèn)規(guī)律對(duì)其進(jìn)行數(shù)據(jù)分級(jí),根據(jù)數(shù)據(jù)級(jí)別的變化和設(shè)備的 使用情況在不同級(jí)別的存儲(chǔ)子系統(tǒng)之間遷移數(shù)據(jù),并對(duì)遷移任務(wù)進(jìn)行管理以降低 其對(duì)前端應(yīng)用的影響。傳統(tǒng)的分級(jí)存儲(chǔ)系統(tǒng)中較少包含遷移管理和速率控制機(jī) 制,如果慢速數(shù)據(jù)服務(wù)器上有文件被訪問(wèn),即將其遷移到快速數(shù)據(jù)服務(wù)器中,沒(méi) 有考慮到遷移對(duì)前端應(yīng)用的影響。同時(shí),傳統(tǒng)的分級(jí)存儲(chǔ)系統(tǒng)對(duì)于降級(jí)缺乏自適 應(yīng)機(jī)制,如果快速數(shù)據(jù)服務(wù)器的磁盤(pán)空間己滿(mǎn)或者其剩余空間低于某個(gè)閾值,才 將快速數(shù)據(jù)服務(wù)器上的文件降級(jí),造成系統(tǒng)的突發(fā)流量比較大,在磁盤(pán)剩余空間 低于允許值時(shí),如果要升級(jí)一個(gè)文件,必須要先從快速數(shù)據(jù)服務(wù)器上降級(jí)一個(gè)文 件以騰出空閑存儲(chǔ)空間,提高了升級(jí)代價(jià)。
本發(fā)明提出了一種新的基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法,該方法 通過(guò)增量掃描技術(shù)獲取設(shè)備的訪問(wèn)情況,根據(jù)當(dāng)前訪問(wèn)情況對(duì)后續(xù)訪問(wèn)情況進(jìn)行 預(yù)測(cè)以進(jìn)行速率控制,同時(shí)根據(jù)磁盤(pán)的剩余空間自適應(yīng)地進(jìn)行主動(dòng)降級(jí)操作,有 效解決了上述問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能全面滿(mǎn)足網(wǎng)絡(luò)服務(wù)和科學(xué)計(jì)算需要的基于海 量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法,把遷移過(guò)程對(duì)前端應(yīng)用的影響降到最低。 本發(fā)明的重點(diǎn)在于元數(shù)據(jù)服務(wù)器中增量掃描模塊和遷移管理模塊的設(shè)計(jì),以及數(shù)
據(jù)服務(wù)器中掃描處理模塊和1/0記錄模塊的設(shè)計(jì)。
本發(fā)明的特征在于它是在由以下設(shè)備構(gòu)成的海量分級(jí)存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)的, 該系統(tǒng)含有
各種類(lèi)型的前端主機(jī),即應(yīng)用服務(wù)器,該前端主機(jī)的并行文件系統(tǒng)客戶(hù)代理
模塊實(shí)現(xiàn)虛擬文件系統(tǒng)層(VFS)的各種文件操作以及從下述元數(shù)據(jù)服務(wù)器讀取相 應(yīng)文件的元數(shù)據(jù);
元數(shù)據(jù)服務(wù)器,有一臺(tái)或多臺(tái),按照TCP/IP協(xié)議經(jīng)以太網(wǎng)與上述各前端主 機(jī)相連,把位于不同數(shù)據(jù)服務(wù)器上的數(shù)據(jù)文件組織成統(tǒng)一的并行文件系統(tǒng)視圖, 為上述各前端主機(jī)提供元數(shù)據(jù)操作服務(wù),同時(shí)執(zhí)行增量掃描,遷移管理以及速率 控制等操作,實(shí)現(xiàn)對(duì)海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)中的前端應(yīng)用的性能保證;
數(shù)據(jù)服務(wù)器,有多臺(tái),按照性能高低劃分為快速數(shù)據(jù)服務(wù)器和慢速數(shù)據(jù)服 務(wù)器??焖贁?shù)據(jù)服務(wù)器由數(shù)據(jù)服務(wù)節(jié)點(diǎn)和快速設(shè)備組成,快速設(shè)備通過(guò)總線連接 到數(shù)據(jù)服務(wù)節(jié)點(diǎn)上;慢速數(shù)據(jù)服務(wù)器由數(shù)據(jù)服務(wù)節(jié)點(diǎn)和慢速設(shè)備組成,慢速設(shè)備 通過(guò)總線連接到數(shù)據(jù)服務(wù)節(jié)點(diǎn)上。所述數(shù)據(jù)服務(wù)節(jié)點(diǎn)由數(shù)據(jù)服務(wù)模塊,1/0記錄 模塊和掃描處理模塊等組成。數(shù)據(jù)服務(wù)器保存著每個(gè)文件分片后的數(shù)據(jù)文件,可
以為前端主機(jī)提供文件i/o操作,記錄I/0請(qǐng)求的訪問(wèn)情況,對(duì)元數(shù)據(jù)服務(wù)器發(fā)
來(lái)的增量掃描指令進(jìn)行處理并返回掃描信息,以及執(zhí)行元數(shù)據(jù)服務(wù)器發(fā)來(lái)的文件 遷移命令;
基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法,其特征在于,依次含有以下步 驟
步驟(l).初始化海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)
海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)由下述各部分組成前端主機(jī),元數(shù)據(jù)服務(wù)器一臺(tái)或 多臺(tái),數(shù)據(jù)服務(wù)器多臺(tái);所述數(shù)據(jù)服務(wù)器按照性能高低劃分為快速數(shù)據(jù)服務(wù)器和 慢速數(shù)據(jù)服務(wù)器;快速數(shù)據(jù)服務(wù)器由數(shù)據(jù)服務(wù)節(jié)點(diǎn)和快速設(shè)備組成,快速設(shè)備通 過(guò)總線連接到數(shù)據(jù)服務(wù)節(jié)點(diǎn)上;慢速數(shù)據(jù)服務(wù)器由數(shù)據(jù)服務(wù)節(jié)點(diǎn)和慢速設(shè)備組 成,慢速設(shè)備通過(guò)總線連接到數(shù)據(jù)服務(wù)節(jié)點(diǎn)上;所述數(shù)據(jù)服務(wù)節(jié)點(diǎn)由數(shù)據(jù)服務(wù)模 塊,1/0記錄模塊和掃描處理模塊等組成;
在作為應(yīng)用服務(wù)器的各種類(lèi)型的前端主機(jī)上部署并行文件系統(tǒng)客戶(hù)代理模 塊,以實(shí)現(xiàn)虛擬文件系統(tǒng)層VFS的各種文件操作;
在元數(shù)據(jù)服務(wù)器上部署一組運(yùn)行在Li叫X系統(tǒng)上的用戶(hù)空間程序,其中包括 元數(shù)據(jù)服務(wù)模塊,遷移管理模塊和增量掃描模塊,其中
元數(shù)據(jù)服務(wù)模塊,通過(guò)網(wǎng)絡(luò)通信層接收到并行文件系統(tǒng)客戶(hù)代理模塊發(fā)來(lái)的 元數(shù)據(jù)訪問(wèn)指令后,提供以下執(zhí)行元數(shù)據(jù)操作的接口文件創(chuàng)建、文件刪除、目 錄創(chuàng)建、目錄刪除、文件查找以及目錄項(xiàng)管理、系統(tǒng)負(fù)載獲取、所述文件系統(tǒng)統(tǒng) 計(jì)信息,供通過(guò)網(wǎng)絡(luò)通信層與并行文件系統(tǒng)客戶(hù)代理模塊通信用;
遷移管理模塊,對(duì)所有文件,維護(hù)一個(gè)文件訪問(wèn)表,該表采用哈系表結(jié)構(gòu), 鍵值為文件的inode節(jié)點(diǎn)值;文件訪問(wèn)表內(nèi)容包括文件inode節(jié)點(diǎn)值,文件路 徑,文件被訪問(wèn)總次數(shù),文件被訪問(wèn)總字節(jié)數(shù)和文件的位置;對(duì)在快速數(shù)據(jù)服務(wù) 器上的文件,所述遷移管理模塊維護(hù)一個(gè)最近最少被訪問(wèn)(Least Recently Used, LRU)列表,每個(gè)表項(xiàng)的內(nèi)容包括文件的inode節(jié)點(diǎn)值,指向該文件對(duì)應(yīng)文件訪 問(wèn)表中元素的指針,每當(dāng)增量掃描模塊得知某文件被訪問(wèn)之后,遷移管理模塊將 LRU表中該文件對(duì)應(yīng)的表項(xiàng)移動(dòng)到LRU表的表頭,每當(dāng)有文件從慢速數(shù)據(jù)服務(wù)器 升級(jí)到快速數(shù)據(jù)服務(wù)器時(shí),遷移管理模塊都為該文件分配一個(gè)LRU表項(xiàng),并放入 LRU表的鏢頭,每當(dāng)有文件從快速數(shù)據(jù)服務(wù)器降級(jí)到慢速數(shù)據(jù)服務(wù)器時(shí),遷移管 理模塊都將該文件對(duì)應(yīng)的LRU表項(xiàng)從LRU表中刪除,并釋放該表項(xiàng)占用的內(nèi)存空
間;同時(shí),遷移管理模塊維護(hù)兩個(gè)有序隊(duì)列升級(jí)隊(duì)列和降級(jí)隊(duì)列,分別由升級(jí) 線程和降級(jí)線程處理隊(duì)列中的任務(wù);
主動(dòng)降級(jí)模塊,根據(jù)快速數(shù)據(jù)服務(wù)器剩余空間情況,定期從快速數(shù)據(jù)服務(wù) 器上文件的LRU隊(duì)列的隊(duì)尾取出一個(gè)文件,放入降級(jí)隊(duì)列中;
增量掃描模塊,在啟動(dòng)時(shí)創(chuàng)建增量掃描線程,每隔一個(gè)掃描周期,所述掃 描線程向所有數(shù)據(jù)服務(wù)器發(fā)送增量掃描請(qǐng)求,獲取數(shù)據(jù)服務(wù)器在該掃描周期內(nèi)的 被訪問(wèn)情況;
在數(shù)據(jù)服務(wù)器上部署一組運(yùn)行在Unux系統(tǒng)上的用戶(hù)空間程序,其中包括-數(shù)據(jù)服務(wù)模塊,1/0記錄模塊和掃描處理模塊,其中
數(shù)據(jù)服務(wù)模塊,通過(guò)網(wǎng)絡(luò)通信層收到并行文件系統(tǒng)客戶(hù)代理模塊發(fā)來(lái)的數(shù)據(jù)
訪問(wèn)指令后,提供以下執(zhí)行數(shù)據(jù)操作的接口數(shù)據(jù)文件創(chuàng)建、數(shù)據(jù)文件刪除、讀
數(shù)據(jù)文件、寫(xiě)數(shù)據(jù)文件,供通過(guò)網(wǎng)絡(luò)通信層與并行文件系統(tǒng)客戶(hù)代理模塊通信用; 1/0記錄模塊,維護(hù)一個(gè)1/0訪問(wèn)記錄表,表項(xiàng)內(nèi)容包括文件的inode節(jié) 點(diǎn)值,文件大小,文件在本掃描周期內(nèi)的被訪問(wèn)字節(jié)數(shù),文件在本掃描周期內(nèi)的 被訪問(wèn)次數(shù);數(shù)據(jù)服務(wù)器每收到一個(gè)I/0請(qǐng)求,1/0記錄模塊從中解析出被訪問(wèn) 文件的inode節(jié)點(diǎn)值,并以該文件的inode節(jié)點(diǎn)值為鍵值査找I/O訪問(wèn)記錄表; 如果找到,將該文件對(duì)應(yīng)1/0訪問(wèn)記錄表中表項(xiàng)中的被訪問(wèn)次數(shù)增加1,被訪問(wèn) 字節(jié)數(shù)增加本次I/0請(qǐng)求的大?。环駝t,創(chuàng)建一個(gè)新的I/0訪問(wèn)記錄表項(xiàng),將其 inode節(jié)點(diǎn)值設(shè)為被訪問(wèn)文件的inode節(jié)點(diǎn)值,被訪問(wèn)次數(shù)初始化為1,被訪問(wèn) 字節(jié)數(shù)初始化為本次I/O訪問(wèn)大小;
掃描處理模塊,收到元數(shù)據(jù)服務(wù)器發(fā)來(lái)的掃描請(qǐng)求之后,遍歷I/0訪問(wèn)記錄 表,對(duì)其中的每個(gè)被訪問(wèn)文件,從本地文件系統(tǒng)中讀取其對(duì)應(yīng)數(shù)據(jù)文件的大小, 并同增量掃描模塊建立連接,按照擴(kuò)展數(shù)據(jù)表示格式XDR將本周期內(nèi)的被訪問(wèn)情 況發(fā)送給所述元數(shù)據(jù)服務(wù)器的增量掃描模塊;發(fā)送的被訪問(wèn)情況內(nèi)容包括I/O
訪問(wèn)記錄表,本掃描周期內(nèi)訪問(wèn)文件的數(shù)目,本掃描周期內(nèi)訪問(wèn)的總字節(jié)數(shù),本
掃描周期內(nèi)執(zhí)行遷移的文件總大小;
步驟(2).由步驟(1)所述的并行文件系統(tǒng)依次按以下步驟執(zhí)行海量數(shù)據(jù)分級(jí)
存儲(chǔ)系統(tǒng)的遷移管理方法-
步驟(2. 1).初始化元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器
步驟(2. 1. l).把配置文件分別讀入元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器;
步驟(2. 1. 2).元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器分別從該配置文件中讀取各自 的通信地址和服務(wù)端口,同時(shí)解析出inode節(jié)點(diǎn)分配表, 根據(jù)文件的inode節(jié)點(diǎn)值將其映射到對(duì)應(yīng)的數(shù)據(jù)服務(wù)器并 存儲(chǔ);同時(shí)元數(shù)據(jù)服務(wù)器啟動(dòng)文件遷移模塊中的升級(jí)線程、 降級(jí)線程以及增量掃描模塊中的文件掃描線程;元數(shù)據(jù)服
務(wù)器初始化遷移管理模塊維護(hù)的文件訪問(wèn)表; 步驟(2.2).初始化并行文件系統(tǒng)客戶(hù)代理模塊
步驟(2. 2. 1).把配置文件讀入該客戶(hù)代理模塊, 步驟(2. 2. 2).獲取元數(shù)據(jù)服務(wù)器的通信地址和服務(wù)端口 , 步驟(2. 2. 3).初始化該代理模塊的髙速緩存子系統(tǒng), 步驟(2. 2. 4).虛擬出子設(shè)備,供所述VFS子模塊存入用戶(hù)的VFS訪問(wèn)命 令,并在處理完后將返回值寫(xiě)入,供VFS子模塊調(diào)用; 步驟(2. 3).按以下步驟執(zhí)行文件遷移管理
步驟(2.3. 1).每當(dāng)并行文件系統(tǒng)客戶(hù)代理模塊調(diào)用元數(shù)據(jù)服務(wù)器上的 元數(shù)據(jù)服務(wù)模塊創(chuàng)建新的文件,遷移管理模塊都會(huì)在文件 訪問(wèn)表中為該文件創(chuàng)建新的訪問(wèn)表項(xiàng); 步驟(2.3.2).每當(dāng)并行文件系統(tǒng)客戶(hù)代理模塊調(diào)用數(shù)據(jù)服務(wù)器上的數(shù) 據(jù)服務(wù)模塊對(duì)文件進(jìn)行訪問(wèn)時(shí),I/O記錄模塊都會(huì)根據(jù)訪 問(wèn)信息更新數(shù)據(jù)服務(wù)器上的1/0訪問(wèn)記錄表,并更新本掃 描周期內(nèi)的訪問(wèn)記錄變量; 步驟(2. 3. 3).元數(shù)據(jù)服務(wù)器的增量掃描模塊在每個(gè)掃描周期結(jié)束時(shí)向所
有數(shù)據(jù)服務(wù)器發(fā)送增量掃描指令; 步驟(2. 3. 4).數(shù)據(jù)服務(wù)器收到元數(shù)據(jù)服務(wù)器發(fā)來(lái)的增量掃描指令后,同 元數(shù)據(jù)服務(wù)器建立連接,將本掃描周期內(nèi)的訪問(wèn)信息返回 給所述的增量掃描模塊,同時(shí)清空1/0訪問(wèn)記錄表和訪問(wèn) 記錄變量中的內(nèi)容,以便統(tǒng)計(jì)下一個(gè)掃描周期內(nèi)的訪問(wèn)信 息;
步驟(2. 3. 5).元數(shù)據(jù)服務(wù)器中的增量掃描模塊將數(shù)據(jù)服務(wù)器返回的訪問(wèn) 信息發(fā)送給遷移管理模塊,遷移管理模塊利用該信息更新 文件訪問(wèn)表,如果被訪問(wèn)的文件位于快速數(shù)據(jù)服務(wù)器,那么 遷移管理模塊將該文件在LRU表中對(duì)應(yīng)的表項(xiàng)移動(dòng)到LRU 表的表頭;
步驟(2. 3. 6).遷移管理模塊對(duì)本周期內(nèi)文件訪問(wèn)表被更新的文件進(jìn)行遷 移決策,如果文件的訪問(wèn)熱度超過(guò)了預(yù)先設(shè)定的升級(jí)閾值, 將其放入升級(jí)隊(duì)列中,由升級(jí)線程處理;同時(shí),如果文件 訪問(wèn)表中記錄的某個(gè)文件未訪問(wèn)時(shí)間大于預(yù)先設(shè)定的降級(jí) 閾值,將其放入降級(jí)隊(duì)列中,由降級(jí)線程處理;
步驟(2. 3. 7).遷移管理模塊對(duì)降級(jí)線程進(jìn)行速率控制,它根據(jù)增量掃描 模塊掃描得到的本掃描周期內(nèi)文件的訪問(wèn)熱度,判斷當(dāng)前 系統(tǒng)是否處于空閑狀態(tài),如果空閑,遷移管理模塊通知降
級(jí)線程,將降級(jí)隊(duì)列中的降級(jí)候選文件執(zhí)行降級(jí)操作;遷 移管理模塊對(duì)升級(jí)線程不進(jìn)行速率控制,如果升級(jí)線程監(jiān) 測(cè)到升級(jí)隊(duì)列中有升級(jí)任務(wù),即將該任務(wù)從隊(duì)列中取出, 執(zhí)行降級(jí)操作。
本發(fā)明的優(yōu)點(diǎn)如下-
(1) 元數(shù)據(jù)服務(wù)器對(duì)數(shù)據(jù)服務(wù)器上的文件執(zhí)行周期性的增量掃描,每次掃描 僅更新近期被訪問(wèn)過(guò)的文件信息,對(duì)近期訪問(wèn)過(guò)的文件重新進(jìn)行遷移價(jià)值評(píng)價(jià), 避免了掃描整個(gè)文件系統(tǒng)和文件訪問(wèn)列表。
(2) 遷移管理模塊對(duì)快速數(shù)據(jù)服務(wù)器上的文件執(zhí)行主動(dòng)降級(jí)操作,在設(shè)備剩
余空間耗盡之前提前將不重要的數(shù)據(jù)進(jìn)行降級(jí),提高了快速數(shù)據(jù)服務(wù)器剩余空間 占總空間的比例,避免了設(shè)備寫(xiě)滿(mǎn)之后才執(zhí)行降級(jí)遷移對(duì)前端訪問(wèn)造成的影響。
(3) 對(duì)遷移過(guò)程進(jìn)行了速率控制,根據(jù)以往的系統(tǒng)負(fù)載情況來(lái)預(yù)測(cè)下一次系 統(tǒng)負(fù)載情況,在系統(tǒng)空閑時(shí)才執(zhí)行遷移,將遷移對(duì)前端應(yīng)用造成的影響降到最低。
本發(fā)明在清華大學(xué)計(jì)算機(jī)系高性能計(jì)算技術(shù)研究所進(jìn)行了測(cè)試。結(jié)果表明, 基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法可以根據(jù)負(fù)載情況完成自動(dòng)的數(shù)據(jù) 遷移過(guò)程,并根據(jù)設(shè)備剩余空間情況進(jìn)行主動(dòng)降級(jí),速率控制機(jī)制也使遷移進(jìn)程 對(duì)前端應(yīng)用造成的影響較小。
對(duì)海量數(shù)據(jù)分級(jí)存儲(chǔ)方法的測(cè)試從文件訪問(wèn)的平均響應(yīng)時(shí)間、快速數(shù)據(jù)服務(wù) 器的空間利用率和文件訪問(wèn)命中在快速數(shù)據(jù)服務(wù)器上的命中率等三方面衡量。測(cè) 試環(huán)境由一臺(tái)元數(shù)據(jù)服務(wù)器、 一臺(tái)代表慢速數(shù)據(jù)服務(wù)器的數(shù)據(jù)服務(wù)器, 一臺(tái)代表 快速數(shù)據(jù)服務(wù)器的數(shù)據(jù)服務(wù)器, 一臺(tái)前端主機(jī),1臺(tái)千兆以太網(wǎng)交換機(jī)組成。元 數(shù)據(jù)服務(wù)器和兩臺(tái)數(shù)據(jù)服務(wù)器均采用64位Intel Itanium 2 1GHZ雙CPU服務(wù)器, 內(nèi)存2GB,操作系統(tǒng)為L(zhǎng)inux,內(nèi)核版本為2.6.9。我們采用清華大學(xué)計(jì)算機(jī)系 高性能計(jì)算技術(shù)研究所開(kāi)發(fā)的文件trace播放器作為測(cè)試工具,使用美國(guó)加州大 學(xué)大學(xué)伯克利分校Roselli等人在1997年采集的文件trace: /tesearc力作為測(cè) 試數(shù)據(jù),在上述實(shí)驗(yàn)環(huán)境中對(duì)加入遷移管理方法的海量分級(jí)存儲(chǔ)系統(tǒng)模擬測(cè)試了 30天,得到了快速設(shè)備的空間利用率,同時(shí)對(duì)該系統(tǒng)實(shí)際測(cè)試了 1小時(shí),得到 了文件訪問(wèn)的平均響應(yīng)時(shí)間和文件訪問(wèn)命中在快速設(shè)備上的命中率。測(cè)試結(jié)果見(jiàn) 圖5,圖6。從測(cè)試結(jié)果中可以看出,遷移調(diào)度策略使得遷移過(guò)程對(duì)前端訪問(wèn)影 響很小,平均響應(yīng)時(shí)間較低,同時(shí)由于主動(dòng)降級(jí)的作用,快速設(shè)備空間利用率始 終維持在70%以下。
圖l.增量掃描示意圖。 圖2.基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法硬件結(jié)構(gòu)圖。 圖3.基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法軟件結(jié)構(gòu)圖。 圖4.基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法整體流程圖。 圖5.基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法的文件訪問(wèn)平均響應(yīng)時(shí)
間測(cè)試結(jié)果。
圖6.基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法的文件訪問(wèn)命中在快速
數(shù)據(jù)服務(wù)器上的命中率。 圖7.基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法的快速數(shù)據(jù)服務(wù)器的空
間利用率。
具體實(shí)施例方式
海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)主要由元數(shù)據(jù)服務(wù)器、數(shù)據(jù)服務(wù)器和前端主機(jī)上的并 行文件系統(tǒng)客戶(hù)代理軟件組成。遷移管理方法運(yùn)行在所述的海量分級(jí)存儲(chǔ)系統(tǒng) 中。
海量分級(jí)存儲(chǔ)系統(tǒng)中,前端主機(jī),元數(shù)據(jù)服務(wù)器和數(shù)據(jù)服務(wù)器通過(guò)以太網(wǎng)交 換機(jī)連接在一起,按照數(shù)據(jù)服務(wù)器上掛載設(shè)備的性能不同,將其劃分為快速和慢 速數(shù)據(jù)服務(wù)器。被遷移文件的遷移起始端稱(chēng)為源數(shù)據(jù)服務(wù)器,遷移目標(biāo)端稱(chēng)為目 標(biāo)數(shù)據(jù)服務(wù)器。
元數(shù)據(jù)服務(wù)器上的元數(shù)據(jù)服務(wù)模塊完成對(duì)元數(shù)據(jù)的操作,增量掃描模塊定期 向所有數(shù)據(jù)服務(wù)器發(fā)出掃描指令以獲取數(shù)據(jù)服務(wù)器在本周期內(nèi)的訪問(wèn)情況;遷移 管理模塊維護(hù)并更新文件訪問(wèn)表,預(yù)測(cè)下一周期負(fù)載情況,并對(duì)降級(jí)隊(duì)列進(jìn)行速 率控制,同時(shí)負(fù)責(zé)生成遷移指令;降級(jí)線程定期從快速設(shè)備上文件的LRU表中取 出隊(duì)尾表項(xiàng),放入降級(jí)隊(duì)列中。基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法軟件 結(jié)構(gòu)如圖3所示。
增量掃描模塊定期向所有數(shù)據(jù)服務(wù)器發(fā)出掃描請(qǐng)求,數(shù)據(jù)服務(wù)器收到該請(qǐng)求 后將本周期內(nèi)所有被訪問(wèn)文件的訪問(wèn)情況發(fā)送給元數(shù)據(jù)服務(wù)器。文件訪問(wèn)情況的
消息格式如下
Struct access—info {
Struct san—info* scan—info一array; uint32一t stat一count; uint32一t stat—io—size;
};
其中,scan—info_array是指向該數(shù)據(jù)服務(wù)器的I/O記錄模塊維護(hù)的I/O訪問(wèn)記 錄表的指針,stat_count是I/O訪問(wèn)記錄表中的表項(xiàng)數(shù)目,stat—io_size是該數(shù)據(jù) 服務(wù)器在本周期內(nèi)收到的所有I/O請(qǐng)求的總訪問(wèn)大小。I/O訪問(wèn)記錄表每個(gè)表項(xiàng) 的格式如下.-
Struct scan—info {
uint64—t meta—handle /*文件的inode節(jié)點(diǎn)值*/
uint64一t data—handle /*文件對(duì)應(yīng)數(shù)據(jù)文件的inode節(jié)點(diǎn)值*/
uint64_t dspace—size /*數(shù)據(jù)文件的大小*/
uint64一t access—size /*該文件在本掃描周期內(nèi)的訪問(wèn)字節(jié)數(shù)*/
};
增量掃描模塊收到這些數(shù)據(jù)之后,通知文件訪問(wèn)表管理器對(duì)文件訪問(wèn)表中的
相關(guān)文件進(jìn)行更新。文件訪問(wèn)表中一個(gè)表項(xiàng)的格式如下
Typedef struct
uint64—t meta—handle /*文件的inode節(jié)點(diǎn)值*/ uint64—t file—size /*文件大小*/
uint32_tlifetime /*文件從創(chuàng)建開(kāi)始到當(dāng)前的生存時(shí)間*/
uint32—trereference—time /*文件的平均重復(fù)訪問(wèn)間隔*/ uint32_t access—num /*文件的總訪問(wèn)次數(shù)*/ uint64—t access—bytes /*文件的總訪問(wèn)字節(jié)數(shù)*/ uint32junaccess一time/*文件從上次訪問(wèn)到現(xiàn)在的未訪問(wèn)時(shí)間*/ } file—migration
文件訪問(wèn)表管理模塊對(duì)相關(guān)文件更新之后,根據(jù)該文件對(duì)應(yīng)訪問(wèn)表項(xiàng)中的訪 問(wèn)信息計(jì)算文件的訪問(wèn)熱度,如果訪問(wèn)熱度大于給定的升級(jí)閾值,即將其放入升 級(jí)隊(duì)列中,由升級(jí)線程進(jìn)行處理;
升、降級(jí)隊(duì)列中每個(gè)元素的格式如下 Struct migration一entry(
uint64一t meta一handle; /*遷移候選文件的inode節(jié)點(diǎn)值*/
uint32—tnext_atime;/*文件預(yù)測(cè)的下次訪問(wèn)時(shí)間,對(duì)升級(jí)文件使用*/
char* path; /*文件的路徑*/
uint8—Uier;/*文件對(duì)應(yīng)數(shù)據(jù)文件所在的數(shù)據(jù)服務(wù)器編號(hào)*/ 升級(jí)的執(zhí)行步驟如下-
升級(jí)線程從升級(jí)隊(duì)列中獲取一個(gè)元素并將該元素從升級(jí)隊(duì)列中刪除,解析出 其inode節(jié)點(diǎn)值之后,生成遷移指令并向源數(shù)據(jù)服務(wù)器發(fā)送該指令,將該元素從 快速設(shè)備上文件的LRU表中刪除,并將該元素對(duì)應(yīng)的LRU表項(xiàng)在內(nèi)存中的空間 釋放,同時(shí)將升級(jí)成功的命令寫(xiě)入遷移日志文件。
降級(jí)的執(zhí)行步驟如下
降級(jí)線程從降級(jí)隊(duì)列中獲取一個(gè)元素并將該元素從降級(jí)隊(duì)列中刪除,解析出 其inode節(jié)點(diǎn)值之后,生成遷移指令并向源數(shù)據(jù)服務(wù)器發(fā)送該指令,降級(jí)遷移完
成之后,為該元素分配一個(gè)LRU表項(xiàng)并將其插入快速設(shè)備上文件的LRU表的表 頭,同時(shí)將降級(jí)成功的命令寫(xiě)入遷移日志文件。 主動(dòng)降級(jí)操作按照如下方法執(zhí)行-.
獲取快速設(shè)備上的總文件大小tier0—total_fileSiZe ,該值即為快速設(shè)備已使 用的空間,獲取快速設(shè)備的總空間大小device一size,則快速設(shè)備的剩余可用空間 為device—size - tierO_total—fiksize ,快速設(shè)備的剩余可用空間占總空間的比例為
r = (device—size - tierO—total—filesize)/device_size
主動(dòng)降級(jí)操作使用下式-.
sleeptime = T""
來(lái)計(jì)算兩次主動(dòng)降級(jí)之間的時(shí)間間隔,其中T是一個(gè)可調(diào)參數(shù)。主動(dòng)降級(jí)
操作調(diào)用sleep()系統(tǒng)調(diào)用睡眠We印rfme時(shí)間,然后再?gòu)目焖僭O(shè)備上文件的LRU
表的隊(duì)尾取出一個(gè)元素放入降級(jí)隊(duì)列中??焖僭O(shè)備的剩余空間越小,r值越小,
sfe印ft'me越小,主動(dòng)降級(jí)越頻繁;快速設(shè)備的剩余空間越大,r值越大,We印Z/me
越大,主動(dòng)降級(jí)越不頻繁。該方法可以自適應(yīng)的根據(jù)快速設(shè)備的剩余空間情況調(diào) 整主動(dòng)降級(jí)的頻率。
海量數(shù)據(jù)分級(jí)存儲(chǔ)方法的整體各模塊結(jié)構(gòu)關(guān)系圖如圖3所示。
權(quán)利要求
1.基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法,其特征在于,依次含有以下步驟步驟(1).初始化海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)由下述各部分組成前端主機(jī),元數(shù)據(jù)服務(wù)器一臺(tái)或多臺(tái),數(shù)據(jù)服務(wù)器多臺(tái);所述數(shù)據(jù)服務(wù)器按照性能高低劃分為快速數(shù)據(jù)服務(wù)器和慢速數(shù)據(jù)服務(wù)器;快速數(shù)據(jù)服務(wù)器由數(shù)據(jù)服務(wù)節(jié)點(diǎn)和快速設(shè)備組成,快速設(shè)備通過(guò)總線連接到數(shù)據(jù)服務(wù)節(jié)點(diǎn)上;慢速數(shù)據(jù)服務(wù)器由數(shù)據(jù)服務(wù)節(jié)點(diǎn)和慢速設(shè)備組成,慢速設(shè)備通過(guò)總線連接到數(shù)據(jù)服務(wù)節(jié)點(diǎn)上;所述數(shù)據(jù)服務(wù)節(jié)點(diǎn)由數(shù)據(jù)服務(wù)模塊,I/O記錄模塊和掃描處理模塊等組成;在作為應(yīng)用服務(wù)器的各種類(lèi)型的前端主機(jī)上部署并行文件系統(tǒng)客戶(hù)代理模塊,以實(shí)現(xiàn)虛擬文件系統(tǒng)層VFS的各種文件操作;在元數(shù)據(jù)服務(wù)器上部署一組運(yùn)行在Linux系統(tǒng)上的用戶(hù)空間程序,其中包括元數(shù)據(jù)服務(wù)模塊,遷移管理模塊和增量掃描模塊,其中元數(shù)據(jù)服務(wù)模塊,通過(guò)網(wǎng)絡(luò)通信層接收到并行文件系統(tǒng)客戶(hù)代理模塊發(fā)來(lái)的元數(shù)據(jù)訪問(wèn)指令后,提供以下執(zhí)行元數(shù)據(jù)操作的接口文件創(chuàng)建、文件刪除、目錄創(chuàng)建、目錄刪除、文件查找以及目錄項(xiàng)管理、系統(tǒng)負(fù)載獲取、所述文件系統(tǒng)統(tǒng)計(jì)信息,供通過(guò)網(wǎng)絡(luò)通信層與并行文件系統(tǒng)客戶(hù)代理模塊通信用;遷移管理模塊,對(duì)所有文件,維護(hù)一個(gè)文件訪問(wèn)表,該表采用哈系表結(jié)構(gòu),鍵值為文件的inode節(jié)點(diǎn)值;文件訪問(wèn)表內(nèi)容包括文件inode節(jié)點(diǎn)值,文件路徑,文件被訪問(wèn)總次數(shù),文件被訪問(wèn)總字節(jié)數(shù)和文件的位置;對(duì)在快速數(shù)據(jù)服務(wù)器上的文件,所述遷移管理模塊維護(hù)一個(gè)最近最少被訪問(wèn)(Least Recently Used,LRU)列表,每個(gè)表項(xiàng)的內(nèi)容包括文件的inode節(jié)點(diǎn)值,指向該文件對(duì)應(yīng)文件訪問(wèn)表中元素的指針,每當(dāng)增量掃描模塊得知某文件被訪問(wèn)之后,遷移管理模塊將LRU表中該文件對(duì)應(yīng)的表項(xiàng)移動(dòng)到LRU表的表頭,每當(dāng)有文件從慢速數(shù)據(jù)服務(wù)器升級(jí)到快速數(shù)據(jù)服務(wù)器時(shí),遷移管理模塊都為該文件分配一個(gè)LRU表項(xiàng),并放入LRU表的鏢頭,每當(dāng)有文件從快速數(shù)據(jù)服務(wù)器降級(jí)到慢速數(shù)據(jù)服務(wù)器時(shí),遷移管理模塊都將該文件對(duì)應(yīng)的LRU表項(xiàng)從LRU表中刪除,并釋放該表項(xiàng)占用的內(nèi)存空間;同時(shí),遷移管理模塊維護(hù)兩個(gè)有序隊(duì)列升級(jí)隊(duì)列和降級(jí)隊(duì)列,分別由升級(jí)線程和降級(jí)線程處理隊(duì)列中的任務(wù);主動(dòng)降級(jí)模塊,根據(jù)快速數(shù)據(jù)服務(wù)器剩余空間情況,定期從快速數(shù)據(jù)服務(wù)器上文件的LRU隊(duì)列的隊(duì)尾取出一個(gè)文件,放入降級(jí)隊(duì)列中;增量掃描模塊,在啟動(dòng)時(shí)創(chuàng)建增量掃描線程,每隔一個(gè)掃描周期,所述掃描線程向所有數(shù)據(jù)服務(wù)器發(fā)送增量掃描請(qǐng)求,獲取數(shù)據(jù)服務(wù)器在該掃描周期內(nèi)的被訪問(wèn)情況;在數(shù)據(jù)服務(wù)器上部署一組運(yùn)行在Linux系統(tǒng)上的用戶(hù)空間程序,其中包括數(shù)據(jù)服務(wù)模塊,I/O記錄模塊和掃描處理模塊,其中數(shù)據(jù)服務(wù)模塊,通過(guò)網(wǎng)絡(luò)通信層收到并行文件系統(tǒng)客戶(hù)代理模塊發(fā)來(lái)的數(shù)據(jù)訪問(wèn)指令后,提供以下執(zhí)行數(shù)據(jù)操作的接口數(shù)據(jù)文件創(chuàng)建、數(shù)據(jù)文件刪除、讀數(shù)據(jù)文件、寫(xiě)數(shù)據(jù)文件,供通過(guò)網(wǎng)絡(luò)通信層與并行文件系統(tǒng)客戶(hù)代理模塊通信用;I/O記錄模塊,維護(hù)一個(gè)I/O訪問(wèn)記錄表,表項(xiàng)內(nèi)容包括文件的inode節(jié)點(diǎn)值,文件大小,文件在本掃描周期內(nèi)的被訪問(wèn)字節(jié)數(shù),文件在本掃描周期內(nèi)的被訪問(wèn)次數(shù);數(shù)據(jù)服務(wù)器每收到一個(gè)I/O請(qǐng)求,I/O記錄模塊從中解析出被訪問(wèn)文件的inode節(jié)點(diǎn)值,并以該文件的inode節(jié)點(diǎn)值為鍵值查找I/O訪問(wèn)記錄表;如果找到,將該文件對(duì)應(yīng)I/O訪問(wèn)記錄表中表項(xiàng)中的被訪問(wèn)次數(shù)增加1,被訪問(wèn)字節(jié)數(shù)增加本次I/O請(qǐng)求的大小;否則,創(chuàng)建一個(gè)新的I/O訪問(wèn)記錄表項(xiàng),將其inode節(jié)點(diǎn)值設(shè)為被訪問(wèn)文件的inode節(jié)點(diǎn)值,被訪問(wèn)次數(shù)初始化為1,被訪問(wèn)字節(jié)數(shù)初始化為本次I/O訪問(wèn)大小;掃描處理模塊,收到元數(shù)據(jù)服務(wù)器發(fā)來(lái)的掃描請(qǐng)求之后,遍歷I/O訪問(wèn)記錄表,對(duì)其中的每個(gè)被訪問(wèn)文件,從本地文件系統(tǒng)中讀取其對(duì)應(yīng)數(shù)據(jù)文件的大小,并同增量掃描模塊建立連接,按照擴(kuò)展數(shù)據(jù)表示格式XDR將本周期內(nèi)的被訪問(wèn)情況發(fā)送給所述元數(shù)據(jù)服務(wù)器的增量掃描模塊;發(fā)送的被訪問(wèn)情況內(nèi)容包括I/O訪問(wèn)記錄表,本掃描周期內(nèi)訪問(wèn)文件的數(shù)目,本掃描周期內(nèi)訪問(wèn)的總字節(jié)數(shù),本掃描周期內(nèi)執(zhí)行遷移的文件總大??;步驟(2).由步驟(1)所述的并行文件系統(tǒng)依次按以下步驟執(zhí)行海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法步驟(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ù)端口,同時(shí)解析出inode節(jié)點(diǎn)分配表,根據(jù)文件的inode節(jié)點(diǎn)值將其映射到對(duì)應(yīng)的數(shù)據(jù)服務(wù)器并存儲(chǔ);同時(shí)元數(shù)據(jù)服務(wù)器啟動(dòng)文件遷移模塊中的升級(jí)線程、降級(jí)線程以及增量掃描模塊中的文件掃描線程;元數(shù)據(jù)服務(wù)器初始化遷移管理模塊維護(hù)的文件訪問(wèn)表;步驟(2.2).初始化并行文件系統(tǒng)客戶(hù)代理模塊步驟(2.2.1).把配置文件讀入該客戶(hù)代理模塊,步驟(2.2.2).獲取元數(shù)據(jù)服務(wù)器的通信地址和服務(wù)端口,步驟(2.2.3).初始化該代理模塊的高速緩存子系統(tǒng),步驟(2.2.4).虛擬出子設(shè)備,供所述VFS子模塊存入用戶(hù)的VFS訪問(wèn)命令,并在處理完后將返回值寫(xiě)入,供VFS子模塊調(diào)用;步驟(2.3).按以下步驟執(zhí)行文件遷移管理步驟(2.3.1).每當(dāng)并行文件系統(tǒng)客戶(hù)代理模塊調(diào)用元數(shù)據(jù)服務(wù)器上的元數(shù)據(jù)服務(wù)模塊創(chuàng)建新的文件,遷移管理模塊都會(huì)在文件訪問(wèn)表中為該文件創(chuàng)建新的訪問(wèn)表項(xiàng);步驟(2.3.2).每當(dāng)并行文件系統(tǒng)客戶(hù)代理模塊調(diào)用數(shù)據(jù)服務(wù)器上的數(shù)據(jù)服務(wù)模塊對(duì)文件進(jìn)行訪問(wèn)時(shí),I/O記錄模塊都會(huì)根據(jù)訪問(wèn)信息更新數(shù)據(jù)服務(wù)器上的I/O訪問(wèn)記錄表,并更新本掃描周期內(nèi)的訪問(wèn)記錄變量;步驟(2.3.3).元數(shù)據(jù)服務(wù)器的增量掃描模塊在每個(gè)掃描周期結(jié)束時(shí)向所有數(shù)據(jù)服務(wù)器發(fā)送增量掃描指令;步驟(2.3.4).數(shù)據(jù)服務(wù)器收到元數(shù)據(jù)服務(wù)器發(fā)來(lái)的增量掃描指令后,同元數(shù)據(jù)服務(wù)器建立連接,將本掃描周期內(nèi)的訪問(wèn)信息返回給所述的增量掃描模塊,同時(shí)清空I/O訪問(wèn)記錄表和訪問(wèn)記錄變量中的內(nèi)容,以便統(tǒng)計(jì)下一個(gè)掃描周期內(nèi)的訪問(wèn)信息;步驟(2.3.5).元數(shù)據(jù)服務(wù)器中的增量掃描模塊將數(shù)據(jù)服務(wù)器返回的訪問(wèn)信息發(fā)送給遷移管理模塊,遷移管理模塊利用該信息更新文件訪問(wèn)表,如果被訪問(wèn)的文件位于快速數(shù)據(jù)服務(wù)器,那么遷移管理模塊將該文件在LRU表中對(duì)應(yīng)的表項(xiàng)移動(dòng)到LRU表的表頭;步驟(2.3.6).遷移管理模塊對(duì)本周期內(nèi)文件訪問(wèn)表被更新的文件進(jìn)行遷移決策,如果文件的訪問(wèn)熱度超過(guò)了預(yù)先設(shè)定的升級(jí)閾值,將其放入升級(jí)隊(duì)列中,由升級(jí)線程處理;同時(shí),如果文件訪問(wèn)表中記錄的某個(gè)文件未訪問(wèn)時(shí)間大于預(yù)先設(shè)定的降級(jí)閾值,將其放入降級(jí)隊(duì)列中,由降級(jí)線程處理;步驟(2.3.7).遷移管理模塊對(duì)降級(jí)線程進(jìn)行速率控制,它根據(jù)增量掃描模塊掃描得到的本掃描周期內(nèi)文件的訪問(wèn)熱度,判斷當(dāng)前系統(tǒng)是否處于空閑狀態(tài),如果空閑,遷移管理模塊通知降級(jí)線程,將降級(jí)隊(duì)列中的降級(jí)候選文件執(zhí)行降級(jí)操作;遷移管理模塊對(duì)升級(jí)線程不進(jìn)行速率控制,如果升級(jí)線程監(jiān)測(cè)到升級(jí)隊(duì)列中有升級(jí)任務(wù),即將該任務(wù)從隊(duì)列中取出,執(zhí)行降級(jí)操作。
全文摘要
基于海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的遷移管理方法屬于數(shù)據(jù)遷移領(lǐng)域,其特征在于各前端主機(jī)上的并行文件系統(tǒng)客戶(hù)代理軟件實(shí)現(xiàn)對(duì)VFS訪問(wèn)的支持;元數(shù)據(jù)服務(wù)器負(fù)責(zé)執(zhí)行增量掃描,遷移管理以及速率控制等操作,實(shí)現(xiàn)對(duì)海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)中前端應(yīng)用的性能保證。數(shù)據(jù)服務(wù)器按照性能高低劃分為快速數(shù)據(jù)服務(wù)器和慢速數(shù)據(jù)服務(wù)器,對(duì)元數(shù)據(jù)服務(wù)器發(fā)來(lái)的增量掃描指令進(jìn)行處理并返回掃描信息,同時(shí)執(zhí)行元數(shù)據(jù)服務(wù)器發(fā)來(lái)的文件遷移命令。該方法根據(jù)負(fù)載情況對(duì)數(shù)據(jù)遷移過(guò)程進(jìn)行調(diào)度,根據(jù)快速設(shè)備剩余空間情況進(jìn)行主動(dòng)降級(jí),降低了遷移過(guò)程對(duì)前端應(yīng)用的影響,提高了快速設(shè)備剩余空間比率,增強(qiáng)了海量數(shù)據(jù)分級(jí)存儲(chǔ)系統(tǒng)的自管理性。
文檔編號(hào)G06F17/30GK101101563SQ200710119359
公開(kāi)日2008年1月9日 申請(qǐng)日期2007年7月23日 優(yōu)先權(quán)日2007年7月23日
發(fā)明者于得水, 張廣艷, 舒繼武, 康 陳 申請(qǐng)人:清華大學(xué)