欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種固態(tài)硬盤的緩存控制方法及裝置與流程

文檔序號:12747962閱讀:330來源:國知局
一種固態(tài)硬盤的緩存控制方法及裝置與流程

本發(fā)明涉及數據存儲技術領域,特別是涉及一種固態(tài)硬盤的緩存控制方法及裝置。



背景技術:

在數據存儲技術領域,尤其是分布式存儲,需要大批量的讀取文件,如果直接從機械硬盤讀取則導致消耗時間過長,因此,現有的方法通常是將機械硬盤中的數據緩存至固態(tài)硬盤中的leveldb數據庫,當需要讀取時,則直接從固態(tài)硬盤中取出,再通過內存進行讀取。

由于固態(tài)硬盤的作用是二級緩存,因此,固態(tài)硬盤的利用率非常重要,如果固態(tài)硬盤中存在著大量的無用的數據,則當需要有新的數據緩存時,固態(tài)硬盤的緩存空間不足,由此可見,提高固態(tài)硬盤的利用率非常重要。

在現有技術中,為了提高固態(tài)硬盤的利用率,通常的方法是為leveldb數據庫中的數據設定一個TTL(Time To Live),來限定了數據的生命周期。但是該方案會有相應的弊端,因為在不同的時間段內寫入leveldb數據庫的數據的數量是不平均的,如果設定數據的TTL則不能充分的利用二級緩存的存儲空間,因此效率上也會受到相應的影響。舉例說明:如果在time1的時間段內,共寫入了99w條小文件數據,time2的時間段內寫入了1w條小文件數據。此時固態(tài)硬盤的利用率達到100%,則固態(tài)硬盤不能再作為二級緩存進行數據寫入,只有等到time1時間內寫入數據的生命期結束,此時磁盤的使用率為1%。通過例子可以看出,目前行業(yè)中的解決方案使得固態(tài)硬盤的使用率不能恒定在一定范圍內,而是上下波動嚴重,嚴重導致固態(tài)硬盤得不到充分的利用,甚至會出現磁盤使用率達到100%。

由此可見,如何保持固態(tài)硬盤使用率的穩(wěn)定性是本領域技術人員亟待解決地問題。



技術實現要素:

本發(fā)明的目的是提供一種固態(tài)硬盤的緩存控制方法,用于保持固態(tài)硬盤使用率的穩(wěn)定性。

為解決上述技術問題,本發(fā)明提供一種固態(tài)硬盤的緩存控制方法,包括:

為待緩存文件添加leveldb數據庫中的當前時間戳,并以包含有文件號和文件內容的格式插入到所述leveldb數據庫中;

將所述leveldb數據庫中的數據總量加1,將所述leveldb數據庫中具有當前時間戳的目標累積量加1;

判斷所述目標累積量是否大于第一預定值;

如果所述目標累積量大于所述第一預定值,則插入新的時間戳,并將所述新的時間戳作為當前時間戳;

如果所述目標累積量不大于所述第一預定值,則判斷當前數據總量是否大于第二預定值;

如果當前數據總量大于所述第二預定值,則刪除與最早時間戳對應的已緩存文件,并更新當前數據總量;

其中,第二預定值為所述固態(tài)硬盤首次達到預定利用率所對應的數據總量。

優(yōu)選地,還包括:記錄當前所述leveldb數據庫中各時間戳,以及記錄每個時間戳與對應的已緩存文件的對應關系。

優(yōu)選地,在所述刪除與最早時間戳對應的已緩存文件,并更新當前數據總量具體為:

統(tǒng)計所述最早時間戳對應的各已緩存文件的讀取次數,篩選出讀取次數超過預定次數的緩存文件,將這些緩存文件的時間戳更換為當前時間戳;將讀取次數未超過所述預定次數的緩存文件刪除,并更新當前數據總量。

優(yōu)選地,所述更新當前數據總量具體包括:

統(tǒng)計所述讀取次數未超過所述預定次數的緩存文件的數據量;

將當前數據總量減去所述數據量;

刪除所述最早時間戳。

優(yōu)選地,還包括:將當前所述leveldb數據庫中各時間戳以及每個時間戳與對應的已緩存文件的對應關系加載至內存中。

優(yōu)選地,所述文件號為原始文件號對應的哈希取余值。

優(yōu)選地,還包括:當接收到刪除請求時,根據所述刪除請求在所述leveldb數據庫中刪除對應的已緩存文件,并更新所述leveldb數據庫。

優(yōu)選地,所述預定利用率為80%。

優(yōu)選地,所述第二預定值為所述固態(tài)硬盤總量的80%。

為解決上述技術問題,本發(fā)明提供一種固態(tài)硬盤的緩存控制裝置,包括:

添加單元,用于為待緩存文件添加leveldb數據庫中的當前時間戳,并以包含有文件號和文件內容的格式插入到所述leveldb數據庫中;

計算單元,用于將所述leveldb數據庫中的數據總量加1,將所述leveldb數據庫中具有當前時間戳的目標累積量加1;

第一判斷單元,用于判斷所述目標累積量是否大于第一預定值;

插入單元,用于如果所述目標累積量大于所述第一預定值,則插入新的時間戳,并將所述新的時間戳作為當前時間戳;

第二判斷單元,用于如果所述目標累積量不大于所述第一預定值,則判斷當前數據總量是否大于第二預定值;

更新單元,用于如果當前數據總量大于所述第二預定值,則刪除與最早時間戳對應的已緩存文件,并更新當前數據總量;

其中,第二預定值為所述固態(tài)硬盤首次達到預定利用率所對應的數據總量。

本發(fā)明所提供的固態(tài)硬盤的緩存控制方法及裝置,包括:為待緩存文件添加leveldb數據庫中的當前時間戳,并以包含有文件號和文件內容的格式插入到leveldb數據庫中;將leveldb數據庫中的數據總量加1,將leveldb數據庫中具有當前時間戳的目標累積量加1;判斷目標累積量是否大于第一預定值;如果目標累積量大于第一預定值,則插入新的時間戳,并將新的時間戳作為當前時間戳;如果目標累積量不大于第一預定值,則判斷當前數據總量是否大于第二預定值;如果當前數據總量大于第二預定值,則刪除與最早時間戳對應的已緩存文件,并更新當前數據總量。很顯然,本方法中刪除已緩存文件并不是由于已緩存文件的生命周期到了,而是由當前數據庫中的數據總量決定的,即當達到設定的第二預定值時,才需要刪除已緩存文件,并且第二預定值為固態(tài)硬盤首次達到預定利用率所對應的數據總量,因此首次刪除已緩存文件由是否達到固態(tài)硬盤的預定利用率決定,同時記錄此時的數據總量作為數據總量上限,此后刪除已緩存文件由當前數據庫中的數據總量決定。更為重要的是,刪除的是與最早時間戳對應的已緩存文件,一個時間戳對應的已緩存文件是可以設定的,因此,可以有效保證固態(tài)硬盤的使用率維持在一個比較平穩(wěn)的水平,不易出現較大的波動。另外,多個已緩存文件可以具有同一個時間戳,因此,可以實現批量刪除,提高緩存的工作效率。

附圖說明

為了更清楚地說明本發(fā)明實施例,下面將對實施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為本發(fā)明實施例提供的一種固態(tài)硬盤的緩存控制方法的流程圖;

圖2為本發(fā)明實施例提供的一種緩存存儲結構的示意圖;

圖3為本發(fā)明實施例提供的一種固態(tài)硬盤的緩存控制裝置的結構圖。

具體實施方式

下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下,所獲得的所有其他實施例,都屬于本發(fā)明保護范圍。

本發(fā)明的核心是提供一種固態(tài)硬盤的緩存控制方法及裝置。

為了使本技術領域的人員更好地理解本發(fā)明方案,下面結合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。

圖1為本發(fā)明實施例提供的一種固態(tài)硬盤的緩存控制方法的流程圖。如圖1所示,包括:

S10:為待緩存文件添加leveldb數據庫中的當前時間戳,并以包含有文件號和文件內容的格式插入到leveldb數據庫中。

S11:將leveldb數據庫中的數據總量加1,將leveldb數據庫中具有當前時間戳的目標累積量加1。

S12:判斷目標累積量是否大于第一預定值。

如果是,進入步驟S13,如果否,進入步驟S14。

S13:插入新的時間戳,并將新的時間戳作為當前時間戳。

S14:判斷當前數據總量是否大于第二預定值。如果是,進入步驟S15。

S15:刪除與最早時間戳對應的已緩存文件,并更新當前數據總量。

其中,第二預定值為固態(tài)硬盤首次達到預定利用率所對應的數據總量。

Leveldb數據庫中數據是以(key,value)數據對的形式按照key從小到大有序存儲的,本發(fā)明中用文件號作為key,將文件內容作為value。為了便于刪除長時間不用的數據,即老化的數據,因此我們在每一條文件插入leveldb數據庫時,給該文件加一個時間戳??梢岳斫獾氖牵@個時間戳只是表明待緩存文件添加至leveldb數據庫的時間信息,另外,不同緩存文件的時間戳可以相同,也可以不同,即多個已緩存文件可以具有相同的時間戳。時間戳的設定可以精確到秒,用戶可以根據自身的存儲情況進行精度設定。

在具體實施中,具有同一個時間戳的文件的數量稱為累積量,這個累積量也有上限,即上文所述的第一預定值。目標累積量只是為了區(qū)分當前需要統(tǒng)計的累積量與其余的累積量,并沒有實質性含義。第一預定值可以根據實際情況設定,可以理解的是,如果設定的越小,則越能夠保證固態(tài)硬盤的使用率的平穩(wěn)性(因為,如果第一預定值設定為1000,則到了步驟S15時,就需要刪除1000個已緩存文件,如果第一預定值設定為100,則到了步驟S15時,就需要刪除100個已緩存文件)。但是第一預定值也不是越小越好,如果太小,則需要較多的時間戳,即需要不斷的插入新的時間戳,導致一次刪除已緩存文件的量較少,需要多次刪除。

因為有緩存文件寫入,因此,數據總量需要加1,例如,當前數據總量為9999,則寫入這個緩存文件后,數據總量就會變?yōu)?0000。如果當前時間戳為201606031556,則該文件的時間戳就是201606031556??梢岳斫獾氖?,對于時間戳201606031556來說,其可能為第一個時間戳也可能不是第一個時間戳,如果不是第一個時間戳,則其前面的時間戳就是201606031555,201606031554等。多個緩存文件可以具有相同的時間戳,例如,時間戳201606031556對應的文件號從1001開始,時間戳201606031555對應的文件號為1-1000。很顯然,文件號1-1000的緩存文件具有相同的時間戳,如果數據總量達到設定的第二預定值,則需要刪除一些緩存文件。由于每個緩存文件都具有一個時間戳,如果一個時間戳對應的緩存文件,其實就是批量刪除緩存文件。還以上文的例子繼續(xù)說明,如果時間戳201606031555為當前數據庫中最早時間戳,則刪除最早時間戳對應的已緩存文件,就是刪除文件號1-1000的緩存文件。需要說明的是,本發(fā)明中提到的最早時間戳是相對的,是當前數據庫中各個時間戳中相對最早的那個時間戳。

由于第二預定值為固態(tài)硬盤首次達到預定利用率所對應的數據總量,即可以理解為:首次刪除已緩存文件由是否達到固態(tài)硬盤的預定利用率決定,該利用率對應的數據總量作為上限即第二預定值,此后刪除已緩存文件由當前數據庫中的數據總量決定,即是否超過第二預定值決定。

本實施例提供的固態(tài)硬盤的緩存控制方法,為待緩存文件添加leveldb數據庫中的當前時間戳,并以包含有文件號和文件內容的格式插入到leveldb數據庫中;將leveldb數據庫中的數據總量加1,將leveldb數據庫中具有當前時間戳的目標累積量加1;判斷目標累積量是否大于第一預定值;如果目標累積量大于第一預定值,則插入新的時間戳,并將新的時間戳作為當前時間戳;如果目標累積量不大于第一預定值,則判斷當前數據總量是否大于第二預定值;如果當前數據總量大于第二預定值,則刪除與最早時間戳對應的已緩存文件,并更新當前數據總量。很顯然,本方法中刪除已緩存文件并不是由于已緩存文件的生命周期到了,而是由當前數據庫中的數據總量決定的,即當達到設定的第二預定值時,才需要刪除已緩存文件,并且第二預定值為固態(tài)硬盤首次達到預定利用率所對應的數據總量,因此首次刪除已緩存文件由是否達到固態(tài)硬盤的預定利用率決定,同時記錄此時的數據總量作為數據總量上限,此后刪除已緩存文件由當前數據庫中的數據總量決定。更為重要的是,刪除的是與最早時間戳對應的已緩存文件,一個時間戳對應的已緩存文件是可以設定的,因此,可以有效保證固態(tài)硬盤的使用率維持在一個比較平穩(wěn)的水平,不易出現較大的波動。另外,多個已緩存文件可以具有同一個時間戳,因此,可以實現批量刪除,提高緩存的工作效率。

在上述實施例中,緩存控制過程需要知道同一個時間戳的累積量,還需要知道最早時間戳和當前時間戳。為了便于方便統(tǒng)計,本實施例中還包括:記錄當前l(fā)eveldb數據庫中各時間戳,以及記錄每個時間戳與對應的已緩存文件的對應關系。

圖2為本發(fā)明實施例提供的一種緩存存儲結構的示意圖。為了本領域技術人員能夠更加理解本發(fā)明提供的緩存控制方法,給出一種緩存存儲結構的示意圖,見圖2。Inode1、Inode2、Inode3等表示文件號,value1、value2、value3等表示文件內容,以(inode,value)作為存儲形式緩存。

在具體實施中,可采用存儲至數據庫的形式記錄當前l(fā)eveldb數據庫中各時間戳,以及記錄每個時間戳與對應的已緩存文件的對應關系,即將記錄結果插入到leveldb數據庫。時間戳與對應的已緩存文件的對應關系表示為(time+inode,NULL)NULL表示空數據,沒有實質內容,之所采用這樣形式是滿足leveldb數據庫的存儲要求。同樣的,當前l(fā)eveldb數據庫中各時間戳以(time,NULL)形式插入到leveldb數據庫中,leveldb會根據time對其進行有序的排列。由于leveldb數據庫中的數據的存儲是按照key的大小順序有序存儲的。因此以上三類數據(time,NULL),(time+inode,NULL)和(inode,value)可以通過添加前綴aa_,bb_,cc_的形式加以區(qū)分和排序,如圖2所示。

在固態(tài)硬盤中的已緩存文件需要被內存讀取,如果一個已緩存文件的讀取頻率較高,但是在緩存控制中,該文件的時間戳變?yōu)楫斍發(fā)eveldb數據庫中最早時間戳,如果不加以篩選的話,則這個讀取次數較多的已緩存文件就會被刪除。

為了解決這個問題,作為優(yōu)選的實施方式,在刪除與最早時間戳對應的已緩存文件,并更新當前數據總量具體為:

統(tǒng)計最早時間戳對應的各已緩存文件的讀取次數,篩選出讀取次數超過預定次數的緩存文件,將這些緩存文件的時間戳更換為當前時間戳;將讀取次數未超過預定次數的緩存文件刪除,并更新當前數據總量。

例如當前最早時間戳為201606031555,該時間戳對應1000個文件,這1000個文件都有其讀取次數,篩選出讀取次數大于預定次數的文件,例如文件1-文件5,則將文件1-文件5的時間戳更換為當前時間戳;將文件6-文件1000刪除,并更新當前數據總量??梢岳斫獾氖?,如果文件1-文件5的時間戳更換為當前時間戳,則還要記錄當前時間戳與文件1-文件5的對應關系;并且由于文件1-文件5并沒有被真正刪除,而是作為保護對象保留下來了,因此,也不影響leveldb數據庫的數據總量,本實施例不再贅述。

作為優(yōu)選的實施方式,更新當前數據總量具體包括:統(tǒng)計讀取次數未超過預定次數的緩存文件的數據量,將當前數據總量減去數據量,刪除最早時間戳。

在上述實施例中,更新當前數據總量的前提是,將讀取次數未超過預定次數的緩存文件作為刪除對象,既然這些緩存文件要真正被刪除,因此需要將當前數據總量減去數據量,刪除最早時間戳。例如,將文件6-文件1000刪除,對應的數據量就是955。

作為優(yōu)選地實施方式,還包括:將當前l(fā)eveldb數據庫中各時間戳以及每個時間戳與對應的已緩存文件的對應關系加載至內存中。

再具體實施中,內存需要多次讀取leveldb數據庫中的文件,將上述信息加載至內存中,有利于內存快速讀取。具體讀取過程本實施例不再贅述。

作為優(yōu)選地實施方式,文件號為原始文件號對應的哈希取余值。

由于原始文件號通常為較長的數據串,如果以數據串表示的話,則不方便,本實施例中取原始文件號對應的哈希取余值作為各自的文件號,見圖2中得到數據結構。。

作為優(yōu)選地實施方式,還包括:當接收到刪除請求時,根據刪除請求在leveldb數據庫中刪除對應的已緩存文件,并更新leveldb數據庫。

對于固態(tài)硬盤來說,不僅包含寫入過程,還包括刪除過程,刪除過程與寫入過程原理相同,具體過程為:根據刪除請求查找到對應的已緩存文件,刪除該文件,判斷是否刪除成功,如果否,則說明沒有刪除成功,需要重復上述操作。如果刪除成功,則判斷該文件對應的時間戳是否為最新時間戳,如果是最新時間戳,則判斷該最新時間戳是對應這一個文件,如果是,則將最新時間戳減1作為當前時間戳。如果不是最新時間戳,則還需要刪除該時間戳與該文件的對應關系,并且將leveldb數據庫中的數據總量減1。

作為優(yōu)選地實施方式,第一預定值為1000??梢岳斫獾氖?,第一預定值為1000只是一種具體的實施方式,并不代表只有這一種實施方式。

作為優(yōu)選地實施方式,預定利用率為80%。因此,第二預定值為首次達到固態(tài)硬盤利用率的80%所對應的數據總量。例如,首次達到固態(tài)硬盤利用率的80%所對應的數據總量為10萬個,則第二預定值就是10萬個??梢岳斫獾氖?,預定利用率為80%只是一種具體的實施方式,并不代表只有這一種實施方式。

圖3為本發(fā)明實施例提供的一種固態(tài)硬盤的緩存控制裝置的結構圖。如圖3所示,固態(tài)硬盤的緩存控制裝置,包括:

添加單元10,用于為待緩存文件添加leveldb數據庫中的當前時間戳,并以包含有文件號和文件內容的格式插入到leveldb數據庫中。

計算單元11,用于將leveldb數據庫中的數據總量加1,將leveldb數據庫中具有當前時間戳的目標累積量加1。

第一判斷單元12,用于判斷目標累積量是否大于第一預定值。

插入單元13,用于如果目標累積量大于第一預定值,則插入新的時間戳,并將新的時間戳作為當前時間戳。

第二判斷單元14,用于如果目標累積量不大于第一預定值,則判斷當前數據總量是否大于第二預定值。

更新單元15,用于如果當前數據總量大于第二預定值,則刪除與最早時間戳對應的已緩存文件,并更新當前數據總量。

其中,第二預定值為固態(tài)硬盤首次達到預定利用率所對應的數據總量。

由于裝置部分的實施例與方法部分的實施例相互對應,因此裝置部分的實施例請參見方法部分的實施例的描述,這里暫不贅述。

本實施例提供的固態(tài)硬盤的緩存控制裝置,包括:添加單元,用于為待緩存文件添加leveldb數據庫中的當前時間戳,并以包含有文件號和文件內容的格式插入到所述leveldb數據庫中;計算單元,用于將所述leveldb數據庫中的數據總量加1,將所述leveldb數據庫中具有當前時間戳的目標累積量加1;第一判斷單元,用于判斷所述目標累積量是否大于第一預定值;插入單元,用于如果所述目標累積量大于所述第一預定值,則插入新的時間戳,并將所述新的時間戳作為當前時間戳;第二判斷單元,用于如果所述目標累積量不大于所述第一預定值,則判斷當前數據總量是否大于第二預定值;更新單元,用于如果當前數據總量大于所述第二預定值,則刪除與最早時間戳對應的已緩存文件,并更新當前數據總量。很顯然,本裝置中刪除已緩存文件并不是由于已緩存文件的生命周期到了,而是由當前數據庫中的數據總量決定的,即當達到設定的第二預定值時,才需要刪除已緩存文件,更為重要的是,刪除的是與最早時間戳對應的已緩存文件,一個時間戳對應的已緩存文件是可以設定的,因此,可以有效保證固態(tài)硬盤的使用率維持在一個比較平穩(wěn)的水平,不易出現較大的波動。另外,多個已緩存文件可以具有同一個時間戳,因此,可以實現批量刪除,提高緩存的工作效率。

以上對本發(fā)明所提供的固態(tài)硬盤的緩存控制方法及裝置進行了詳細介紹。說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權利要求的保護范圍內。

專業(yè)人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發(fā)明的范圍。

結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術領域內所公知的任意其它形式的存儲介質中。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
普兰店市| 玛纳斯县| 三原县| 曲阜市| 榆林市| 大石桥市| 兴和县| 酒泉市| 尚志市| 天门市| 宜宾市| 临颍县| 亳州市| 鄂托克旗| 广丰县| 赣榆县| 谢通门县| 陆河县| 嫩江县| 大新县| 朝阳区| 梅州市| 石阡县| 澄迈县| 日照市| 无棣县| 北京市| 增城市| 筠连县| 安图县| 宜宾市| 顺义区| 凌海市| 闻喜县| 台江县| 阳曲县| 拉萨市| 师宗县| 延津县| 清原| 巴中市|