本技術(shù)屬基于大數(shù)據(jù),特別涉及基于索引的海量小文件存儲(chǔ)系統(tǒng)與方法。
背景技術(shù):
1、固態(tài)硬盤的存儲(chǔ)介質(zhì)一般是采用閃存(flash芯片)作為存儲(chǔ)介質(zhì)。
2、機(jī)械硬盤用磁盤作為存儲(chǔ)介質(zhì),機(jī)械硬盤讀寫速度依賴于電機(jī)的轉(zhuǎn)速,因?yàn)樾枰揽侩姍C(jī)帶動(dòng)磁盤高速轉(zhuǎn)動(dòng)使磁頭找到指定位置進(jìn)行讀寫。
3、中國(guó)專利申請(qǐng)?zhí)枴?024100198586”,申請(qǐng)名稱“基于索引的海量小文件存儲(chǔ)系統(tǒng)與方法”提出一種存儲(chǔ)海量小文件的系統(tǒng)與方法。
4、中國(guó)專利申請(qǐng)?zhí)枴?024100198586”,該技術(shù)主要特點(diǎn):采用在線合并方式,用戶的文件,先寫入緩存層的緩存對(duì)象中,并把客戶端文件和緩存對(duì)象的映射關(guān)系,記錄在用戶文件所關(guān)聯(lián)的索引對(duì)象(meta對(duì)象)中;主節(jié)點(diǎn)收到客戶端的文件寫請(qǐng)求后,結(jié)合文件名的hash值,選擇一個(gè)緩存對(duì)象,以追加寫的方式,把數(shù)據(jù)寫入緩存對(duì)象中,同時(shí)把客戶文件和緩存對(duì)象的映射關(guān)系記錄在本地索引數(shù)據(jù)庫(kù)中;主節(jié)點(diǎn)收到寫請(qǐng)求后,如果當(dāng)前的緩存對(duì)象已寫入數(shù)據(jù)超過閾值后(默認(rèn)4m),則創(chuàng)建一個(gè)新緩存對(duì)象用來承載數(shù)據(jù)的寫入操作;主節(jié)點(diǎn)把當(dāng)前的操作日志(pglog)和數(shù)據(jù)打包寫入本地存儲(chǔ)的同時(shí),通過網(wǎng)絡(luò)發(fā)送給從節(jié)點(diǎn),所有從節(jié)點(diǎn)寫入成功后再給客戶端回復(fù)寫成功的響應(yīng);寫操作日志(pglog)在記錄緩存對(duì)象的操作類型的同時(shí),同時(shí)記錄本次寫入操作所關(guān)聯(lián)的客戶文件名。
5、中國(guó)專利申請(qǐng)?zhí)枴?024100198586”,主要針對(duì)對(duì)象存儲(chǔ)場(chǎng)景,對(duì)文件系統(tǒng)的場(chǎng)景不支持,且無(wú)法支持海量小文件場(chǎng)景從緩存池回刷到后端池;為了提高讀寫效率,將小文件先寫入全閃陣列中組成的緩存池中,在小文件刪除場(chǎng)景下,需要依賴日志判斷有效緩存對(duì)象有效數(shù)據(jù)的長(zhǎng)度,導(dǎo)致每次需要遍歷數(shù)據(jù),無(wú)法對(duì)緩存池空間進(jìn)行快速回收。
6、隨著大規(guī)模的小文件網(wǎng)絡(luò)存儲(chǔ)的廣泛應(yīng)用,小文件的存儲(chǔ)效率成為系統(tǒng)的重大瓶頸,比如中國(guó)海量用戶,開始廣泛使用云端服務(wù)來存儲(chǔ)管理文字文件,在編輯文字過程中,不同的存儲(chǔ)版本對(duì)應(yīng)一個(gè)臨時(shí)文件,最終定稿后,之前存儲(chǔ)的臨時(shí)文件需要?jiǎng)h除,這種應(yīng)用場(chǎng)景中,如何提高臨時(shí)小文件的緩存和存儲(chǔ)效率,是亟待解決的技術(shù)問題。
7、縮略語(yǔ)和關(guān)鍵術(shù)語(yǔ)定義
8、mb,英文簡(jiǎn)寫,計(jì)算機(jī)中的一種儲(chǔ)存單位,全稱mbyte。mb(全稱mbyte):計(jì)算機(jī)中的一種儲(chǔ)存單位,讀作“兆”。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明,建立對(duì)應(yīng)緩存對(duì)象的緩存對(duì)象索引,用緩存對(duì)象索引記錄緩存對(duì)象中文件的老化程度、文件刪除后的剩余數(shù)量,根據(jù)緩存對(duì)象索引中記錄信息,提升了緩存對(duì)象數(shù)據(jù)空間的存儲(chǔ)利用效率,對(duì)于在緩存期間刪除完的小文件,不用寫入后端大對(duì)象,大幅度提升了系統(tǒng)性能,對(duì)于部分刪除小文件的緩存對(duì)象,在寫入后端大對(duì)象過程中合并成為一個(gè)新的后端大對(duì)象,提高了后端大對(duì)象的存儲(chǔ)效率。
2、一種基于索引的海量小文件存儲(chǔ)方法,寫入小文件時(shí),緩存進(jìn)程a按順序?qū)懭刖彺鎸?duì)象a,在緩存對(duì)象索引a中增加緩存對(duì)象a的緩存小文件數(shù)量,在小文件索引中記錄小文件與緩存對(duì)象a的對(duì)應(yīng)關(guān)系;小文件索引中記錄小文件的大小,存儲(chǔ)的開始位置;寫入小文件時(shí),緩存進(jìn)程b按順序?qū)懭刖彺鎸?duì)象b,在緩存對(duì)象索引b中增加緩存對(duì)象b的緩存小文件數(shù)量,在小文件索引中記錄小文件與緩存對(duì)象b的對(duì)應(yīng)關(guān)系;小文件索引中記錄小文件的大小,存儲(chǔ)的開始位置;寫入小文件時(shí),緩存進(jìn)程c按順序?qū)懭刖彺鎸?duì)象c,在緩存對(duì)象索引c中增加緩存對(duì)象c的緩存小文件數(shù)量,在小文件索引中記錄小文件與緩存對(duì)象c的對(duì)應(yīng)關(guān)系;小文件索引中記錄小文件的大小,存儲(chǔ)的開始位置;數(shù)據(jù)老化度統(tǒng)計(jì)進(jìn)程統(tǒng)計(jì)緩存對(duì)象中數(shù)據(jù)緩存的時(shí)間長(zhǎng)度,獲得每個(gè)緩存對(duì)象的數(shù)據(jù)老化度,數(shù)據(jù)老化度等于緩存對(duì)象中數(shù)據(jù)寫入的時(shí)長(zhǎng);后端存儲(chǔ)進(jìn)程k對(duì)緩存對(duì)象a、緩存對(duì)象b、緩存對(duì)象c的數(shù)據(jù)老化度進(jìn)行排序,將數(shù)據(jù)老化度達(dá)到設(shè)定值或者寫入數(shù)據(jù)大小超過閾值的緩存對(duì)象鎖定寫入,停止寫入新數(shù)據(jù);后端存儲(chǔ)進(jìn)程k將鎖定寫入的緩存對(duì)象中的數(shù)據(jù),寫入到后端大對(duì)象中,小文件索引中更新小文件與后端大對(duì)象的對(duì)應(yīng)關(guān)系。
3、根據(jù)上述基于索引的海量小文件存儲(chǔ)方法,對(duì)完成寫入后端大對(duì)象的緩存對(duì)象統(tǒng)計(jì)讀取熱度;上述讀取熱度等于設(shè)定時(shí)間內(nèi),緩存對(duì)象中小文件的讀取次數(shù);緩存對(duì)象清除進(jìn)程q清除讀取熱度等于零的緩存對(duì)象所緩存的數(shù)據(jù),釋放存儲(chǔ)空間。
4、上述數(shù)據(jù)老化度等于緩存對(duì)象中最后一個(gè)數(shù)據(jù)寫入的時(shí)長(zhǎng)或者第一個(gè)數(shù)據(jù)寫入的時(shí)長(zhǎng)。
5、根據(jù)上述基于索引的海量小文件存儲(chǔ)方法,收到刪除小文件命令,緩存服務(wù)器,查詢小文件索引,找出小文件緩存對(duì)象,如果上述小文件未寫入后端大對(duì)象;在上述小文件索引標(biāo)記上述小文件被刪除,在緩存對(duì)象索引中,更新緩存小文件數(shù)量;當(dāng)上述緩存對(duì)象中的小文件的數(shù)量等于零時(shí),刪除上述緩存對(duì)象;如果上述緩存對(duì)象有對(duì)應(yīng)的后端大對(duì)象,刪除上述緩存對(duì)象關(guān)聯(lián)的后端大對(duì)象。
6、根據(jù)上述基于索引的海量小文件存儲(chǔ)方法,上述緩存對(duì)象的數(shù)據(jù)老化度大于設(shè)定,新建一個(gè)緩存對(duì)象索引,新建一個(gè)后端大對(duì)象與上述新建緩存對(duì)象索引對(duì)應(yīng),將未刪除的緩存對(duì)象中的小文件寫入新建后端大對(duì)象;上述小文件為未刪除小文件,更新上述小文件索引。
7、根據(jù)上述基于索引的海量小文件存儲(chǔ)方法,收到刪除小文件命令,查詢小文件索引,如果上述小文件已經(jīng)寫入后端大對(duì)象,獲取緩存對(duì)象索引,減少上述緩存對(duì)象索引記錄的小文件數(shù)量;如果上述緩存對(duì)象還緩存上述小文件的數(shù)據(jù),則刪除對(duì)應(yīng)數(shù)據(jù);在上述小文件索引標(biāo)記中刪除上述小文件的索引記錄。
8、根據(jù)上述基于索引的海量小文件存儲(chǔ)方法,后端大對(duì)象磁盤整理進(jìn)程,周期性讀取緩存對(duì)象索引,將有刪除小文件的后端大對(duì)象,讀取到內(nèi)存,形成內(nèi)存對(duì)象,上述內(nèi)存對(duì)象包括一個(gè)或一個(gè)以上后端大對(duì)象中未刪除小文件數(shù)據(jù);將上述內(nèi)存對(duì)象寫入新的后端大對(duì)象;對(duì)于完成寫入的后端大對(duì)象,建立新緩存對(duì)象索引,更新小文件索引;刪除原有緩存對(duì)象索引和原有后端大對(duì)象,釋放上述內(nèi)存對(duì)象。
9、根據(jù)上述基于索引的海量小文件存儲(chǔ)方法,上述內(nèi)存對(duì)象的空間大小等于上述后端大對(duì)象的空間大小。
10、根據(jù)上述基于索引的海量小文件存儲(chǔ)方法,上述緩存對(duì)象對(duì)應(yīng)緩存空間的大小為4mb、8mb、16mb、32mb或64mb;上述后端大對(duì)象對(duì)應(yīng)緩存空間的大小為緩存對(duì)象的整數(shù)倍。
11、一種基于索引的海量小文件存儲(chǔ)系統(tǒng),包括兩個(gè)以上的存儲(chǔ)服務(wù)器;一個(gè)存儲(chǔ)服務(wù)器中包括至少一個(gè)緩存裝置和至少一個(gè)存儲(chǔ)裝置,緩存裝置用于存儲(chǔ)緩存對(duì)象和緩存對(duì)象索引,存儲(chǔ)裝置用于存儲(chǔ)后端大對(duì)象;寫入小文件時(shí),按順序?qū)懭刖彺鎸?duì)象,在小文件索引中記錄小文件與緩存對(duì)象的對(duì)應(yīng)關(guān)系;小文件索引中記錄小文件的大小,緩存對(duì)象的開始位置;在緩存對(duì)象索引中記錄緩存對(duì)象的小文件數(shù)量;在緩存對(duì)象索引中記錄對(duì)應(yīng)緩存對(duì)象中數(shù)據(jù)緩存的時(shí)間長(zhǎng)度,獲得每個(gè)緩存對(duì)象的數(shù)據(jù)老化度;將數(shù)據(jù)老化度達(dá)到設(shè)定值或者寫入數(shù)據(jù)大小超過閾值的緩存對(duì)象鎖定寫入,停止寫入新數(shù)據(jù);將鎖定的緩存對(duì)象中的數(shù)據(jù),寫入到后端大對(duì)象中,小文件索引中更新小文件與后端大對(duì)象的對(duì)應(yīng)關(guān)系;在緩存對(duì)象索引中記錄對(duì)完成寫入后端大對(duì)象的緩存對(duì)象統(tǒng)計(jì)讀取熱度;上述讀取熱度等于設(shè)定時(shí)間內(nèi),緩存對(duì)象中小文件的讀取次數(shù);緩存對(duì)象清除進(jìn)程q清除讀取熱度等于零的緩存對(duì)象所緩存的數(shù)據(jù),釋放存儲(chǔ)空間。
12、根據(jù)上述的基于索引的海量小文件存儲(chǔ)系統(tǒng),緩存服務(wù)器收到刪除小文件命令,查詢小文件索引,找出小文件緩存對(duì)象,如果上述小文件未寫入后端大對(duì)象;在上述小文件索引標(biāo)記上述小文件被刪除,在緩存對(duì)象索引中,更新緩存小文件數(shù)量;當(dāng)上述緩存對(duì)象中的小文件的數(shù)量等于零時(shí),刪除上述緩存對(duì)象;如果上述緩存對(duì)象有對(duì)應(yīng)的后端大對(duì)象,刪除上述緩存對(duì)象關(guān)聯(lián)的后端大對(duì)象。
13、根據(jù)上述的基于索引的海量小文件存儲(chǔ)系統(tǒng),緩存服務(wù)器收到刪除小文件命令,查詢小文件索引,找出小文件緩存對(duì)象,如果上述小文件未寫入后端大對(duì)象;在上述小文件索引標(biāo)記上述小文件被刪除,在緩存對(duì)象索引中,更新緩存小文件數(shù)量;上述緩存對(duì)象的數(shù)據(jù)老化度大于設(shè)定,新建一個(gè)緩存對(duì)象索引,新建一個(gè)后端大對(duì)象與上述新建緩存對(duì)象索引對(duì)應(yīng),將未刪除的緩存對(duì)象中的小文件寫入新建后端大對(duì)象;上述小文件為未刪除小文件,更新上述小文件索引。
14、根據(jù)上述的基于索引的海量小文件存儲(chǔ)系統(tǒng),緩存服務(wù)器收到刪除小文件命令,查詢小文件索引,如果上述小文件已經(jīng)寫入后端大對(duì)象,獲取緩存對(duì)象索引,減少上述緩存對(duì)象索引記錄的小文件數(shù)量;如果上述緩存對(duì)象還緩存上述小文件的數(shù)據(jù),則刪除對(duì)應(yīng)數(shù)據(jù);在上述小文件索引標(biāo)記中刪除上述小文件的索引記錄;后端大對(duì)象磁盤整理進(jìn)程,周期性讀取緩存對(duì)象索引,將有刪除小文件的后端大對(duì)象,讀取到內(nèi)存,形成內(nèi)存對(duì)象,上述內(nèi)存對(duì)象包括一個(gè)或一個(gè)以上后端大對(duì)象中未刪除小文件數(shù)據(jù);將上述內(nèi)存對(duì)象寫入新的后端大對(duì)象;對(duì)于完成寫入的后端大對(duì)象,建立新緩存對(duì)象索引,更新小文件索引;刪除原有緩存對(duì)象索引和原有后端大對(duì)象,釋放上述內(nèi)存對(duì)象。
15、上述技術(shù)方案的技術(shù)效果之一是:建立對(duì)應(yīng)緩存對(duì)象的緩存對(duì)象索引,用緩存對(duì)象索引記錄緩存對(duì)象中文件的老化程度、文件刪除后的剩余數(shù)量,根據(jù)緩存對(duì)象索引中記錄信息,提升了緩存對(duì)象數(shù)據(jù)空間的存儲(chǔ)利用效率。
16、上述技術(shù)方案的技術(shù)效果之一是:對(duì)于在緩存期間刪除完的小文件,不用寫入后端大對(duì)象,大幅度提升了系統(tǒng)性能,對(duì)于部分刪除小文件的緩存對(duì)象,在寫入后端大對(duì)象過程中合并成為一個(gè)新的后端大對(duì)象,提高了后端大對(duì)象的存儲(chǔ)效率。
17、上述技術(shù)方案的技術(shù)效果之一是:緩存對(duì)象還沒有寫入后端大對(duì)象,就完成刪除,能夠大幅度地節(jié)省寫入后端大對(duì)象的時(shí)間開銷,同時(shí)也降低了磁盤的磨損。
18、上述技術(shù)方案的技術(shù)效果之一是:對(duì)于刪除小文件命令,查詢小文件索引,獲取緩存對(duì)象索引,在緩存對(duì)象索引中標(biāo)記小文件的刪除,而不需要真正去刪除后端大對(duì)象中的文件,也不需要將后端大對(duì)象的文件讀取到緩存對(duì)象中,大幅度地提升了操作效率。
19、上述技術(shù)方案的技術(shù)效果之一是:對(duì)于有刪除小文件的后端大對(duì)象,通過內(nèi)存讀取合并,重新生成后端大對(duì)象,修改剩余小文件的索引關(guān)系,提高了后端大對(duì)象的磁盤利用效率。
20、上述技術(shù)方案的技術(shù)效果之一是:在重新生成后端大對(duì)象后,再刪除老的后端大對(duì)象,是的數(shù)據(jù)不會(huì)丟失,提高了數(shù)據(jù)的安全性能。