本申請涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,特別涉及一種臨時(shí)數(shù)據(jù)的寫入、讀取方法及寫入、讀取裝置。
背景技術(shù):
在目前的高性能計(jì)算環(huán)境下,應(yīng)用程序通常運(yùn)行在幾百臺甚至上千臺計(jì)算節(jié)點(diǎn)組成的集群上,這些計(jì)算節(jié)點(diǎn)之間一般通過以太網(wǎng)或者無限帶寬(Infiniband)網(wǎng)絡(luò)互聯(lián)。集群一般配有一個或者多個利用SAN(Storage Area Network,存儲區(qū)域網(wǎng)絡(luò))、NAS(Network Attached Storage,網(wǎng)絡(luò)附屬存儲)技術(shù)連接起來的集中式存儲設(shè)備,每個計(jì)算節(jié)點(diǎn)可能會配有一個或多個本地存儲設(shè)備。隨著數(shù)據(jù)存儲技術(shù)的發(fā)展以及應(yīng)用程序的一些需求,在這些存儲設(shè)備中可能存在介質(zhì)、特性各不相同的設(shè)備,例如固態(tài)硬盤、機(jī)械硬盤等。這樣就夠成了一個異構(gòu)的多級的存儲環(huán)境,應(yīng)用程序就運(yùn)行在這樣的環(huán)境下。
在程序運(yùn)行的過程中會產(chǎn)生一些臨時(shí)數(shù)據(jù)。當(dāng)臨時(shí)數(shù)據(jù)需要在計(jì)算節(jié)點(diǎn)之間共享的時(shí)候,它們會被存放在集中存儲上,否則,一般存放在本地存儲上。隨著應(yīng)用程序?qū)?shù)據(jù)讀寫速度的要求越來越高,集中存儲的峰值帶寬已經(jīng)無法滿足某些應(yīng)用程序?qū)εR時(shí)數(shù)據(jù)的讀寫要求。而且隨著并發(fā)的讀寫請求數(shù)量的增加,集中存儲的吞吐率會有明顯降低,數(shù)據(jù)讀寫的壓力進(jìn)一步提高。然而很多應(yīng)用程序的實(shí)現(xiàn)中對節(jié)點(diǎn)之間的網(wǎng)絡(luò)資源使用并不多,節(jié)點(diǎn)之間的網(wǎng)絡(luò)帶寬利用率很低,從而導(dǎo)致臨時(shí)數(shù)據(jù)寫入和讀取的效率也很低。
應(yīng)該注意,上面對技術(shù)背景的介紹只是為了方便對本申請的技術(shù)方案進(jìn)行清楚、完整的說明,并方便本領(lǐng)域技術(shù)人員的理解而闡述的。不能僅僅因?yàn)檫@些方案在本申請的背景技術(shù)部分進(jìn)行了闡述而認(rèn)為上述技術(shù)方案為本領(lǐng)域技術(shù)人員所公知。
技術(shù)實(shí)現(xiàn)要素:
本申請實(shí)施方式的目的在于提供一種臨時(shí)數(shù)據(jù)的寫入、讀取方法及寫入、讀取裝置,能夠提高臨時(shí)數(shù)據(jù)寫入和讀取的效率。
為實(shí)現(xiàn)上述目的,本申請一方面提供一種臨時(shí)數(shù)據(jù)的寫入方法,所述方法包括:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)寫入指令,所述數(shù)據(jù)寫入指令中至少包括邏輯路徑、指定存儲層級以及待寫入數(shù)據(jù)的指定生命周期信息;所述預(yù)設(shè)存儲系統(tǒng)中包括用于存儲元數(shù)據(jù)文件和臨時(shí)文件的存儲介質(zhì),所述存儲介質(zhì)按照存儲層級進(jìn)行劃分;判斷在所述預(yù)設(shè)存儲系統(tǒng)中是否存在所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件;當(dāng)所述預(yù)設(shè)存儲系統(tǒng)中存在所述目標(biāo)元數(shù)據(jù)文件時(shí),根據(jù)所述目標(biāo)元數(shù)據(jù)文件,確定目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì);判斷所述原始存儲介質(zhì)所屬的原始存儲層級是否與所述指定存儲層級一致,并根據(jù)判斷結(jié)果對所述目標(biāo)臨時(shí)文件進(jìn)行處理;在處理后的目標(biāo)臨時(shí)文件中寫入數(shù)據(jù)。
進(jìn)一步的,判斷在所述預(yù)設(shè)存儲系統(tǒng)中是否存在所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件包括:根據(jù)所述邏輯路徑以及存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,確定所述數(shù)據(jù)寫入指令對應(yīng)的目標(biāo)路徑;當(dāng)所述目標(biāo)路徑下存在元數(shù)據(jù)文件時(shí),將所述目標(biāo)路徑下存放的元數(shù)據(jù)文件作為所述目標(biāo)元數(shù)據(jù)文件;當(dāng)所述目標(biāo)路徑下不存在元數(shù)據(jù)文件時(shí),判定在所述預(yù)設(shè)存儲系統(tǒng)中不存在所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件。
進(jìn)一步的,在判斷在所述預(yù)設(shè)存儲系統(tǒng)中是否存在所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件之后,所述方法還包括:當(dāng)在所述預(yù)設(shè)存儲系統(tǒng)中存在所述目標(biāo)元數(shù)據(jù)文件時(shí),判斷所述目標(biāo)元數(shù)據(jù)文件對應(yīng)的目標(biāo)臨時(shí)文件是否過期;相應(yīng)地,根據(jù)所述目標(biāo)元數(shù)據(jù)文件,確定目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì)包括:當(dāng)所述目標(biāo)臨時(shí)文件未過期時(shí),將所述目標(biāo)元數(shù)據(jù)文件中記錄的存儲介質(zhì)標(biāo)識作為所述目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì)的標(biāo)識。
進(jìn)一步的,所述方法還包括:當(dāng)所述目標(biāo)臨時(shí)文件過期時(shí),刪除所述目標(biāo)臨時(shí)文件,并在所述指定存儲層級對應(yīng)的存儲介質(zhì)中確定剩余容量最大的目標(biāo)存儲介質(zhì);生成包含所述目標(biāo)存儲介質(zhì)的標(biāo)識以及所述指定生命周期信息的新建元數(shù)據(jù)文件,并將所述新建元數(shù)據(jù)文件替換所述目標(biāo)元數(shù)據(jù)文件;根據(jù)所述目標(biāo)存儲介質(zhì)的物理路徑以及所述邏輯路徑,生成臨時(shí)文件存儲路徑,并在所述臨時(shí)文件存儲路徑下創(chuàng)建臨時(shí)文件。
進(jìn)一步的,所述預(yù)設(shè)存儲系統(tǒng)與配置文件相關(guān)聯(lián),所述配置文件中包括存儲介質(zhì)的標(biāo)識、存儲介質(zhì)的物理路徑、存儲介質(zhì)中數(shù)據(jù)的類型、存儲數(shù)據(jù)所屬的存儲層級以及存儲介質(zhì)的容量中的至少一種;相應(yīng)地,在判斷所述原始存儲介質(zhì)所屬的原始存儲層級是否與所述指定存儲層級一致之前,所述方法還包括:根據(jù)所述原始存儲介質(zhì)的標(biāo)識,從所述配置文件中確定所述原始存儲介質(zhì)所屬的原始存儲層級。
進(jìn)一步的,判斷所述目標(biāo)元數(shù)據(jù)文件對應(yīng)的目標(biāo)臨時(shí)文件是否過期包括:獲取所述目標(biāo)臨時(shí)文件最后一次被讀取的第一時(shí)間以及最后一次被寫入的第二時(shí)間,并將所述第一時(shí)間和所述第二時(shí)間中的較晚者作為所述目標(biāo)臨時(shí)文件最近一次的使用時(shí)間;計(jì)算所述最近一次的使用時(shí)間與系統(tǒng)當(dāng)前時(shí)間的時(shí)間差,當(dāng)所述時(shí)間差大于所述目標(biāo)臨時(shí)文件的生命周期時(shí),判定所述目標(biāo)臨時(shí)文件過期;當(dāng)所述時(shí)間差小于或者等于所述目標(biāo)臨時(shí)文件的生命周期時(shí),判定所述目標(biāo)臨時(shí)文件未過期。
進(jìn)一步的,根據(jù)判斷結(jié)果對所述目標(biāo)臨時(shí)文件進(jìn)行處理包括:當(dāng)所述原始存儲層級與所述指定存儲層級不一致時(shí),在所述指定存儲層級對應(yīng)的存儲介質(zhì)中確定剩余容量最大的目標(biāo)存儲介質(zhì);生成包含所述目標(biāo)存儲介質(zhì)的標(biāo)識以及所述指定生命周期信息的元數(shù)據(jù)文件,并將生成的所述元數(shù)據(jù)文件替換所述目標(biāo)元數(shù)據(jù)文件;根據(jù)所述目標(biāo)存儲介質(zhì)的物理路徑以及所述邏輯路徑,生成目標(biāo)轉(zhuǎn)移路徑;將所述目標(biāo)臨時(shí)文件從所述原始存儲介質(zhì)中轉(zhuǎn)移至所述目標(biāo)轉(zhuǎn)移路徑下。
進(jìn)一步的,所述方法還包括:當(dāng)所述預(yù)設(shè)存儲系統(tǒng)中不存在所述目標(biāo)元數(shù)據(jù)文件時(shí),在所述指定存儲層級對應(yīng)的存儲介質(zhì)中確定剩余容量最大的目標(biāo)存儲介質(zhì);生成包含所述目標(biāo)存儲介質(zhì)的標(biāo)識以及所述指定生命周期信息的新建元數(shù)據(jù)文件;根據(jù)所述邏輯路徑以及存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,生成元數(shù)據(jù)存儲路徑,并將所述新建元數(shù)據(jù)文件存放于所述元數(shù)據(jù)存儲路徑下;根據(jù)所述目標(biāo)存儲介質(zhì)的物理路徑以及所述邏輯路徑,生成臨時(shí)文件存儲路徑,并在所述臨時(shí)文件存儲路徑下創(chuàng)建臨時(shí)文件,并在創(chuàng)建的臨時(shí)文件中寫入數(shù)據(jù)。
進(jìn)一步的,所述方法還包括:按照預(yù)設(shè)周期檢測所述處理后的目標(biāo)臨時(shí)文件,當(dāng)所述處理后的目標(biāo)臨時(shí)文件已過期并且當(dāng)前沒有進(jìn)程在訪問所述處理后的目標(biāo)臨時(shí)文件時(shí),刪除所述處理后的目標(biāo)臨時(shí)文件以及所述處理后的目標(biāo)臨時(shí)文件對應(yīng)的元數(shù)據(jù)文件。
為實(shí)現(xiàn)上述目的,本申請另一方面還提供一種臨時(shí)數(shù)據(jù)的寫入裝置,所述裝置包括存儲器、處理器以及存儲在所述存儲器上并可以在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)以下步驟:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)寫入指令,所述數(shù)據(jù)寫入指令中至少包括邏輯路徑、指定存儲層級以及待寫入數(shù)據(jù)的指定生命周期信息;所述預(yù)設(shè)存儲系統(tǒng)中包括按照存儲層級進(jìn)行劃分的存儲介質(zhì),所述預(yù)設(shè)存儲系統(tǒng)中存儲元數(shù)據(jù)文件和臨時(shí)文件;判斷在所述預(yù)設(shè)存儲系統(tǒng)中是否存在所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件;當(dāng)所述預(yù)設(shè)存儲系統(tǒng)中存在所述目標(biāo)元數(shù)據(jù)文件時(shí),根據(jù)所述目標(biāo)元數(shù)據(jù)文件,確定目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì);判斷所述原始存儲介質(zhì)所屬的原始存儲層級是否與所述指定存儲層級一致,并根據(jù)判斷結(jié)果對所述目標(biāo)臨時(shí)文件進(jìn)行處理;在處理后的目標(biāo)臨時(shí)文件中寫入數(shù)據(jù)。
為實(shí)現(xiàn)上述目的,本申請實(shí)施方式還提供一種臨時(shí)數(shù)據(jù)的讀取方法,所述方法包括:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)讀取指令,所述數(shù)據(jù)讀取指令中至少包括邏輯路徑;所述預(yù)設(shè)存儲系統(tǒng)中包括用于存儲元數(shù)據(jù)文件和臨時(shí)文件的存儲介質(zhì),所述存儲介質(zhì)按照存儲層級進(jìn)行劃分;所述預(yù)設(shè)存儲系統(tǒng)與配置文件相關(guān)聯(lián),所述配置文件中至少包括存儲介質(zhì)的標(biāo)識和存儲介質(zhì)的物理路徑;根據(jù)所述邏輯路徑和存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,確定所述數(shù)據(jù)讀取指令對應(yīng)的目標(biāo)路徑,并從所述目標(biāo)路徑下讀取目標(biāo)元數(shù)據(jù)文件;根據(jù)所述目標(biāo)元數(shù)據(jù)文件中記錄的目標(biāo)存儲介質(zhì)的標(biāo)識,從所述配置文件中確定所述目標(biāo)存儲介質(zhì)的標(biāo)識對應(yīng)的目標(biāo)存儲介質(zhì)的物理路徑;根據(jù)所述邏輯路徑和所述目標(biāo)存儲介質(zhì)的物理路徑,確定目標(biāo)臨時(shí)文件的存儲路徑,并從所述存儲路徑處讀取所述目標(biāo)臨時(shí)文件。
為實(shí)現(xiàn)上述目的,本申請另一方面還提供一種臨時(shí)數(shù)據(jù)的讀取裝置,所述裝置包括存儲器、處理器以及存儲在所述存儲器上并可以在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)以下步驟:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)讀取指令,所述數(shù)據(jù)讀取指令中至少包括邏輯路徑;所述預(yù)設(shè)存儲系統(tǒng)中包括用于存儲元數(shù)據(jù)文件和臨時(shí)文件的存儲介質(zhì),所述存儲介質(zhì)按照存儲層級進(jìn)行劃分;所述預(yù)設(shè)存儲系統(tǒng)與配置文件相關(guān)聯(lián),所述配置文件中至少包括存儲介質(zhì)的標(biāo)識和存儲介質(zhì)的物理路徑;根據(jù)所述邏輯路徑和存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,確定所述數(shù)據(jù)讀取指令對應(yīng)的目標(biāo)路徑,并從所述目標(biāo)路徑下讀取目標(biāo)元數(shù)據(jù)文件;根據(jù)所述目標(biāo)元數(shù)據(jù)文件中記錄的目標(biāo)存儲介質(zhì)的標(biāo)識,從所述配置文件中確定所述目標(biāo)存儲介質(zhì)的標(biāo)識對應(yīng)的目標(biāo)存儲介質(zhì)的物理路徑;根據(jù)所述邏輯路徑和所述目標(biāo)存儲介質(zhì)的物理路徑,確定目標(biāo)臨時(shí)文件的存儲路徑,并從所述存儲路徑處讀取所述目標(biāo)臨時(shí)文件。
由以上本申請實(shí)施方式提供的技術(shù)方案可見,本申請中的預(yù)設(shè)存儲系統(tǒng)將存儲介質(zhì)按照存儲層級進(jìn)行劃分,并且在不同存儲層級的存儲介質(zhì)中可以存儲元數(shù)據(jù)文件和臨時(shí)文件。這樣,在對臨時(shí)文件進(jìn)行寫入時(shí),可以根據(jù)元數(shù)據(jù)文件尋址到臨時(shí)文件的具體位置,然后可以根據(jù)臨時(shí)文件的原始存儲層級與用戶提供的指定存儲層級之間的關(guān)系,對臨時(shí)文件進(jìn)行處理,最終可以對處理后的臨時(shí)文件進(jìn)行寫入。此外,在對臨時(shí)文件進(jìn)行讀取時(shí),同樣可以根據(jù)元數(shù)據(jù)文件對臨時(shí)文件進(jìn)行定位,從而可以對臨時(shí)文件進(jìn)行讀取。上述的臨時(shí)數(shù)據(jù)的寫入、讀取方法及寫入、讀取裝置,通過劃分存儲介質(zhì)以及元數(shù)據(jù)文件定位的方式,能夠提高臨時(shí)數(shù)據(jù)寫入和讀取的效率。
參照后文的說明和附圖,詳細(xì)公開了本申請的特定實(shí)施方式,指明了本申請的原理可以被采用的方式。應(yīng)該理解,本申請的實(shí)施方式在范圍上并不因而受到限制。在所附權(quán)利要求的精神和條款的范圍內(nèi),本申請的實(shí)施方式包括許多改變、修改和等同。
針對一種實(shí)施方式描述和/或示出的特征可以以相同或類似的方式在一個或更多個其它實(shí)施方式中使用,與其它實(shí)施方式中的特征相組合,或替代其它實(shí)施方式中的特征。
應(yīng)該強(qiáng)調(diào),術(shù)語“包括/包含”在本文使用時(shí)指特征、整件、步驟或組件的存在,但并不排除一個或更多個其它特征、整件、步驟或組件的存在或附加。
附圖說明
所包括的附圖用來提供對本申請實(shí)施方式的進(jìn)一步的理解,其構(gòu)成了說明書的一部分,用于例示本申請的實(shí)施方式,并與文字描述一起來闡釋本申請的原理。顯而易見地,下面描述中的附圖僅僅是本申請的一些實(shí)施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中:
圖1為本申請實(shí)施方式中臨時(shí)數(shù)據(jù)的寫入方法示意圖;
圖2為本申請實(shí)施方式中預(yù)設(shè)存儲系統(tǒng)的示意圖;
圖3為本申請實(shí)施方式中寫入臨時(shí)數(shù)據(jù)的流程示意圖;
圖4為本申請實(shí)施方式中臨時(shí)數(shù)據(jù)的寫入裝置的功能模塊圖;
圖5為本申請實(shí)施方式中臨時(shí)數(shù)據(jù)的讀取方法流程圖;
圖6為本申請實(shí)施方式中臨時(shí)數(shù)據(jù)的讀取裝置功能模塊圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實(shí)施方式中的附圖,對本申請實(shí)施方式中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施方式僅僅是本申請一部分實(shí)施方式,而不是全部的實(shí)施方式?;诒旧暾堉械膶?shí)施方式,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施方式,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。
本申請實(shí)施方式提供一種臨時(shí)數(shù)據(jù)的寫入方法,請參閱圖1和圖3,所述方法包括以下步驟。
S1:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)寫入指令,所述數(shù)據(jù)寫入指令中至少包括邏輯路徑、指定存儲層級以及待寫入數(shù)據(jù)的指定生命周期信息;所述預(yù)設(shè)存儲系統(tǒng)中包括用于存儲元數(shù)據(jù)文件和臨時(shí)文件的存儲介質(zhì),所述存儲介質(zhì)按照存儲層級進(jìn)行劃分。
在本實(shí)施方式中,所述預(yù)設(shè)存儲系統(tǒng)的結(jié)構(gòu)可以如圖2所示,可以按照存儲介質(zhì)的不同將它們劃分為多個存儲層次,類似于Cache(高速緩存)的結(jié)構(gòu),每個層次可以有多個存儲介質(zhì),每個存儲介質(zhì)可以對應(yīng)存儲介質(zhì)標(biāo)識。其中,同一個存儲介質(zhì)中可以劃分不同的存儲空間,每個存儲空間可以對應(yīng)一個存儲介質(zhì)標(biāo)識,這樣,同一個存儲介質(zhì)可能存在不同的存儲介質(zhì)標(biāo)識。越上層的存儲介質(zhì)對應(yīng)的速度越快,一般來說容量越小。例如,L1存儲層級(Cache層)的可以是RAM(Random-Access Memory,隨機(jī)存取存儲器),L2存儲層級可以是SSD(Solid State Drive,固態(tài)硬盤),L3存儲層級可以是HDD(Hard Disk Drive,機(jī)械硬盤)。
在本實(shí)施方式中,所述預(yù)設(shè)存儲系統(tǒng)還可以與配置文件相關(guān)聯(lián),所述配置文件中可以包括存儲介質(zhì)的標(biāo)識、存儲介質(zhì)的物理路徑、存儲介質(zhì)中數(shù)據(jù)的類型、存儲數(shù)據(jù)所屬的存儲層級以及存儲介質(zhì)的容量中的至少一種。配置文件的格式如表1所示。
表1配置文件的格式
從表1中可以看出,所述預(yù)設(shè)存儲系統(tǒng)中包括兩個存儲介質(zhì),分別為d0和d1,其中,d0中可以劃分出一部分空間用于存放元數(shù)據(jù)文件,該空間對應(yīng)的存儲介質(zhì)標(biāo)識為c,另一部分則可以作為L1存儲層級,用于存放臨時(shí)文件。d1可以作為L2存儲層級,全部用于存儲臨時(shí)文件。這樣,在本實(shí)施方式中,元數(shù)據(jù)文件可以存儲于d0中,其對應(yīng)的標(biāo)識為c,類型為meta。臨時(shí)文件可以存儲于d0和d1中,臨時(shí)文件對應(yīng)的標(biāo)識分別為d和e,數(shù)據(jù)類型均為data。
在本實(shí)施方式中,存放元數(shù)據(jù)文件的存儲介質(zhì)通常只有一個,例如表1中/d0/data/meta物理路徑指向的存儲介質(zhì)。
在本實(shí)施方式中,用戶準(zhǔn)備寫入臨時(shí)文件時(shí),可以提供數(shù)據(jù)寫入指令,所述數(shù)據(jù)寫入指令中可以至少包括邏輯路徑、指定存儲層級以及待寫入數(shù)據(jù)的指定生命周期信息。所述邏輯路徑例如可以是/UserPath1/UserFile1,所述指定存儲層級例如可以是L2,所述指定生命周期信息例如可以是30天。
S2:判斷在所述預(yù)設(shè)存儲系統(tǒng)中是否存在與所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件。
在本實(shí)施方式中,可以根據(jù)所述邏輯路徑以及存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,確定所述數(shù)據(jù)寫入指令對應(yīng)的目標(biāo)路徑。具體的,可以將所述邏輯路徑以及存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑拼接起來,形成所述目標(biāo)路徑。例如,存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑為/d0/data/meta,用戶提供的邏輯路徑為/UserPath1/UserFile1,那么所述目標(biāo)路徑可以為/d0/data/meta/UserPath1/UserFile1。
在本實(shí)施方式中,當(dāng)所述目標(biāo)路徑下存在元數(shù)據(jù)文件時(shí),表明用戶欲寫入的臨時(shí)文件在預(yù)設(shè)存儲系統(tǒng)中已經(jīng)存在,此時(shí)可以將所述目標(biāo)路徑下存放的元數(shù)據(jù)文件作為所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件。當(dāng)所述目標(biāo)路徑下不存在元數(shù)據(jù)文件時(shí),則可以判定在所述預(yù)設(shè)存儲系統(tǒng)中不存在所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件。
S3:當(dāng)所述預(yù)設(shè)存儲系統(tǒng)中存在所述目標(biāo)元數(shù)據(jù)文件時(shí),根據(jù)所述目標(biāo)元數(shù)據(jù)文件,確定目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì)。
在本實(shí)施方式中,所述目標(biāo)元數(shù)據(jù)文件中可以記錄目標(biāo)臨時(shí)文件所處的存儲介質(zhì)的標(biāo)識、所述目標(biāo)臨時(shí)文件的生命周期等信息。這樣,根據(jù)所述目標(biāo)元數(shù)據(jù)文件,便可以確定目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì)。
在本實(shí)施方式中,當(dāng)在所述預(yù)設(shè)存儲系統(tǒng)中存在所述目標(biāo)元數(shù)據(jù)文件時(shí),可以判斷所述目標(biāo)元數(shù)據(jù)文件對應(yīng)的目標(biāo)臨時(shí)文件是否過期;當(dāng)所述目標(biāo)臨時(shí)文件未過期時(shí),可以將所述目標(biāo)元數(shù)據(jù)文件中記錄的存儲介質(zhì)標(biāo)識作為所述目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì)的標(biāo)識,從而可以確定出目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì)。
在本實(shí)施方式中,當(dāng)所述目標(biāo)臨時(shí)文件過期時(shí),可以刪除所述目標(biāo)臨時(shí)文件。此時(shí)則需要重新建立一個新的臨時(shí)文件。具體的,可以在所述指定存儲層級對應(yīng)的存儲介質(zhì)中確定剩余容量最大的目標(biāo)存儲介質(zhì)。然后可以生成包含所述目標(biāo)存儲介質(zhì)的標(biāo)識以及所述指定生命周期信息的新建元數(shù)據(jù)文件,并將所述新建元數(shù)據(jù)文件替換所述目標(biāo)元數(shù)據(jù)文件。例如,在指定存儲層級對應(yīng)的存儲介質(zhì)中,剩余容量最大的目標(biāo)存儲介質(zhì)的標(biāo)識為d,所述指定生命周期信息為30天,這樣,便可以將存儲介質(zhì)標(biāo)識d和生命周期30天寫入新建元數(shù)據(jù)文件中,并用新建元數(shù)據(jù)文件替換所述目標(biāo)元數(shù)據(jù)文件。
在本實(shí)施方式中,根據(jù)所述配置文件,可以確定標(biāo)識為d的目標(biāo)存儲介質(zhì)對應(yīng)的物理路徑為/d0/data,這樣,根據(jù)所述目標(biāo)存儲介質(zhì)的物理路徑以及所述邏輯路徑,可以生成臨時(shí)文件存儲路徑。例如,所述邏輯路徑為/UserPath1/UserFile1,生成的臨時(shí)文件存儲路徑便可以為/d0/data/UserPath1/UserFile1。這樣,可以在所述臨時(shí)文件存儲路徑/d0/data/UserPath1/UserFile1下創(chuàng)建臨時(shí)文件。
在本實(shí)施方式中,在判斷目標(biāo)臨時(shí)文件是否過期時(shí),可以獲取所述目標(biāo)臨時(shí)文件最后一次被讀取的第一時(shí)間以及最后一次被寫入的第二時(shí)間,并將所述第一時(shí)間和所述第二時(shí)間中的較晚者作為所述目標(biāo)臨時(shí)文件最近一次的使用時(shí)間。然后可以計(jì)算所述最近一次的使用時(shí)間與系統(tǒng)當(dāng)前時(shí)間的時(shí)間差,這樣,當(dāng)所述時(shí)間差大于所述目標(biāo)臨時(shí)文件的生命周期時(shí),判定所述目標(biāo)臨時(shí)文件過期;當(dāng)所述時(shí)間差小于或者等于所述目標(biāo)臨時(shí)文件的生命周期時(shí),判定所述目標(biāo)臨時(shí)文件未過期。
在本實(shí)施方式中,當(dāng)所述預(yù)設(shè)存儲系統(tǒng)中不存在所述目標(biāo)元數(shù)據(jù)文件時(shí),可以在所述指定存儲層級對應(yīng)的存儲介質(zhì)中確定剩余容量最大的目標(biāo)存儲介質(zhì)。然后可以生成包含所述目標(biāo)存儲介質(zhì)的標(biāo)識以及所述指定生命周期信息的新建元數(shù)據(jù)文件。進(jìn)一步的,可以根據(jù)所述邏輯路徑以及存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,生成元數(shù)據(jù)存儲路徑,并將所述新建元數(shù)據(jù)文件存放于所述元數(shù)據(jù)存儲路徑下。最終,可以根據(jù)所述目標(biāo)存儲介質(zhì)的物理路徑以及所述邏輯路徑,生成臨時(shí)文件存儲路徑,并在所述臨時(shí)文件存儲路徑下創(chuàng)建臨時(shí)文件,并在創(chuàng)建的臨時(shí)文件中寫入數(shù)據(jù)。
S4:判斷所述原始存儲介質(zhì)所屬的原始存儲層級是否與所述指定存儲層級一致,并根據(jù)判斷結(jié)果對所述目標(biāo)臨時(shí)文件進(jìn)行處理。
在本實(shí)施方式中,可以預(yù)先根據(jù)所述原始存儲介質(zhì)的標(biāo)識,從所述配置文件中確定所述原始存儲介質(zhì)所屬的原始存儲層級。例如,所述原始存儲介質(zhì)的標(biāo)識為d,根據(jù)所述配置文件,其對應(yīng)的原始存儲層級為L1,而用戶提供的指定存儲層級為L2,這樣,所述原始存儲層級與所述指定存儲層級不一致。此時(shí),可以在所述指定存儲層級L2對應(yīng)的存儲介質(zhì)中確定剩余容量最大的目標(biāo)存儲介質(zhì)。假設(shè)剩余容量最大的目標(biāo)存儲介質(zhì)的標(biāo)識為d,然后可以生成包含所述目標(biāo)存儲介質(zhì)的標(biāo)識以及所述指定生命周期信息的元數(shù)據(jù)文件。具體的,生成的元數(shù)據(jù)文件中可以包括存儲介質(zhì)的標(biāo)識d和所述指定生命周期信息30天。然后可以將生成的所述元數(shù)據(jù)文件替換所述目標(biāo)元數(shù)據(jù)文件。
在本實(shí)施方式中,可以根據(jù)所述目標(biāo)存儲介質(zhì)的物理路徑以及所述邏輯路徑,生成目標(biāo)轉(zhuǎn)移路徑。具體的,所述目標(biāo)存儲介質(zhì)的標(biāo)識為d,根據(jù)所述配置文件,可以確定標(biāo)識為d的目標(biāo)存儲介質(zhì)對應(yīng)的物理路徑為/d0/data,這樣,根據(jù)所述目標(biāo)存儲介質(zhì)的物理路徑以及所述邏輯路徑,可以生成目標(biāo)轉(zhuǎn)移路徑。例如,所述邏輯路徑為/UserPath1/UserFile1,生成的目標(biāo)轉(zhuǎn)移路徑便可以為/d0/data/UserPath1/UserFile1。這樣,可以將所述目標(biāo)臨時(shí)文件從所述原始存儲介質(zhì)中轉(zhuǎn)移至所述目標(biāo)轉(zhuǎn)移路徑下。
在圖3中,盤符號可以表示存儲介質(zhì)的標(biāo)識,最終盤符號可以是所述目標(biāo)轉(zhuǎn)移路徑對應(yīng)的存儲介質(zhì)的標(biāo)識。判斷原來的臨時(shí)文件是否需要移動到新的存儲盤的依據(jù)就是原始存儲層級與指定存儲層級是否一致,一致時(shí)并且目標(biāo)臨時(shí)文件沒有過期,則無需移動;不一致時(shí)或者目標(biāo)臨時(shí)文件過期時(shí),則可能需要移動。
S5:在處理后的目標(biāo)臨時(shí)文件中寫入數(shù)據(jù)。
在本實(shí)施方式中,在對目標(biāo)臨時(shí)文件進(jìn)行上述的處理之后,便可以在處理后的目標(biāo)臨時(shí)文件中寫入數(shù)據(jù),以完成臨時(shí)數(shù)據(jù)的寫入過程。
在本實(shí)施方式中,為了能夠及時(shí)清理不必要的臨時(shí)數(shù)據(jù),節(jié)省存儲介質(zhì)的空間,可以按照預(yù)設(shè)周期檢測所述處理后的目標(biāo)臨時(shí)文件,當(dāng)所述處理后的目標(biāo)臨時(shí)文件已過期并且當(dāng)前沒有進(jìn)程在訪問所述處理后的目標(biāo)臨時(shí)文件時(shí),刪除所述處理后的目標(biāo)臨時(shí)文件以及所述處理后的目標(biāo)臨時(shí)文件對應(yīng)的元數(shù)據(jù)文件。
請參閱圖4,本申請實(shí)施方式還提供一種臨時(shí)數(shù)據(jù)的寫入裝置,所述裝置包括存儲器100、處理器200以及存儲在所述存儲器100上并可以在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器200執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)以下步驟:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)寫入指令,所述數(shù)據(jù)寫入指令中至少包括邏輯路徑、指定存儲層級以及待寫入數(shù)據(jù)的指定生命周期信息;所述預(yù)設(shè)存儲系統(tǒng)中包括按照存儲層級進(jìn)行劃分的存儲介質(zhì),所述預(yù)設(shè)存儲系統(tǒng)中存儲元數(shù)據(jù)文件和臨時(shí)文件;判斷在所述預(yù)設(shè)存儲系統(tǒng)中是否存在所述邏輯路徑對應(yīng)的目標(biāo)元數(shù)據(jù)文件;當(dāng)所述預(yù)設(shè)存儲系統(tǒng)中存在所述目標(biāo)元數(shù)據(jù)文件時(shí),根據(jù)所述目標(biāo)元數(shù)據(jù)文件,確定目標(biāo)臨時(shí)文件所處的原始存儲介質(zhì);判斷所述原始存儲介質(zhì)所屬的原始存儲層級是否與所述指定存儲層級一致,并根據(jù)判斷結(jié)果對所述目標(biāo)臨時(shí)文件進(jìn)行處理;在處理后的目標(biāo)臨時(shí)文件中寫入數(shù)據(jù)。
請參閱圖5,本申請實(shí)施方式還提供一種臨時(shí)數(shù)據(jù)的讀取方法,所述方法包括以下步驟。
S11:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)讀取指令,所述數(shù)據(jù)讀取指令中至少包括邏輯路徑;所述預(yù)設(shè)存儲系統(tǒng)中包括用于存儲元數(shù)據(jù)文件和臨時(shí)文件的存儲介質(zhì),所述存儲介質(zhì)按照存儲層級進(jìn)行劃分;所述預(yù)設(shè)存儲系統(tǒng)與配置文件相關(guān)聯(lián),所述配置文件中至少包括存儲介質(zhì)的標(biāo)識和存儲介質(zhì)的物理路徑;
S12:根據(jù)所述邏輯路徑和存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,確定所述數(shù)據(jù)讀取指令對應(yīng)的目標(biāo)路徑,并從所述目標(biāo)路徑下讀取目標(biāo)元數(shù)據(jù)文件;
S13:根據(jù)所述目標(biāo)元數(shù)據(jù)文件中記錄的目標(biāo)存儲介質(zhì)的標(biāo)識,從所述配置文件中確定所述目標(biāo)存儲介質(zhì)的標(biāo)識對應(yīng)的目標(biāo)存儲介質(zhì)的物理路徑;
S14:根據(jù)所述邏輯路徑和所述目標(biāo)存儲介質(zhì)的物理路徑,確定目標(biāo)臨時(shí)文件的存儲路徑,并從所述存儲路徑處讀取所述目標(biāo)臨時(shí)文件。
請參閱圖6,本申請實(shí)施方式還提供一種臨時(shí)數(shù)據(jù)的讀取裝置,所述裝置包括存儲器110、處理器210以及存儲在所述存儲器110上并可以在所述處理器210上運(yùn)行的計(jì)算機(jī)程序,所述處理器210執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)以下步驟:接收針對預(yù)設(shè)存儲系統(tǒng)的數(shù)據(jù)讀取指令,所述數(shù)據(jù)讀取指令中至少包括邏輯路徑;所述預(yù)設(shè)存儲系統(tǒng)中包括用于存儲元數(shù)據(jù)文件和臨時(shí)文件的存儲介質(zhì),所述存儲介質(zhì)按照存儲層級進(jìn)行劃分;所述預(yù)設(shè)存儲系統(tǒng)與配置文件相關(guān)聯(lián),所述配置文件中至少包括存儲介質(zhì)的標(biāo)識和存儲介質(zhì)的物理路徑;根據(jù)所述邏輯路徑和存放元數(shù)據(jù)文件的存儲介質(zhì)的物理路徑,確定所述數(shù)據(jù)讀取指令對應(yīng)的目標(biāo)路徑,并從所述目標(biāo)路徑下讀取目標(biāo)元數(shù)據(jù)文件;根據(jù)所述目標(biāo)元數(shù)據(jù)文件中記錄的目標(biāo)存儲介質(zhì)的標(biāo)識,從所述配置文件中確定所述目標(biāo)存儲介質(zhì)的標(biāo)識對應(yīng)的目標(biāo)存儲介質(zhì)的物理路徑;根據(jù)所述邏輯路徑和所述目標(biāo)存儲介質(zhì)的物理路徑,確定目標(biāo)臨時(shí)文件的存儲路徑,并從所述存儲路徑處讀取所述目標(biāo)臨時(shí)文件。
在本實(shí)施方式中,所述預(yù)設(shè)存儲系統(tǒng)可以是所述臨時(shí)數(shù)據(jù)的讀取裝置內(nèi)部的系統(tǒng),也可以是外部的系統(tǒng),本申請對比并不做限定,只要所述預(yù)設(shè)存儲系統(tǒng)和所述臨時(shí)數(shù)據(jù)的讀取裝置之間能夠進(jìn)行數(shù)據(jù)交互即可。
由以上本申請實(shí)施方式提供的技術(shù)方案可見,本申請中的預(yù)設(shè)存儲系統(tǒng)將存儲介質(zhì)按照存儲層級進(jìn)行劃分,并且在不同存儲層級的存儲介質(zhì)中可以存儲元數(shù)據(jù)文件和臨時(shí)文件。這樣,在對臨時(shí)文件進(jìn)行寫入時(shí),可以根據(jù)元數(shù)據(jù)文件尋址到臨時(shí)文件的具體位置,然后可以根據(jù)臨時(shí)文件的原始存儲層級與用戶提供的指定存儲層級之間的關(guān)系,對臨時(shí)文件進(jìn)行處理,最終可以對處理后的臨時(shí)文件進(jìn)行寫入。此外,在對臨時(shí)文件進(jìn)行讀取時(shí),同樣可以根據(jù)元數(shù)據(jù)文件對臨時(shí)文件進(jìn)行定位,從而可以對臨時(shí)文件進(jìn)行讀取。上述的臨時(shí)數(shù)據(jù)的寫入、讀取方法及寫入、讀取裝置,通過劃分存儲介質(zhì)以及元數(shù)據(jù)文件定位的方式,能夠提高臨時(shí)數(shù)據(jù)寫入和讀取的效率。
上面對本申請的各種實(shí)施方式的描述以描述的目的提供給本領(lǐng)域技術(shù)人員。其不旨在是窮舉的、或者不旨在將本發(fā)明限制于單個公開的實(shí)施方式。如上所述,本申請的各種替代和變化對于上述技術(shù)所屬領(lǐng)域技術(shù)人員而言將是顯而易見的。因此,雖然已經(jīng)具體討論了一些另選的實(shí)施方式,但是其它實(shí)施方式將是顯而易見的,或者本領(lǐng)域技術(shù)人員相對容易得出。本申請旨在包括在此已經(jīng)討論過的本發(fā)明的所有替代、修改、和變化,以及落在上述申請的精神和范圍內(nèi)的其它實(shí)施方式。
本說明書中的各個實(shí)施方式均采用遞進(jìn)的方式描述,各個實(shí)施方式之間相同相似的部分互相參見即可,每個實(shí)施方式重點(diǎn)說明的都是與其他實(shí)施方式的不同之處。
雖然通過實(shí)施方式描繪了本申請,本領(lǐng)域普通技術(shù)人員知道,本申請有許多變形和變化而不脫離本申請的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請的精神。