国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      計算機系統(tǒng)和用于控制計算機的方法與流程

      文檔序號:11432260閱讀:294來源:國知局
      計算機系統(tǒng)和用于控制計算機的方法與流程

      本申請要求于2016年2月23日提交的第62/298,987的美國臨時專利申請的權(quán)益,以及于2016年4月29日提交的第15/143,504的美國臨時專利申請的權(quán)益,所述美國專利申請為了所有的目的通過參考合并于此。

      本發(fā)明構(gòu)思涉及鍵-值存儲,更具體的講,涉及在訪問鍵-值裝置時使用操作系統(tǒng)高速緩沖存儲器。



      背景技術(shù):

      現(xiàn)有的操作系統(tǒng)實現(xiàn)了用于將文件系統(tǒng)數(shù)據(jù)緩存在存儲器中并提高性能的無數(shù)的機制。具體地講,頁高速緩沖存儲器(pagecache)(或緩沖器高速緩沖存儲器(buffercache))大量緩存頻繁被訪問的數(shù)據(jù)以提高整體的文件系統(tǒng)性能。雖然頁高速緩沖存儲器本身不需要文件系統(tǒng)以駐留在塊裝置上,但是實際中,使用頁高速緩沖存儲器來提高文件系統(tǒng)性能的大部分配置需要文件系統(tǒng)駐留在塊裝置上。

      鍵-值固態(tài)驅(qū)動器(ssd)是一種提供更好的存儲性能的新興技術(shù)。但是被這些ssd使用的鍵-值系統(tǒng)輸出對象語義(objectsemantic)而不是塊語義(blocksemantic),因此,通??刹槐贿B接到頁高速緩沖存儲器。目前,使用鍵-值ssd需要完全地繞過文件系統(tǒng)或者使用沒有頁高速緩沖存儲器的好處的文件系統(tǒng)。在這兩者中的任何一個情況下,來自鍵-值ssd的數(shù)據(jù)不被緩存在操作系統(tǒng)的頁高速緩沖存儲器或緩沖器高速緩沖存儲器中。

      這將造成性能劣化(performancecliff),且通常需要用戶程序來實現(xiàn)它自身的緩存機制來恢復(fù)合理的性能。在用戶程序之內(nèi)實現(xiàn)高速緩沖存儲器對于用戶而言是非常復(fù)雜且需要軟件開發(fā)成本。此外,當(dāng)使用用戶空間緩存時,不同的程序可能不能輕易地共享它們的高速緩沖存儲器,并且當(dāng)程序終止時全部的高速緩沖存儲器內(nèi)容丟失。

      存在對于允許具有鍵-值ssd的系統(tǒng)利用頁高速緩沖存儲器的好處的方法的需求。



      技術(shù)實現(xiàn)要素:

      根據(jù)本發(fā)明構(gòu)思的一實施例的一種計算機系統(tǒng),包括:計算機;計算機中的處理器;計算機中的存儲器;文件系統(tǒng),存儲在存儲器中并在處理器上運行,文件系統(tǒng)包括頁高速緩沖存儲器;鍵-值文件系統(tǒng)(kvfs),所述kvfs包括:接收單元,從文件系統(tǒng)接收文件系統(tǒng)命令,文件系統(tǒng)命令包括標(biāo)識文件的文件名稱;映射單元,將文件系統(tǒng)命令映射到鍵-值系統(tǒng)命令;命令單元,將鍵-值系統(tǒng)命令發(fā)送到存儲裝置;返回單元,將鍵-值系統(tǒng)命令的結(jié)果返回到文件系統(tǒng)。

      此外,根據(jù)所述計算機系統(tǒng),存儲裝置存儲文件的數(shù)據(jù)對象和元數(shù)據(jù)對象。

      此外,根據(jù)所述計算機系統(tǒng),所述計算機系統(tǒng)還包括:應(yīng)用,存儲在存儲器中并在處理器上運行來發(fā)出文件系統(tǒng)命令。

      此外,根據(jù)所述計算機系統(tǒng),所述計算機系統(tǒng)還包括kvfs墊片,所述kvfs墊片包括:第二接收單元,接收第二鍵-值系統(tǒng)命令,第二鍵-值系統(tǒng)命令包括對象名稱;第二映射單元,將第二鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令;第二命令單元,將文件系統(tǒng)命令發(fā)送到文件系統(tǒng)。

      此外,根據(jù)所述計算機系統(tǒng),kvfs墊片還包括:文件描述符查找表,存儲與文件對應(yīng)的文件描述符。

      此外,根據(jù)所述計算機系統(tǒng),第二命令單元用于將文件系統(tǒng)命令和文件描述符發(fā)送到文件系統(tǒng)。

      此外,根據(jù)所述計算機系統(tǒng),kvfs墊片還包括:名稱生成器單元,從對象名稱生成文件名稱。

      此外,根據(jù)所述計算機系統(tǒng),名稱生成器單元包括:哈希單元,對對象名稱執(zhí)行哈希來生成哈希值。

      此外,根據(jù)所述計算機系統(tǒng),名稱生成器單元還包括:ascii表示單元,將文件名稱生成為哈希值的ascii表示。

      此外,根據(jù)所述計算機系統(tǒng),名稱生成器單元還包括:沖突索引單元,將文件名稱與沖突索引組合。

      此外,根據(jù)所述計算機系統(tǒng),kvfs包括:kvfs高速緩沖存儲器。

      此外,根據(jù)所述計算機系統(tǒng),kvfs高速緩沖存儲器可操作為用于存儲來自存儲裝置的數(shù)據(jù)對象和元數(shù)據(jù)對象的數(shù)據(jù)的復(fù)本。

      此外,根據(jù)所述計算機系統(tǒng),返回單元用于僅將存儲在kvfs高速緩沖存儲器的數(shù)據(jù)對象和元數(shù)據(jù)對象的一部分?jǐn)?shù)據(jù)返回到文件系統(tǒng)。

      此外,根據(jù)所述計算機系統(tǒng),kvfs包括:索引節(jié)點,所述索引節(jié)點存儲來自存儲裝置的數(shù)據(jù)對象的元數(shù)據(jù)。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種存儲器包括:存儲在存儲器中的數(shù)據(jù)結(jié)構(gòu),其中,所述數(shù)據(jù)結(jié)構(gòu)包括文件的名稱、文件的創(chuàng)建日期、文件的修改日期、文件的訪問日期、文件的類型、文件的大小、文件的容器、文件的所有者、存儲數(shù)據(jù)的對象的名稱。

      此外,根據(jù)所述存儲器,存儲數(shù)據(jù)的對象的名稱包括:指向存儲數(shù)據(jù)的對象的名稱的指針。

      此外,根據(jù)所述存儲器,存儲數(shù)據(jù)的對象的名稱還包括:存儲數(shù)據(jù)的對象的名稱的大小。

      此外,根據(jù)所述存儲器,數(shù)據(jù)結(jié)構(gòu)還包括:針對存儲數(shù)據(jù)的對象的多個權(quán)限。

      此外,根據(jù)所述存儲器,針對存儲數(shù)據(jù)的對象的所述多個權(quán)限包括:指向存儲針對存儲數(shù)據(jù)的對象的所述多個權(quán)限的第二數(shù)據(jù)結(jié)構(gòu)的指針。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種方法包括:接收文件系統(tǒng)命令,所述文件系統(tǒng)命令包括標(biāo)識文件的文件名稱;將文件系統(tǒng)命令映射到關(guān)于標(biāo)識對象的至少一個對象名稱的至少一個鍵-值系統(tǒng)命令;試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令;接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果;返回鍵-值系統(tǒng)結(jié)果。

      此外,根據(jù)所述方法,接收文件系統(tǒng)命令的步驟包括:接收第二鍵-值系統(tǒng)命令,第二鍵-值系統(tǒng)命令包括標(biāo)識第二對象的第二對象名稱;將第二鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令。

      此外,根據(jù)所述方法,接收第二鍵-值系統(tǒng)命令的步驟包括:接收第二鍵-值系統(tǒng)命令,第二鍵-值系統(tǒng)命令是從包括put命令、get命令和delete命令的集合得到。

      此外,根據(jù)所述方法,將第二鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟包括:從第二對象名稱生成文件名稱。

      此外,根據(jù)所述方法,從第二對象名稱生成文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到第二對象名稱來產(chǎn)生文件名稱。

      此外,根據(jù)所述方法,將哈希函數(shù)應(yīng)用到第二對象名稱來產(chǎn)生文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到第二對象名稱來產(chǎn)生哈希值;將文件名稱生成為所述哈希值的ascii表示。

      此外,根據(jù)所述方法,從第二對象名稱生成文件名稱的步驟還包括:將哈希值的ascii表示與沖突索引進行組合。

      此外,根據(jù)所述方法,接收文件系統(tǒng)命令的步驟還包括:在文件描述符查找表搜索與文件名稱相關(guān)聯(lián)的文件描述符。

      此外,根據(jù)所述方法,接收文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表不包括所述文件名稱:接收文件的文件描述符;將文件描述符和文件名稱添加到文件描述符查找表。

      此外,根據(jù)所述方法,接收文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表包括所述文件名稱,使用文件名稱從文件描述符查找表訪問文件的文件描述符。

      此外,根據(jù)所述方法,本發(fā)明構(gòu)思的實施例包括根據(jù)聲明23的方法,其中,接收文件系統(tǒng)命令的步驟還包括:向存儲裝置請求元數(shù)據(jù)對象,元數(shù)據(jù)對象通過文件名稱進行標(biāo)識;從存儲裝置接收元數(shù)據(jù)對象,元數(shù)據(jù)對象包括文件的元數(shù)據(jù)。

      此外,根據(jù)所述方法,將文件系統(tǒng)命令映射到至少一個鍵-值系統(tǒng)命令的步驟包括:從元數(shù)據(jù)對象訪問第二對象名稱,并且,試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令的步驟包括:試圖使用元數(shù)據(jù)對象來使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令;試圖使用第二對象使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足第二鍵-值系統(tǒng)命令。

      此外,根據(jù)所述方法,從元數(shù)據(jù)對象訪問第二對象名稱的步驟包括:從元數(shù)據(jù)對象訪問指向第二對象的第二對象名稱的指針;使用指向第二對象名稱的指針檢索第二對象名稱。

      此外,根據(jù)所述方法,從元數(shù)據(jù)對象訪問指向第二對象的第二對象名稱的指針的步驟包括:從元數(shù)據(jù)對象訪問指向第二對象名稱和第二對象名稱的名稱長度的指針,并且,使用指向第二對象名稱的指針檢索第二對象名稱的步驟包括:使用指向第二對象名稱和第二對象名稱的名稱長度的指針檢索第二對象名稱。

      此外,根據(jù)所述方法,接收文件系統(tǒng)命令的步驟還包括:將來自元數(shù)據(jù)對象的元數(shù)據(jù)存儲在索引節(jié)點中。

      此外,根據(jù)所述方法,試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令的步驟包括:響應(yīng)于所述至少一個鍵-值系統(tǒng)命令來修改索引節(jié)點。

      此外,根據(jù)所述方法,響應(yīng)于所述至少一個鍵-值系統(tǒng)命令來修改索引節(jié)點的步驟包括:從存儲裝置刪除元數(shù)據(jù)對象;將替換元數(shù)據(jù)對象存儲在存儲裝置上。

      此外,根據(jù)所述方法,試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令的步驟包括:在鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器搜索所述對象。

      此外,根據(jù)所述方法,接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果的步驟包括:如果kvfs高速緩沖存儲器存儲所述對象,則從kvfs高速緩沖存儲器訪問對象的數(shù)據(jù)。

      此外,根據(jù)所述方法,接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果的步驟還包括:如果kvfs高速緩沖存儲器沒有存儲所述對象:將鍵-值系統(tǒng)命令發(fā)送到存儲裝置;從存儲裝置接收對象的數(shù)據(jù);將所述數(shù)據(jù)存儲在kvfs高速緩沖存儲器。

      此外,根據(jù)所述方法,接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果的步驟包括:僅訪問對象的數(shù)據(jù)的一部分;返回所述數(shù)據(jù)的一部分作為鍵-值系統(tǒng)結(jié)果。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種方法包括:接收鍵-值系統(tǒng)命令,鍵-值系統(tǒng)命令包括標(biāo)識對象的對象名稱;將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令;向存儲裝置發(fā)送文件系統(tǒng)命令。

      此外,根據(jù)所述方法,接收鍵-值系統(tǒng)命令的步驟包括:接收鍵-值系統(tǒng)命令,鍵-值系統(tǒng)命令是從包括put命令、get命令和delete命令的集合得到。

      此外,根據(jù)所述方法,將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟包括:從對象名稱生成文件名稱。

      此外,根據(jù)所述方法,從對象名稱生成文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生文件名稱。

      此外,根據(jù)所述方法,將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生哈希值;將文件名稱生成為所述哈希值的ascii表示。

      此外,根據(jù)所述方法,從對象名稱生成文件名稱的步驟還包括:將哈希值的ascii表示與沖突索引進行組合。

      此外,根據(jù)所述方法,將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟包括:在文件描述符查找表搜索與文件名稱相關(guān)聯(lián)的文件描述符。

      此外,根據(jù)所述方法,將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表不包括所述文件名稱:接收與所述對象對應(yīng)的文件的文件描述符;將文件描述符和文件名稱添加到文件描述符查找表。

      此外,根據(jù)所述方法,將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表包括所述文件名稱,則使用文件名稱從文件描述符查找表訪問文件的文件描述符。

      此外,根據(jù)所述方法,所述方法還包括:返回文件系統(tǒng)命令的結(jié)果。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種方法包括:接收文件系統(tǒng)命令,文件系統(tǒng)命令標(biāo)識文件;訪問與文件對應(yīng)的索引節(jié)點;從索引節(jié)點訪問對象名稱,對象名稱標(biāo)識存儲在存儲裝置中的對象;試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令;返回所述命令的結(jié)果。

      此外,根據(jù)所述方法,接收文件系統(tǒng)命令的步驟包括:接收所述文件系統(tǒng)命令,所述文件系統(tǒng)命令包括文件描述符,并且,訪問與文件對應(yīng)的索引節(jié)點的步驟包括:訪問與文件描述符對應(yīng)的索引節(jié)點。

      此外,根據(jù)所述方法,試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟包括:在kvfs高速緩沖存儲器搜索所述對象名稱;如果在kvfs高速緩沖存儲器中存在具有所述對象名稱的對象,對kvfs高速緩沖存儲器中的對象執(zhí)行命令。

      此外,根據(jù)所述方法,試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟還包括:如果在kvfs高速緩沖存儲器中不存在具有所述對象名稱的對象:將文件系統(tǒng)命令映射到鍵-值系統(tǒng)命令;將關(guān)于具有所述對象名稱的對象的鍵-值系統(tǒng)命令發(fā)送到存儲裝置;從存儲裝置接收所述對象;將所述對象存儲在kvfs高速緩沖存儲器。

      此外,根據(jù)所述方法,返回鍵-值系統(tǒng)命令的結(jié)果的步驟包括:僅訪問對象的數(shù)據(jù)的一部分;返回所述數(shù)據(jù)的一部分作為鍵-值系統(tǒng)結(jié)果。

      此外,根據(jù)所述方法,所述方法還包括:如果沒有與文件描述符對應(yīng)的索引節(jié)點可被定位:向存儲裝置請求元數(shù)據(jù)對象,元數(shù)據(jù)對象通過文件名稱標(biāo)識;從存儲裝置接收元數(shù)據(jù)對象,元數(shù)據(jù)對象包括文件的元數(shù)據(jù);從元數(shù)據(jù)對象提取元數(shù)據(jù);使用元數(shù)據(jù)創(chuàng)建索引節(jié)點。

      此外,根據(jù)所述方法,從元數(shù)據(jù)對象提取元數(shù)據(jù)的步驟包括:從元數(shù)據(jù)對象訪問指向?qū)ο蟮膶ο竺Q的指針。

      此外,根據(jù)所述方法,從元數(shù)據(jù)對象訪問指向?qū)ο蟮膶ο竺Q的指針的步驟包括:從元數(shù)據(jù)對象訪問指向?qū)ο竺Q和對象名稱的名稱長度的指針。

      此外,根據(jù)所述方法,試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟包括:響應(yīng)于文件系統(tǒng)命令來修改索引節(jié)點。

      此外,根據(jù)所述方法,試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟還包括:從存儲裝置刪除元數(shù)據(jù)對象;將替換元數(shù)據(jù)對象存儲在存儲裝置上。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種方法包括:接收對象名稱,對象名稱標(biāo)識存儲在存儲裝置上的對象;將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生文件名稱。

      此外,根據(jù)所述方法,所述方法還包括:將文件名稱生成為哈希值的ascii表示。

      此外,根據(jù)所述方法,將文件名稱生成為哈希值的ascii表示的步驟包括:將哈希值的ascii表示與沖突索引進行組合。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種具有指令的計算機可讀存儲介質(zhì),該指令被計算機執(zhí)行時導(dǎo)致:接收文件系統(tǒng)命令,文件系統(tǒng)命令包括對文件進行標(biāo)識的文件名稱;將文件系統(tǒng)命令映射到關(guān)于對對象進行標(biāo)識的至少一個對象名稱的至少一個鍵-值系統(tǒng)命令;試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令;接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果;返回鍵-值系統(tǒng)結(jié)果。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收文件系統(tǒng)命令的步驟包括:接收第二鍵-值系統(tǒng)命令,第二鍵-值系統(tǒng)命令包括對第二對象進行標(biāo)識的第二對象名稱;將第二鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收第二鍵-值系統(tǒng)命令的步驟包括:接收第二鍵-值系統(tǒng)命令,第二鍵-值系統(tǒng)命令是從包括put命令、get命令和delete命令的集合得到。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將第二鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟包括:從第二對象名稱生成文件名稱。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),從第二對象名稱生成文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到第二對象名稱來產(chǎn)生文件名稱。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將哈希函數(shù)應(yīng)用到第二對象名稱來產(chǎn)生文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到第二對象名稱來產(chǎn)生哈希值;將文件名稱生成為哈希值的ascii表示。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將哈希函數(shù)應(yīng)用到第二對象名稱來產(chǎn)生文件名稱的步驟還包括:將哈希值的ascii表示與沖突索引進行組合。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收文件系統(tǒng)命令的步驟還包括:在文件描述符查找表搜索與文件名稱相關(guān)聯(lián)的文件描述符。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表不包括所述文件名稱:接收文件的文件描述符;將文件描述符和文件名稱添加到文件描述符查找表。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表包括文件名稱,則使用文件名稱從文件描述符查找表訪問文件的文件描述符。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收文件系統(tǒng)命令的步驟還包括:向存儲裝置請求元數(shù)據(jù)對象,元數(shù)據(jù)對象通過文件名稱識別;從存儲裝置接收元數(shù)據(jù)對象,元數(shù)據(jù)對象包括文件的元數(shù)據(jù)。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將文件系統(tǒng)命令映射到至少一個鍵-值系統(tǒng)命令的步驟包括:從元數(shù)據(jù)對象訪問第二對象名稱,并且,試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令的步驟包括:試圖使用元數(shù)據(jù)對象來使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令;試圖使用第二對象來使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足第二鍵-值系統(tǒng)命令。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),本從元數(shù)據(jù)對象訪問第二對象名稱的步驟包括:從元數(shù)據(jù)對象訪問指向第二對象的第二對象名稱的指針;使用指向第二對象名稱的指針檢索第二對象名稱。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),從元數(shù)據(jù)對象訪問指向第二對象的第二對象名稱的指針的步驟包括:從元數(shù)據(jù)對象訪問指向第二對象名稱和第二對象名稱的名稱長度的指針,并且,使用指向第二對象名稱的指針檢索第二對象名稱的步驟包括:使用指向第二對象名稱和第二對象名稱的名稱長度的指針檢索第二對象名稱。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收文件系統(tǒng)命令的步驟還包括:將來自元數(shù)據(jù)對象的元數(shù)據(jù)存儲在索引節(jié)點中。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令的步驟包括:響應(yīng)于所述至少一個鍵-值系統(tǒng)命令來修改索引節(jié)點。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),響應(yīng)于所述至少一個鍵-值系統(tǒng)命令來修改索引節(jié)點的步驟包括:從存儲裝置刪除元數(shù)據(jù)對象;將替換元數(shù)據(jù)對象存儲在存儲裝置中。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),試圖使用鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器來滿足所述至少一個鍵-值系統(tǒng)命令的步驟包括:在鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器搜索所述對象。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果的步驟包括:如果kvfs高速緩沖存儲器存儲了所述對象,則從kvfs高速緩沖存儲器訪問對象的數(shù)據(jù)。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果的步驟還包括:如果kvfs高速緩沖存儲器沒有存儲所述對象:將鍵-值系統(tǒng)命令發(fā)送到存儲裝置;從存儲裝置接收對象的數(shù)據(jù);將所述數(shù)據(jù)存儲在kvfs高速緩沖存儲器。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收所述至少一個鍵-值系統(tǒng)命令的鍵-值系統(tǒng)結(jié)果的步驟包括:僅訪問對象的數(shù)據(jù)的一部分;返回所述數(shù)據(jù)的一部分作為鍵-值系統(tǒng)結(jié)果。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種具有指令的計算機可讀存儲介質(zhì),該指令被計算機執(zhí)行時導(dǎo)致:接收鍵-值系統(tǒng)命令,鍵-值系統(tǒng)命令包括對對象進行標(biāo)識的對象名稱;將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令;向存儲裝置發(fā)送文件系統(tǒng)命令。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收鍵-值系統(tǒng)命令的步驟包括:接收鍵-值系統(tǒng)命令,鍵-值系統(tǒng)命令是從包括put命令、get命令和delete命令的集合得到。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟包括:從對象名稱生成文件名稱。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),從對象名稱生成文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生文件名稱。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生文件名稱的步驟包括:將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生哈希值;將文件名稱生成為所述哈希值的ascii表示。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),從對象名稱生成文件名稱的步驟還包括:將哈希值的ascii表示與沖突索引進行組合。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟包括:在文件描述符查找表搜索與文件名稱相關(guān)聯(lián)的文件描述符。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表不包括所述文件名稱:接收與所述對象對應(yīng)的文件的文件描述符;將文件描述符和文件名稱添加到文件描述符查找表。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令的步驟還包括:如果文件描述符查找表包括所述文件名稱,則使用文件名稱從文件描述符查找表訪問文件的文件描述符。

      此外,根據(jù)所述計算機可讀存儲介質(zhì)在指令被機器執(zhí)行時,導(dǎo)致:返回文件系統(tǒng)命令的結(jié)果。

      根據(jù)本發(fā)明構(gòu)思的另一實施例,一種具有指令的計算機可讀存儲介質(zhì),該指令被計算機執(zhí)行時導(dǎo)致:接收文件系統(tǒng)命令,文件系統(tǒng)命令對文件進行標(biāo)識;訪問與文件對應(yīng)的索引節(jié)點;從索引節(jié)點訪問對象名稱,對象名稱對存儲在存儲裝置中的對象進行標(biāo)識;試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令;返回所述命令的結(jié)果。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),接收文件系統(tǒng)命令的步驟包括:接收所述文件系統(tǒng)命令,所述文件系統(tǒng)命令包括文件描述符,并且,訪問與文件對應(yīng)的索引節(jié)點的步驟包括:訪問與文件描述符對應(yīng)的索引節(jié)點。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟包括:在kvfs高速緩沖存儲器搜索所述對象名稱;如果在kvfs高速緩沖存儲器中存在具有所述對象名稱的對象,對kvfs高速緩沖存儲器中的對象執(zhí)行命令。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟還包括:如果在kvfs高速緩沖存儲器中不存在具有所述對象名稱的對象:將文件系統(tǒng)命令映射到鍵-值系統(tǒng)命令;將關(guān)于具有所述對象名稱的對象的鍵-值系統(tǒng)命令發(fā)送到存儲裝置;從存儲裝置接收所述對象;將所述對象存儲在kvfs高速緩沖存儲器。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),返回鍵-值系統(tǒng)命令的結(jié)果的步驟包括:僅訪問對象的數(shù)據(jù)的一部分;返回所述數(shù)據(jù)的一部分作為鍵-值系統(tǒng)結(jié)果。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),在所述指令被執(zhí)行時導(dǎo)致:如果沒有與文件描述符對應(yīng)的索引節(jié)點可被定位:從存儲裝置請求元數(shù)據(jù)對象,元數(shù)據(jù)對象通過文件名稱識別;從存儲裝置接收元數(shù)據(jù)對象,元數(shù)據(jù)對象包括文件的元數(shù)據(jù);從元數(shù)據(jù)對象提取元數(shù)據(jù);使用元數(shù)據(jù)創(chuàng)建索引節(jié)點。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),從元數(shù)據(jù)對象提取元數(shù)據(jù)的步驟包括:從元數(shù)據(jù)對象訪問指向?qū)ο竺Q的指針。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),從元數(shù)據(jù)對象訪問指向?qū)ο蟮膶ο竺Q的指針的步驟包括:從元數(shù)據(jù)對象訪問指向?qū)ο竺Q和對象名稱的名稱長度的指針。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟包括:響應(yīng)于文件系統(tǒng)命令來修改索引節(jié)點。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),試圖對鍵-值文件系統(tǒng)(kvfs)高速緩沖存儲器中的對象執(zhí)行命令的步驟還包括:從存儲裝置刪除元數(shù)據(jù)對象;將替換元數(shù)據(jù)對象存儲在存儲裝置上。

      根據(jù)本發(fā)明的另一實施例,一種具有指令的計算機可讀存儲介質(zhì),該指令被計算機執(zhí)行時導(dǎo)致:接收對象名稱,對象名稱對存儲在存儲裝置上的對象進行標(biāo)識;將哈希函數(shù)應(yīng)用到對象名稱來產(chǎn)生文件名稱。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),在所述指令被機器執(zhí)行時導(dǎo)致:將文件名稱生成為哈希值的ascii表示。

      此外,根據(jù)所述計算機可讀存儲介質(zhì),將文件名稱生成為哈希值的ascii表示的步驟包括:將哈希值的ascii表示與沖突索引進行結(jié)合。

      附圖說明

      圖1示出根據(jù)本發(fā)明構(gòu)思的實施例的在訪問鍵-值系統(tǒng)存儲裝置時能夠使用操作系統(tǒng)的頁高速緩沖存儲器的系統(tǒng)。

      圖2示出圖1的計算機的附加細(xì)節(jié)。

      圖3a至圖3b示出經(jīng)過圖1的計算機的層的命令和數(shù)據(jù)的流動。

      圖4示出圖1的鍵-值文件系統(tǒng)(kvfs)層的細(xì)節(jié)。

      圖5示出圖1的kvfs墊片(shim)的細(xì)節(jié)。

      圖6示出圖5的名稱生成器單元的細(xì)節(jié)。

      圖7示出圖5的文件描述符查找表的細(xì)節(jié)。

      圖8示出圖1的元數(shù)據(jù)對象的結(jié)構(gòu)的細(xì)節(jié)。

      圖9a至圖9e示出根據(jù)本發(fā)明構(gòu)思的實施例的使用圖1的計算機處理命令的示例過程的流程圖。

      圖10a至圖10b示出根據(jù)本發(fā)明構(gòu)思的實施例的圖1的kvfs墊片的操作的示例過程的流程圖。

      圖11a至圖11b示出根據(jù)本發(fā)明構(gòu)思的實施例的圖1的kvfs的操作的示例過程的流程圖。

      圖12a至圖12b示出根據(jù)本發(fā)明構(gòu)思的實施例的使用圖1的kvfs高速緩沖存儲器的示例過程的流程圖。

      圖13示出根據(jù)本發(fā)明構(gòu)思的實施例的使用圖5的名稱生成器單元從對象名稱生成文件名稱的示例過程的流程圖。

      圖14示出根據(jù)本發(fā)明構(gòu)思的實施例的在圖1的系統(tǒng)中修改圖1的元數(shù)據(jù)對象的示例過程的流程圖。

      具體實施方式

      現(xiàn)在將詳細(xì)參考本發(fā)明構(gòu)思的實施例,其中,附圖中示出本發(fā)明構(gòu)思的實施例的示例。在下面的具體實施方式中,闡述了很多具體的細(xì)節(jié)以能夠全面理解本發(fā)明構(gòu)思。然而,應(yīng)理解,本領(lǐng)域的普通技術(shù)人員可在沒有這些具體細(xì)節(jié)的情況下實踐本發(fā)明構(gòu)思。在其他情況下,公知的方法、過程、組件、電路和網(wǎng)絡(luò)未被具體地描述,以免使實施例的方面產(chǎn)生不必要的模糊。

      將理解,雖然術(shù)語第一、第二等可在此用于描述各種元件,但是這些元件不應(yīng)被這些術(shù)語所限定。這些術(shù)語僅用于對一個元件和另一個元件進行區(qū)別。例如,在不脫離本發(fā)明構(gòu)思的范圍的情況下,第一單元可被稱為第二單元,類似地,第二單元可被稱為第一單元。

      在此本發(fā)明構(gòu)思的描述中使用的術(shù)語僅為了描述特定的實施例并不意在限制本發(fā)明構(gòu)思。如在本發(fā)明構(gòu)思和附加的權(quán)利要求的描述中使用的,除非上下文另外有明確的指示,單數(shù)形式意在也包括復(fù)數(shù)形式。也將理解,如在此使用的術(shù)語“和/或”表示并包含一個或多個相關(guān)聯(lián)的列出的項目的任意和全部可能的組合。將進一步理解,當(dāng)在說明書中使用時,術(shù)語“包含”表示闡述的特征、證書、步驟、操作、元素和/或組件的存在,但是不排除一個或多個其他特征、證書、步驟、操作、元素、組件和/或它們的組的存在或添加。附圖的組件和特征不一定按比例繪制。

      本發(fā)明構(gòu)思的實施例包括用于杠桿式利用(leverage)操作系統(tǒng)的頁高速緩沖存儲器(或緩沖器高速緩沖存儲器)來加速數(shù)據(jù)訪問的訪問鍵-值的方法。鍵-值請求(或鍵-值系統(tǒng)命令)可被轉(zhuǎn)換成可利用頁高速緩沖存儲器的文件系統(tǒng)請求。本發(fā)明構(gòu)思的實施例也可將文件系統(tǒng)請求轉(zhuǎn)換成鍵-值系統(tǒng)請求:例如,將頁高速緩沖存儲器readpage命令轉(zhuǎn)換成鍵-值系統(tǒng)get和put命令。為了促進這些轉(zhuǎn)換,鍵-值文件系統(tǒng)(kvfs)可包括它自身的內(nèi)部頁高速緩沖存儲器,其可進一步減少存儲裝置的訪問請求的數(shù)量,并也可處理部分讀取和寫入。存儲裝置也可存儲需要最小開銷時支持文件系統(tǒng)接口和功能的元數(shù)據(jù)對象。

      通過利用現(xiàn)有的操作系統(tǒng)頁高速緩沖存儲器,本發(fā)明構(gòu)思的實施例可提高鍵-值應(yīng)用的數(shù)據(jù)訪問性能。這個結(jié)果具有附加的好處:使多個應(yīng)用能夠共享頁高速緩沖存儲器并允許緩存的數(shù)據(jù)留存到應(yīng)用重新開始。

      本發(fā)明構(gòu)思的實施例在不需要對操作系統(tǒng)的任何通用部分進行改變的情況下,能夠使用標(biāo)準(zhǔn)操作系統(tǒng)頁高速緩沖存儲器和緩沖器高速緩沖存儲器行為。為了實現(xiàn)這些結(jié)果,本發(fā)明構(gòu)思的實施例引入兩個新的組件:

      1)在操作系統(tǒng)的用戶空間內(nèi),可引入新的鍵-值文件系統(tǒng)(kvfs)墊片。kvfs墊片可覆蓋應(yīng)用可鏈接到的方法的小子集,實現(xiàn)對應(yīng)用的透明改變。

      2)在操作系統(tǒng)的文件系統(tǒng)層內(nèi),可引入kvfs驅(qū)動器(有時被稱為kvfs層,或只被稱為kvfs)。kvfs驅(qū)動器可符合操作系統(tǒng)所需要的標(biāo)準(zhǔn)文件系統(tǒng)接口(諸如,bsd的虛擬節(jié)點(vnode)或linux的vfs接口),并可將文件系統(tǒng)請求轉(zhuǎn)化為鍵-值系統(tǒng)請求。

      圖1示出根據(jù)本發(fā)明構(gòu)思的實施例的在訪問鍵-值系統(tǒng)存儲裝置時能夠使用操作系統(tǒng)的頁高速緩沖存儲器的系統(tǒng)。在圖1中,計算機105被顯示為包括處理器110、存儲器115和存儲裝置120。處理器110可以是任何種類的處理器,例如,intelxeon或intelceleron處理器。存儲器115可以是任何種類的存儲器,諸如,非易失性存儲器(例如,閃存)或靜態(tài)隨機存取存儲器(ram),但通常是動態(tài)ram。存儲裝置120可以是不使用傳統(tǒng)的塊接口的任何種類的存儲裝置。本發(fā)明構(gòu)思的實施例包括提供鍵-值(對象)接口的固態(tài)驅(qū)動器(ssd),但是本發(fā)明構(gòu)思的其他實施例可支持其他形式的存儲裝置、其他形式的接口或二者。在下面的描述中,一般對“鍵-值”的任何引用,不論在接口的上下文、命令還是其他上下文中,可被適于不同的專用存儲裝置120的其他可選擇替換物所替換。

      存儲器115可包括應(yīng)用125,其可以是任何種類的應(yīng)用。在本發(fā)明構(gòu)思的一些實施例中,應(yīng)用125可以是被設(shè)計為利用存儲裝置120的鍵-值接口的應(yīng)用,但在本發(fā)明構(gòu)思的其他實施例中,應(yīng)用125可以是利用傳統(tǒng)的文件系統(tǒng)的應(yīng)用。如下面參照圖3b所述,本發(fā)明構(gòu)思的實施例可允許應(yīng)用利用傳統(tǒng)的文件系統(tǒng)命令來訪問提供鍵-值接口的存儲裝置(諸如,存儲裝置120)。

      存儲器115也可包括操作系統(tǒng)130,其中,操作系統(tǒng)130可包括文件系統(tǒng)135。文件系統(tǒng)135可以是傳統(tǒng)的文件系統(tǒng),正如操作系統(tǒng)130可以是包括頁高速緩沖存儲器的傳統(tǒng)的操作系統(tǒng)。(術(shù)語“頁高速緩沖存儲器”意在囊括由操作系統(tǒng)提供的用于存儲針對應(yīng)用的數(shù)據(jù)的任何高速緩沖存儲器,它是更傳統(tǒng)的緩沖器高速緩沖存儲器或更現(xiàn)代的linux類型的頁高速緩沖存儲器。)為了能夠在傳統(tǒng)的文件系統(tǒng)命令與鍵-值系統(tǒng)命令之間轉(zhuǎn)變,操作系統(tǒng)130可包括鍵-值文件系統(tǒng)(kvfs)墊片140和kvfs145。kvfs墊片140可將鍵-值系統(tǒng)命令轉(zhuǎn)化為文件系統(tǒng)命令,而文件系統(tǒng)135可隨后處理文件系統(tǒng)命令。kvfs145可將文件系統(tǒng)命令轉(zhuǎn)化回鍵-值系統(tǒng)命令來與存儲裝置120進行交互(如上所述,存儲裝置120提供鍵-值系統(tǒng)接口而不是傳統(tǒng)的塊接口)。kvfs墊片140可被實現(xiàn)為覆蓋被應(yīng)用125正常調(diào)用的庫函數(shù)的函數(shù)。

      由于kvfs墊片140和kvfs145的實現(xiàn)的具體細(xì)節(jié)可能取決于包括操作系統(tǒng)130和文件系統(tǒng)135的特性、存儲裝置120接受的命令的變量,實現(xiàn)可通過不同的安裝進行改變。在本發(fā)明構(gòu)思的一些實施例中,kvfs墊片140和kvfs145可使用可插入函數(shù)(pluggablefunction)實現(xiàn),其中,kvfs墊片140和kvfs145二者都包括一套完整的所有可能的函數(shù)的集合。然后,對于具體的實現(xiàn),特定函數(shù)可被激活,剩余函數(shù)失活。例如,kvfs墊片140和kvfs145可包括用于針對所有可能的文件系統(tǒng)135而處理所有可能的文件系統(tǒng)命令的函數(shù),以及用于針對所有可能的存儲裝置120而處理所有可能的鍵-值系統(tǒng)命令的函數(shù)。然后,當(dāng)kvfs墊片140和kvfs145被安裝在計算機105時,處理通過文件系統(tǒng)135和存儲裝置120識別的具體命令的函數(shù)可被激活,來實現(xiàn)計算機105需要的具體的kvfs墊片140和kvfs145。

      當(dāng)操作系統(tǒng)130可包括它本身的頁高速緩沖存儲器時,可對計算機105進行進一步的增強來減少對于從存儲裝置120訪問數(shù)據(jù)的需要。例如,kvfs145可包括kvfs高速緩沖存儲器150。kvfs高速緩沖存儲器150可存儲數(shù)據(jù)的復(fù)本(copy)155和元數(shù)據(jù)的復(fù)本160。復(fù)本155和復(fù)本160可以是存儲在存儲裝置120中的數(shù)據(jù)對象165和元數(shù)據(jù)對象170的復(fù)本。如下面參照圖3a至圖8將進一步描述的,數(shù)據(jù)對象165可存儲底層數(shù)據(jù)(underlyingdata),元數(shù)據(jù)對象170可存儲文件的元數(shù)據(jù)。因此,數(shù)據(jù)對象165和元數(shù)據(jù)對象170可一起建立文件175。

      包括kvfs高速緩沖存儲器150的一個原因是解決部分讀取和寫入。鍵-值系統(tǒng)語法(semantic)可指定對象整體地被讀取或?qū)懭耄翰糠謹(jǐn)?shù)據(jù)讀取和寫入可能不被允許。因此,如果從存儲在存儲裝置120中的數(shù)據(jù)對象165需要任何數(shù)據(jù),則必須讀取整個數(shù)據(jù)對象165。類似地,如果將任何數(shù)據(jù)寫入存儲在存儲裝置120的數(shù)據(jù)對象165,則必須寫入整個數(shù)據(jù)對象165。

      但是文件系統(tǒng)語法可允許部分?jǐn)?shù)據(jù)讀取和寫入。例如,文件系統(tǒng)命令可能只想從數(shù)據(jù)對象165讀取數(shù)據(jù)字段。由于鍵-值系統(tǒng)語法要求讀取整個數(shù)據(jù)對象165而不管實際使用多少數(shù)據(jù),剩余的數(shù)據(jù)可被緩存在某處以防將來需要,避免需要重新讀取數(shù)據(jù)對象165。但是由于來自操作系統(tǒng)130的文件系統(tǒng)命令僅請求應(yīng)用125需要的特定數(shù)據(jù),在操作系統(tǒng)130內(nèi)的頁高速緩沖存儲器將不緩存來自數(shù)據(jù)對象165的剩余的數(shù)據(jù)。因此,kvfs高速緩沖存儲器150提供了一種用于存儲被丟棄的數(shù)據(jù)(即使在將來某個時刻可能需要)的手段。

      當(dāng)然,這意味著kvfs高速緩沖存儲器150是一種具有對于任何高速緩沖存儲器都存在的局限性的高速緩沖存儲器。kvfs高速緩沖存儲器150將具有由分配給kvfs高速緩沖存儲器150的空間決定的有限的大小。如果kvfs被要求存儲比分配的空間多的數(shù)據(jù),則kvfs高速緩沖存儲器150將需要輪流將數(shù)據(jù)轉(zhuǎn)移出kvfs高速緩沖存儲器150。kvfs高速緩沖存儲器150可使用用于刪掉舊數(shù)據(jù)來為新數(shù)據(jù)騰出空間的任何期望的算法(諸如,最不常用的(lfu)、最近最少時用的(lru)或任何其他調(diào)度)。

      kvfs高速緩沖存儲器150刪掉舊數(shù)據(jù)的一個結(jié)果是:對于一些對象,kvfs高速緩沖存儲器150可能僅包含數(shù)據(jù)的一部分。例如,考慮向大小為200mb的數(shù)據(jù)庫請求數(shù)據(jù)的情況。由于從鍵-值系統(tǒng)存儲裝置整體地寫入和讀取對象,大小約為200mb的單個對象存儲數(shù)據(jù)庫。所以當(dāng)讀取數(shù)據(jù)庫的一部分時,整個200mb的數(shù)據(jù)庫將被載入kvfs高速緩沖存儲器150。假設(shè)稍后出現(xiàn)讀取大小為10kb的文件的請求,但是現(xiàn)在kvfs高速緩沖存儲器150是滿的。不管為了什么原因,kvfs高速緩沖存儲器150決定刪除10kb的數(shù)據(jù)庫的數(shù)據(jù)來為請求的文件騰出空間。

      現(xiàn)在進一步假設(shè)出現(xiàn)向數(shù)據(jù)庫請求數(shù)據(jù)的另一個請求。在kvfs高速緩沖存儲器150中仍然具有多于199mb的數(shù)據(jù)庫,請求的數(shù)據(jù)仍然存在于kvfs高速緩沖存儲器150中的幾率是有可能的。如果這樣,那么在無需訪問存儲裝置120的情況下可從kvfs高速緩沖存儲器150滿足請求。但是如果當(dāng)讀取更小的文件時請求的數(shù)據(jù)恰好是從kvfs高速緩沖存儲器150刪除的那部分?jǐn)?shù)據(jù),則kvfs145將需要再次請求整個200mb數(shù)據(jù)庫對象。

      可類似地處理數(shù)據(jù)寫入。當(dāng)數(shù)據(jù)將被寫入時,如果將被替換的數(shù)據(jù)存儲在kvfs高速緩沖存儲器150中,那么在kvfs高速緩沖存儲器150內(nèi)的數(shù)據(jù)可被更新且kvfs145可返回結(jié)果。稍后,kvfs145可將數(shù)據(jù)從kvfs高速緩沖存儲器150寫入到存儲裝置120,來確保數(shù)據(jù)在更加永久的存儲器中被更新,在此之后,在kvfs高速緩沖存儲器150的數(shù)據(jù)可被標(biāo)記為可擦除。當(dāng)然,如果當(dāng)kvfs高速緩沖存儲器150是滿的時,新的數(shù)據(jù)將被載入kvfs高速緩沖存儲器150,則kvfs高速緩沖存儲器需要知道哪些數(shù)據(jù)已經(jīng)被寫入到存儲裝置120以及哪些數(shù)據(jù)沒有寫入,從而如果這些頁從kvfs高速緩沖存儲器150將被刪掉則數(shù)據(jù)可被沖入(flush)到存儲裝置120。所以kvfs高速緩沖存儲器150需要針對kvfs高速緩沖存儲器150中的每一頁跟蹤臟位(dirtybit)。另一種選擇或過程是在kvfs145返回數(shù)據(jù)寫操作的結(jié)果之前,確保數(shù)據(jù)對象被寫入到存儲裝置120:在那種情況下,kvfs高速緩沖存儲器150可確定任何數(shù)據(jù)可被安全刪掉。

      數(shù)據(jù)對象165可具有對象名稱180。對象名稱180是可用于將數(shù)據(jù)對象165唯一定位在存儲裝置120中的數(shù)據(jù)。以類似的方式,元數(shù)據(jù)對象170可具有自己的名稱,雖然如下面參照圖5和圖6所述,元數(shù)據(jù)對象170的名稱可從數(shù)據(jù)對象165的名稱180得到。通過使元數(shù)據(jù)對象170的名稱從對象名稱180衍生,元數(shù)據(jù)對象170總是可以知道對象名稱180。

      文件175也可具有文件名稱185。文件名稱185獨立于對象名稱180:文件名稱185可在不改變對象名稱180的情況下進行改變,反之亦然。

      圖2示出圖1的計算機105的附加的細(xì)節(jié)。參照圖2,通常,機器105包括一個或多個處理器110,其中,處理器110可包括可用于協(xié)調(diào)機器105的組件的操作的時鐘220和存儲器控制器215。處理器110也可結(jié)合到存儲器115,其中,存儲器115可包括作為示例的隨機存取存儲器(ram)、只讀存儲器(rom)或其他聲明保存介質(zhì)。處理器110也可結(jié)合到存儲裝置120以及網(wǎng)絡(luò)連接器230,其中,網(wǎng)絡(luò)連接器230可以是例如以太網(wǎng)連接器或無線連接器。處理器110也可被連接到在其他組件中的總線240,其中,總線240上連接有用戶接口245和可使用輸入/輸出引擎250管理的輸入/輸出接口接口。

      圖3a至圖3b示出命令和數(shù)據(jù)跨過圖1的計算機的層的流動。在圖3a中,示出本發(fā)明構(gòu)思的一個實施例:應(yīng)用125可發(fā)出存儲裝置120可識別的鍵-值系統(tǒng)命令。當(dāng)應(yīng)用125發(fā)出鍵-值系統(tǒng)命令305時,應(yīng)用125可使用庫函數(shù)。這個庫函數(shù)可被kvfs墊片140所覆蓋(override),而kvfs墊片140隨后可接收鍵-值系統(tǒng)命令305。然后,kvfs墊片140可將鍵-值系統(tǒng)命令305映射到文件系統(tǒng)命令310。文件系統(tǒng)命令310可以是與鍵-值系統(tǒng)命令305類似的文件系統(tǒng)命令,但是是一種可被作為圖1的操作系統(tǒng)的一部分的文件系統(tǒng)135處理的文件系統(tǒng)命令。文件系統(tǒng)135(或圖1的操作系統(tǒng)130,依賴于圖1的操作系統(tǒng)130和文件系統(tǒng)135的實現(xiàn))可訪問頁高速緩沖存儲器315以試圖滿足文件系統(tǒng)命令310。如果頁高速緩沖存儲器315可滿足文件系統(tǒng)命令310,則文件系統(tǒng)135(或圖1的操作系統(tǒng)130)可將結(jié)果320返回到kvfs墊片140。kvfs墊片140可接著將結(jié)果320映射至應(yīng)用125期望的形式:應(yīng)用125期望鍵-值系統(tǒng)命令305的結(jié)果,而所述結(jié)果可能采用與文件系統(tǒng)命令310的結(jié)果不同的形式。

      如果文件系統(tǒng)135(或圖1的操作系統(tǒng)130)使用頁高速緩沖存儲器315無法滿足文件系統(tǒng)命令310,則文件系統(tǒng)135可將文件系統(tǒng)命令310發(fā)送到kvfs145。kvfs145接著可嘗試使用kvfs高速緩沖存儲器150來滿足文件系統(tǒng)命令310。如果kvfs145使用kvfs高速緩沖存儲器150可以滿足文件系統(tǒng)命令310,則kvfs145可返回結(jié)果325。文件系統(tǒng)135(或圖1的操作系統(tǒng)130)接著可進行對于頁高速緩沖存儲器315的任何需要的更新并可將結(jié)果325(如圖3a中的結(jié)果320所示)返回到kvfs墊片140,可如前所述繼續(xù)進行處理。

      kvfs145也可能需要更新存儲裝置120。例如,如果文件系統(tǒng)命令310更新圖1的文件175的元數(shù)據(jù),則kvfs145可更新存儲在存儲裝置120的元數(shù)據(jù)對象170。但是kvfs145是否需要對存儲裝置120進行任何改變?nèi)Q于kvfs145、存儲裝置120的實現(xiàn)以及文件系統(tǒng)命令310的特性,且不一定針對所有的文件系統(tǒng)命令310都需要。

      如果kvfs145使用kvfs高速緩沖存儲器150無法滿足文件系統(tǒng)命令310,則kvfs145可將文件系統(tǒng)命令310映射到鍵-值系統(tǒng)命令330。可期望的,鍵-值系統(tǒng)命令330通常將與應(yīng)用125發(fā)出的鍵-值系統(tǒng)命令305等同,但是鍵-值系統(tǒng)命令330以某種方式不同于鍵-值系統(tǒng)命令305也是可以的。kvfs145接著可從存儲裝置120接收可被kvfs145作為結(jié)果335返回到文件系統(tǒng)135(或圖1的操作系統(tǒng)130)的結(jié)果,之后可如前所述繼續(xù)進行處理。kvfs145也可基于從存儲裝置120接收的結(jié)果335來更新圖1的kvfs高速緩沖存儲器150。例如,如果文件系統(tǒng)命令310涉及對圖1的文件175進行重命名,且圖1的kvfs高速緩沖存儲器150還未存儲圖1的元數(shù)據(jù)對象170,則kvfs145可發(fā)出鍵-值系統(tǒng)命令330來檢索圖1的元數(shù)據(jù)對象170,將圖1的元數(shù)據(jù)對象170的復(fù)本160存儲在圖1的kvfs高速緩沖存儲器150中,并在圖1的kvfs高速緩沖存儲器150中更新圖1的元數(shù)據(jù)對象170的復(fù)本160。kvfs145接著可發(fā)出附加的第二鍵-值系統(tǒng)命令330來從存儲裝置120刪除圖1的元數(shù)據(jù)對象170并將替換元數(shù)據(jù)對象170(諸如,元數(shù)據(jù)170的更新復(fù)本)存儲在存儲裝置120,以使存儲裝置120包括更新的元數(shù)據(jù)。

      圖3b與圖3a類似。但是在本發(fā)明構(gòu)思的其他實施例中,應(yīng)用125可發(fā)出文件系統(tǒng)命令310而不是圖3a的鍵-值系統(tǒng)命令305。例如,應(yīng)用125可以是一種不是被設(shè)計為利用存儲裝置120提供的鍵-值接口的應(yīng)用,而不是期望使用傳統(tǒng)的文件系統(tǒng)命令的應(yīng)用。

      因為應(yīng)用125發(fā)出傳統(tǒng)的文件系統(tǒng)命令,kvfs墊片140不需要將鍵-值系統(tǒng)命令轉(zhuǎn)化為文件系統(tǒng)命令。因此,文件系統(tǒng)135(或圖1的操作系統(tǒng)130)可基于文件系統(tǒng)命令310來利用頁高速緩沖存儲器315。但是kvfs145仍可將文件系統(tǒng)命令310映射到鍵-值系統(tǒng)命令330。通過使用kvfs145將文件系統(tǒng)命令310映射到鍵-值系統(tǒng)命令330,kvfs145對于文件系統(tǒng)135被表現(xiàn)為:存儲裝置120使用傳統(tǒng)的塊存儲,而存儲裝置120實際使用對象存儲。在本發(fā)明構(gòu)思的這樣的實施例中,盡管實際上存儲裝置120不使用傳統(tǒng)的塊存儲,應(yīng)用125也可杠桿式利用(leverage)頁高速緩沖存儲器315的好處。注意,文件系統(tǒng)135(和/或圖1的操作系統(tǒng)130)、kvfs145(和圖1的kvfs高速緩沖存儲器150)以及存儲裝置120的操作與在圖3a中的那些描述相同。

      雖然圖3a和圖3b是作為本發(fā)明構(gòu)思的可供選擇的實施例而被介紹的,但是在圖3a和圖3b中陳述的本發(fā)明構(gòu)思的實施例也可被組合。例如,本發(fā)明構(gòu)思的實施例可在應(yīng)用125發(fā)出鍵-值系統(tǒng)命令(諸如,圖3a的鍵-值系統(tǒng)命令305)時如圖3a所示進行操作,并可在應(yīng)用125發(fā)出文件系統(tǒng)命令(諸如,圖3b的文件系統(tǒng)命令310)時如圖3b所示進行操作。因此,頁高速緩沖存儲器315和圖1的kvfs高速緩沖存儲器150可被應(yīng)用125杠桿式利用而使用鍵-值系統(tǒng)命令或文件系統(tǒng)命令而,且數(shù)據(jù)可在圖1的頁高速緩沖存儲器315和kvfs高速緩沖存儲器150內(nèi)通過這樣的應(yīng)用而被共享。

      圖4示出圖1的鍵-值文件系統(tǒng)(kvfs)層145的細(xì)節(jié)。在圖4中,除了上面參照圖1和圖3a至圖3b描述的kvfs高速緩沖存儲器150之外,kvfs145被示為包括接收單元405、映射單元410、命令單元415和返回單元420。接收單元405可從圖1的操作系統(tǒng)中的其他層(諸如,圖1的文件系統(tǒng)135)接收命令。映射單元410可將文件系統(tǒng)命令映射到鍵-值系統(tǒng)命令。命令單元415可向圖1的存儲裝置120發(fā)出鍵-值系統(tǒng)命令。返回單元420可將結(jié)果返回到圖1的操作系統(tǒng)130的調(diào)用層(諸如,圖1的文件系統(tǒng)135)。注意的是:響應(yīng)于所有的文件系統(tǒng)命令而并不是需要每一個單元。例如,如果從駐留在kvfs高速緩沖存儲器150的數(shù)據(jù)可滿足文件系統(tǒng)命令,則映射單元410和命令單元415可不需要從圖1的存儲裝置120訪問信息。

      上面參照圖3a至圖3b討論了文件系統(tǒng)命令到鍵-值系統(tǒng)命令的映射。為了實現(xiàn)這種映射,映射單元410可包括從文件系統(tǒng)命令至鍵-值系統(tǒng)命令的任何期望的映射。例如,映射單元410可包括指定哪個(哪些)鍵-值系統(tǒng)命令對應(yīng)于給定的文件系統(tǒng)命令的表。注意的是:所述關(guān)聯(lián)可以是一對多:單個文件系統(tǒng)命令可包括多個鍵-值系統(tǒng)命令。例如,在閃速ssd中,數(shù)據(jù)可不被覆寫(overwritten)。改變數(shù)據(jù)包括使原始數(shù)據(jù)(可在任何適當(dāng)?shù)臅r間的ssd的垃圾收集的對象)失效和寫入新的數(shù)據(jù)對象。因此,改變文件的任何元數(shù)據(jù)可需要kvfs145刪除圖1的元數(shù)據(jù)對象170(更準(zhǔn)確地講,kvfs145可使在存儲裝置120上的圖1的元數(shù)據(jù)對象170失效,并使存儲裝置120執(zhí)行垃圾收集來釋放被舊對象占用的空間)并存儲替換的元數(shù)據(jù)對象。

      值得注意的是:在系統(tǒng)內(nèi)的各種數(shù)據(jù)元素的名稱之間可形成區(qū)別。暫時返回圖1,數(shù)據(jù)對象165具有對象名稱180,而文件175具有文件名稱185。(如下面參照圖5至圖8討論的,元數(shù)據(jù)對象170同樣具有對象名稱。但是由于元數(shù)據(jù)對象170的名稱是一種對于計算機105的操作嚴(yán)格地內(nèi)部的元素,所以元數(shù)據(jù)對象170的名稱對于本討論不重要。)對象名稱180標(biāo)識數(shù)據(jù)對象165;文件名稱185標(biāo)識文件175。文件名稱185本身是存儲在元數(shù)據(jù)對象170內(nèi)的元數(shù)據(jù):圖1中所示的表示僅是象征意義的。文件175實際是文件系統(tǒng)135內(nèi)的元素,而數(shù)據(jù)對象165是存儲裝置120的鍵-值系統(tǒng)內(nèi)的元素。對象名稱180和文件名稱185是不同的:如果不是完全不可能,對于對象名稱180和文件名稱185是相同的將是極不尋常的。

      此外,對象名稱180和文件名稱185可都在不影響其他的情況下被修改。例如,如果應(yīng)用125決定對文件名稱185進行重新命名,這種改變影響元數(shù)據(jù)對象170的內(nèi)容,但不改變對象名稱180。可選擇地,如果對象名稱180將被改變,這將影響數(shù)據(jù)對象165(并對元數(shù)據(jù)對象170有間接影響,元數(shù)據(jù)對象170的對象名稱也將改變);但是文件名稱185將保持不變。因此,保持對象名稱和文件名稱的概念分離是重要的:它們是相關(guān)的但不同的概念。

      返回圖4,kvfs145也可包括索引節(jié)點(inode)425。索引節(jié)點425可以是表示文件的數(shù)據(jù)結(jié)構(gòu)。索引節(jié)點425可以是如在基于unix的系統(tǒng)中使用的傳統(tǒng)的索引節(jié)點,或者索引節(jié)點425可以是新穎的數(shù)據(jù)結(jié)構(gòu)。索引節(jié)點415可存儲關(guān)于文件(諸如,圖1的文件175)的信息。通常,索引節(jié)點415可存儲文件元數(shù)據(jù)(諸如,文件名稱185、文件創(chuàng)建的日期和時間、文件的所有者等)。但是索引節(jié)點425可包括適于實現(xiàn)的附加的信息。

      圖5示出圖1的kvfs墊片140的細(xì)節(jié)。在圖5中,kvfs墊片140可包括接收單元505、映射單元510、命令單元515以及返回單元520。接收單元505可從圖1的應(yīng)用125接收命令。映射單元510可將鍵-值系統(tǒng)命令映射到文件系統(tǒng)命令。命令單元515可向圖1的文件系統(tǒng)135(或圖1的操作系統(tǒng)130)發(fā)出文件系統(tǒng)命令。返回單元520可將結(jié)果返回到圖1的應(yīng)用125。注意的是,與圖4的kvfs145不同,kvfs墊片140本身可能不滿足鍵-值系統(tǒng)命令,而是將文件系統(tǒng)命令發(fā)送到圖1的文件系統(tǒng)135(或圖1的操作系統(tǒng)130)。

      上面參照圖3a至圖3b討論了鍵-值系統(tǒng)命令到文件系統(tǒng)命令的映射。為了實現(xiàn)這種映射,映射單元510可包括從鍵-值系統(tǒng)命令到文件系統(tǒng)命令的任何期望的映射。例如,映射單元510可包括指定哪個(哪些)文件系統(tǒng)命令對應(yīng)于給定的鍵-值系統(tǒng)命令的表。但是與圖4的映射單元410相比,kvfs墊片410中的映射單元510總體具有更簡單的實現(xiàn)。當(dāng)存在可被發(fā)出到圖1的文件系統(tǒng)135的許多文件系統(tǒng)命令時,僅存在可被發(fā)出到鍵-值存儲裝置的三個鍵-值系統(tǒng)命令:get、put和delete。get命令從存儲裝置讀取數(shù)據(jù);put命令將數(shù)據(jù)寫入存儲裝置;delete命令使存儲裝置上的數(shù)據(jù)失效。因此,考慮到更少數(shù)量的命令可被發(fā)出到鍵-值存儲裝置,映射單元510的實現(xiàn)趨于更加簡單。另外,圖1的文件系統(tǒng)135通常具有用于讀取、寫入和刪除數(shù)據(jù)的類似的命令,使得從鍵-值系統(tǒng)命令到文件系統(tǒng)命令的映射相對簡單。然而,取決于圖1的操作系統(tǒng)130和圖1的存儲裝置120的特性,單個鍵-值系統(tǒng)命令可映射到多個文件系統(tǒng)命令。

      kvfs墊片140也可包括文件描述符查找表525。文件描述符是用于訪問文件中的數(shù)據(jù)(用于寫入或讀取)的內(nèi)部機制。kvfs墊片140可將針對文件描述符的標(biāo)識符存儲在文件描述符查找表525中:定位的文件描述符接著可作為針對文件系統(tǒng)命令的變元(argument)被傳遞到圖1的文件系統(tǒng)135。在沒有文件描述符查找表525的情況下,kvfs墊片140在每次需要訪問文件時向圖1的操作系統(tǒng)130查詢文件描述符,或者另外打開一個文件,執(zhí)行任何需要的命令,然后針對每一個鍵-值系統(tǒng)命令關(guān)閉文件。但是這兩種方法都是耗時的。通過將文件描述符存儲在文件描述符查找表525中,kvfs墊片140可快速確定地針對與接收的鍵-值系統(tǒng)命令對應(yīng)的文件系統(tǒng)命令的文件描述符。下面參照圖7進一步描述文件描述符查找表525。

      kvfs墊片140還可包括名稱生成器單元530。如上所述,元數(shù)據(jù)對象具有名稱(對于能夠訪問對象是必要的),但是元數(shù)據(jù)對象名稱僅在從對象轉(zhuǎn)換到文件時重要,所以元數(shù)據(jù)對象的名稱僅在圖1的kvfs墊片140和kvfs145內(nèi)重要。因此,可使用針對元數(shù)據(jù)對象生成名稱的幾乎任何期望的算法。

      對于為元數(shù)據(jù)對象生成名稱的過程,有一些期望的特征。第一,過程應(yīng)該是確定的:給定相同的數(shù)據(jù),應(yīng)該總是得到相同的元數(shù)據(jù)名稱。第二,過程應(yīng)該避免沖突:給定不同的數(shù)據(jù),應(yīng)該得到不同的元數(shù)據(jù)名稱。第三,由于對象名稱可具有任意長度,過程應(yīng)該能夠處理任意潛在長度的數(shù)據(jù)。這些是應(yīng)該出現(xiàn)在名稱生成器單元530中的所有性質(zhì),其中,給定對象名稱180,名稱生成器單元530可生成針對圖1的元數(shù)據(jù)對象170的名稱。

      圖6示出圖5的名稱生成器單元530的細(xì)節(jié),其可從圖1的對象名稱180生成針對圖1的元數(shù)據(jù)對象170的名稱。通過從對象名稱180開始,名稱生成器單元530可避免嘗試從不一致的輸入為圖1的元數(shù)據(jù)對象170一致地生成相同的名稱的復(fù)雜性。在圖6中,名稱生成器單元530可包括哈希單元605、ascii表示單元610和沖突索引單元615。哈希單元605可對對象名稱180執(zhí)行哈希。加密哈希算法(諸如,sha-1)提供針對名稱生成期望的大部分性質(zhì),因此針對元數(shù)據(jù)對象生成名稱而做出很好的選擇。但是存在不是文件名稱的一部分的一些字符(諸如,斜線,經(jīng)常用于將文件和它的容器分隔開)。由于加密哈希算法的結(jié)果不一定如文件名稱一樣可用,所以ascii表示單元610可利用哈希單元605的結(jié)果并生成該結(jié)果的ascii表示。ascii表示單元610可從哈希單元605的結(jié)果消除任何有問題的字符。

      當(dāng)然,加密哈希算法不能保證哈希結(jié)果之間沒有沖突。例如,不管輸入數(shù)據(jù)的大小如何,sha-1產(chǎn)生160比特的哈希結(jié)果。因此,如果sha-1得到多于160比特的輸入數(shù)據(jù),則sha-1將產(chǎn)生160比特的哈希。對于大于160比特的任意輸入大小,由于存在比輸出多的可能的輸入,所以沖突的可能性仍然存在,即使該可能性很小。為了處理該可能性,沖突索引單元615可將沖突索引添加到ascii表示,以防沖突發(fā)生。哈希單元605的結(jié)果的ascii表示與沖突索引的組合可避免在圖1的元數(shù)據(jù)對象170的名稱生成中的任意可能的沖突。

      一旦圖1的元數(shù)據(jù)對象170的名稱已被生成,圖1的kvfs墊片140和圖1的kvfs145可使用該名稱訪問圖1的元數(shù)據(jù)對象170。通過將put、get或delete請求連同生成的圖1的元數(shù)據(jù)對象170的名稱發(fā)送到圖1的存儲裝置120,圖1的kvfs墊片140和圖1的kvfs145可可靠和一致地訪問并使用圖1的元數(shù)據(jù)對象170。

      圖7示出圖5的文件描述符查找表525的細(xì)節(jié)。如上面參照圖5所述,文件描述符查找表525提供針對圖1的kvfs墊片140的機制來訪問針對給定文件的文件描述符。在圖7中,文件描述符查找表525可包括任何數(shù)量的哈希與文件描述符的關(guān)聯(lián)。例如,第一哈希705與第一文件描述符710相關(guān)聯(lián),第二哈希715與第二文件描述符720相關(guān)聯(lián),以及第三哈希725與第三文件描述符730相關(guān)聯(lián)。在圖7中,文件描述符查找表525示出三個這樣的關(guān)聯(lián),但是本發(fā)明構(gòu)思的實施例可支持任意數(shù)量的這樣的關(guān)聯(lián)。給定哈希值,如果在文件描述符查找表525中存在,則kvfs墊片140可找到對應(yīng)的文件描述符。

      第一哈希705、第二哈希715和第三哈希725可存儲由圖1的操作系統(tǒng)130管理的文件的文件描述符。如果還沒有文件描述符被打開,則圖1的kvfs墊片140可打開文件并收回文件描述符。圖1的kvfs墊片140接著可將哈希值和文件描述符添加到文件描述符查找表525以供以后使用。

      圖1的kvfs墊片140可將圖1的元數(shù)據(jù)對象170的名稱作為哈希而使用,以在文件描述符查找表525中進行查找。由于可通過使用圖6的哈希單元605(連同其他過程)來生成圖1的元數(shù)據(jù)對象170的名稱,在文件描述符查找表525中兩個不同的文件描述符與相同的哈希值相關(guān)聯(lián)的可能性實際為零。

      圖8示出圖1的元數(shù)據(jù)對象170的示例結(jié)構(gòu)的細(xì)節(jié)。在圖8中,元數(shù)據(jù)對象170可包括各種數(shù)據(jù)字段。這些數(shù)據(jù)字段可包括文件名稱185、圖1的文件175被創(chuàng)建的日期805(在此使用的“日期”意在包括日期和時間二者)、圖1的文件175最后一次被修改的日期810、圖1的文件175最后一次被訪問的日期815、圖1的文件175的類型820(例如,可執(zhí)行文件、文檔、文本文件或其他)、圖1的文件175的大小825、存儲圖1的文件175的容器830以及圖1的文件175的所有者835。

      元數(shù)據(jù)對象170還可包括對象名稱180。通過包括對象名稱180,對元數(shù)據(jù)對象170的訪問為系統(tǒng)提供了回到數(shù)據(jù)對象165的方式(重新調(diào)用使得元數(shù)據(jù)對象170的名稱可從對象名稱180生成)。在本發(fā)明構(gòu)思的一些實施例中,元數(shù)據(jù)對象170可直接包括對象名稱180。為了有效訪問元數(shù)據(jù)對象170,元數(shù)據(jù)對象170應(yīng)該具有固定的大小,這意味著為對象名稱180分配的空間將不得不預(yù)先固定。但是由于對象名稱的長度可能無限長,在元數(shù)據(jù)對象170內(nèi)包括對象名稱180可創(chuàng)造復(fù)雜:對象名稱180將需要不超過分配給元數(shù)據(jù)對象170內(nèi)的對象名稱180的字段的大小。實際上,這不太可能是問題:分配給名稱180的字段可包括任意期望數(shù)量的字符:200、1000、10000或更多。但是存在字段溢出的可能性,其可能在圖1的操作系統(tǒng)內(nèi)創(chuàng)建錯誤。

      作為可供替換的選擇,如圖8所示,元數(shù)據(jù)對象170可包括可指向存儲對象名稱180位置的指針840。一旦系統(tǒng)知道對象名稱180存儲在何處以及對象名稱180的長度845,則系統(tǒng)可檢索到對象名稱180。示出元數(shù)據(jù)對象170包括指向名稱長度845的指針的原因是:讀取固定大小的數(shù)據(jù)比讀取未知大小的數(shù)據(jù)更高效。雖然圖8示出與對象名稱180一起存儲的名稱長度845,在本發(fā)明構(gòu)思的其他實施例中名稱長度845可被存儲在元數(shù)據(jù)對象170內(nèi)。

      元數(shù)據(jù)對象170也可包括指向權(quán)限855的指針850。權(quán)限855指定對于圖1的數(shù)據(jù)對象165存在哪些權(quán)限。權(quán)限855的結(jié)構(gòu)可根據(jù)圖1的操作系統(tǒng)130而變化。例如,在基于unix的系統(tǒng)中,權(quán)限855可指定圖1的文件175的所有者、在包括圖1的文件175的所有者的組中的其他用戶以及其他是否可以讀取、寫入和執(zhí)行文件。其他操作系統(tǒng)以其他形式指定權(quán)限855。雖然圖8示出權(quán)限855是通過來自元數(shù)據(jù)對象170的指針850而被訪問,然而在本發(fā)明構(gòu)思的其他實施例中,權(quán)限可被存儲在元數(shù)據(jù)對象170內(nèi)。

      圖9a至圖9e示出根據(jù)本發(fā)明構(gòu)思的實施例的使用圖1的計算機處理命令的示例過程的流程圖。在圖9a中,在塊903處,圖1的kvfs墊片140可從圖1的應(yīng)用125接收圖3a的鍵-值系統(tǒng)命令305。在塊906處,圖1的kvfs墊片140可將圖3a的鍵-值系統(tǒng)命令305映射到圖3a的文件系統(tǒng)命令310。在塊909處,圖1的kvfs墊片140可搜索圖5的文件描述符查找表525來查看期望的文件是否先前已經(jīng)被打開。如上面參照圖6所述,該搜索可使用由圖5的名稱生成器單元530生成的圖1的元數(shù)據(jù)對象170的名稱。

      在塊912(圖9b)處,圖1的kvfs墊片140可確定圖5的文件描述符查找表525是否包含期望的文件描述符。如果圖5的文件描述符查找表525包含期望的文件描述符,則在塊915處,圖4的kvfs墊片140可從圖5的文件描述符查找表525訪問期望的文件描述符。否則,在塊918處,kvfs墊片140可通過打開期望的文件向圖1的操作系統(tǒng)請求新的文件描述符。在塊921處,圖1的kvfs墊片140可接收新的文件描述符,以及在塊924處,圖1的kvfs墊片140可將新的文件描述符添加到圖5的文件描述符查找表525以供將來使用。

      無論哪種方式,一旦圖1的kvfs墊片140具有期望的文件描述符,在塊927(圖9c)處,圖1的kvfs145可從圖1的文件系統(tǒng)135(更普遍地,從圖1的操作系統(tǒng)130)接收圖1的文件系統(tǒng)命令310。該塊可涉及圖1的kvfs墊片140將圖3a的文件系統(tǒng)命令310發(fā)送到圖1的操作系統(tǒng)130,以試圖使用圖3a的頁高速緩沖存儲器315來滿足請求;如果圖3a的頁高速緩沖存儲器315不能滿足請求,則圖1的操作系統(tǒng)130可將圖3a的文件系統(tǒng)命令310轉(zhuǎn)發(fā)到圖1的kvfs145。

      在塊930處,kvfs145可進行檢查以查看存儲期望的元數(shù)據(jù)的圖4的索引節(jié)點425是否存在。如果不存在,則在塊933處,圖1的kvfs145可向圖1的存儲裝置120請求圖1的針對文件175的元數(shù)據(jù)(更具體地,圖1的kvfs145可向圖1的存儲裝置120請求圖1的元數(shù)據(jù)對象170)。在塊936處,圖1的kvfs145可從圖1的存儲裝置120接收圖1的針對文件175的元數(shù)據(jù)對象170。在塊939處,圖1的kvfs145可將元數(shù)據(jù)存儲在圖4的索引節(jié)點425中。

      在塊942處,不論存儲期望的元數(shù)據(jù)的圖4的索引節(jié)點425是否存在,圖1的kvfs145可從圖1的元數(shù)據(jù)對象170或從圖4的索引節(jié)點425訪問圖1的對象名稱180。在塊945處,圖1的kvfs145可將圖3a的文件系統(tǒng)命令310映射到圖3a的鍵-值系統(tǒng)命令330。

      在塊948(圖9d)處,如果圖3a的文件系統(tǒng)命令310以某種方式修改圖1的文件175的元數(shù)據(jù),則圖1的kvfs145可修改圖4的索引節(jié)點425。在塊951處,圖1的kvfs145可試圖使用圖1的kvfs高速緩沖存儲器150來滿足圖3a的鍵-值系統(tǒng)命令330。

      在塊954處,圖1的kvfs145可搜索圖1的kvfs高速緩沖存儲器150來查看圖1的kvfs高速緩沖存儲器150是否存儲了期望的數(shù)據(jù)。在塊957處,圖1的kvfs145確定圖1的kvfs高速緩沖存儲器150是否存儲了期望的數(shù)據(jù)。如果圖1的數(shù)據(jù)對象165(或圖1的數(shù)據(jù)對象165的一些相關(guān)部分)未被存儲在圖1的kvfs高速緩沖存儲器150中,則在塊960處,圖1的kvfs145可將圖3a的鍵-值系統(tǒng)命令330發(fā)送到圖1的存儲裝置120來檢索圖1的數(shù)據(jù)對象165。在塊963處,圖1的kvfs145可從存儲裝置120接收圖1的數(shù)據(jù)對象165,以及在塊966處,圖1的kvfs145可將圖1的數(shù)據(jù)對象165的復(fù)本155存儲在圖1的kvfs高速緩沖存儲器150中。當(dāng)然,該存儲塊可涉及從圖1的kvfs高速緩沖存儲器150刪掉一些數(shù)據(jù)來為新的數(shù)據(jù)騰出空間。圖1的kvfs145可使用任何期望的算法來選擇從圖1的kvfs高速緩沖存儲器150刪掉的數(shù)據(jù)。

      此時,圖1的kvfs145可確定圖1的kvfs高速緩沖存儲器150存儲了期望的數(shù)據(jù)。在塊969(圖9e)處,圖1的kvfs145可從圖1的kvfs高速緩沖存儲器150訪問圖1的數(shù)據(jù)對象165的復(fù)本155的數(shù)據(jù)或一部分?jǐn)?shù)據(jù)。如果數(shù)據(jù)被寫入,該訪問操作可涉及從圖1的存儲裝置120刪除圖1的數(shù)據(jù)對象165并寫入新的數(shù)據(jù)對象,或僅將圖1的kvfs高速緩沖存儲器150中的頁標(biāo)記為臟(以使所述頁可在稍后的時間被沖刷(flush)到圖1的存儲裝置120)。在塊972處,圖1的kvfs145可將圖3a的結(jié)果335返回到圖1的操作系統(tǒng)330,最終在塊975處,作為圖3a的結(jié)果320而傳送到圖1的應(yīng)用125。

      上面的描述非常復(fù)雜,因為考慮了在圖1的操作系統(tǒng)130內(nèi)的所有層次的操作:圖1的kvfs墊片140、圖1的文件系統(tǒng)135以及圖1的kvfs145。分別回顧在圖1的kvfs墊片140和圖1的kvfs145的操作可能是有益的。(由于在本發(fā)明構(gòu)思的實施例中圖1的文件系統(tǒng)135保持不變,下面不在提供對于圖1的文件系統(tǒng)135的操作的分析。)

      圖10a至圖10b示出根據(jù)本發(fā)明構(gòu)思的實施例的圖1的kvfs墊片140的操作的示例過程的流程圖。在圖10a中,在塊1005處,圖5的接收單元505可從圖1的應(yīng)用125接收圖3a的鍵-值系統(tǒng)命令305。在塊1010處,圖5的映射單元510可將圖3a的鍵-值系統(tǒng)命令305映射到圖3a的文件系統(tǒng)命令310。如下面參照圖13所述,這可涉及針對圖1的元數(shù)據(jù)對象170生成名稱。在塊1015處,圖1的kvfs墊片140可搜索文件描述符查找表525來查看針對圖1的文件175是否存在文件描述符。

      在塊1020(圖10b)處,圖1的kvfs墊片140可確定在圖5的文件描述符查找表525中是否找到針對圖1的文件175的文件描述符。如果在圖5的文件描述符查找表525中找到針對圖1的文件175的文件描述符,則在塊1025處訪問文件描述符。否則,在塊1030處,圖1的kvfs墊片140請求針對圖1的文件175的新的文件描述符。該請求可包含要求圖1的文件系統(tǒng)135打開圖1的文件175。在塊1035處,圖1的kvfs墊片140可從圖1的文件系統(tǒng)135接收新的文件描述符,以及在塊1040處,圖1的kvfs墊片140可將新的文件描述符(和圖1的元數(shù)據(jù)對象170的名稱)添加到圖5的文件描述符查找表525。

      無論哪種方式,一旦圖1的kvfs墊片140具有針對圖1的文件175的文件描述符,則在塊1045處,圖1的kvfs墊片140可向圖1的存儲裝置120發(fā)送文件系統(tǒng)命令310(通過圖1的操作系統(tǒng)130)。然后,在塊1050處,圖1的kvfs墊片140可將從圖3a的操作系統(tǒng)130接收的圖3a的結(jié)果325返回到圖1的應(yīng)用125。

      再次注意的是:圖1的kvfs墊片140負(fù)責(zé)將鍵-值系統(tǒng)命令轉(zhuǎn)化為文件系統(tǒng)命令,使得圖3a的操作系統(tǒng)130的本地頁高速緩沖存儲器315可被杠桿式利用(leverage)。如果應(yīng)用125發(fā)出文件系統(tǒng)命令而不是鍵-值系統(tǒng)命令,則圖1的kvfs墊片140可被繞開,且文件系統(tǒng)命令可直接傳送到圖1的操作系統(tǒng)130(以及圖3b的結(jié)果325可被直接返回到圖1的應(yīng)用125)。

      圖11a至圖11b示出根據(jù)本發(fā)明構(gòu)思的實施例的圖1的kvfs的操作的示例過程的流程圖。在圖11a中,在塊1105處,圖1的kvfs145可接收圖3a的文件系統(tǒng)命令310。在塊1110處,圖1的kvfs145可搜索圖4的索引節(jié)點425,其中,該索引節(jié)點425包括通過圖3a的文件系統(tǒng)命令310標(biāo)識的圖1的文件175的元數(shù)據(jù)。在塊1115處,圖1的kvfs145可確定圖4的索引節(jié)點425是否被定位。如果圖4的索引節(jié)點425被定位,則在塊1120處,圖1的kvfs145可訪問圖4的索引節(jié)點425,以及在塊1125處,圖1的kvfs145可從圖4的索引節(jié)點425訪問對象名稱180。

      另一方面,如果在塊1115處,圖1的kvfs145未能定位圖4的索引節(jié)點425,則在塊1130(圖11b)處,圖1的kvfs145可向圖1的存儲裝置120請求圖1的元數(shù)據(jù)對象170。在塊1135處,圖1的kvfs145可從存儲裝置120接收圖1的元數(shù)據(jù)對象170。在塊1140處,圖1的kvfs145可從圖1的元數(shù)據(jù)對象170提取元數(shù)據(jù)。在塊1145處,圖1的kvfs145可從圖1的元數(shù)據(jù)對象170訪問圖1的對象名稱180。如果元數(shù)據(jù)對象170直接存儲對象名稱180,則這種提取可能是直接操作,或者其可能是間接操作:圖1的kvfs145可能在載入對象名稱180之前首先提取指向?qū)ο竺Q180的指針(和可能的名稱長度845)。以及在塊1150處,圖1的kvfs145可創(chuàng)建圖4的索引節(jié)點425。

      不管圖4的索引節(jié)點425是被定位還是被創(chuàng)建,在塊1155處,如果在圖1的kvfs高速緩沖存儲器150中出現(xiàn),則圖1的kvfs145可試圖對圖1的數(shù)據(jù)對象165的復(fù)本155執(zhí)行文件系統(tǒng)命令。最后,在塊1160處,圖1的kvfs145可返回命令的結(jié)果。

      回顧圖11a至圖11b可能提出了:圖1的kvfs145不將鍵-值系統(tǒng)命令發(fā)送到圖1的存儲裝置120。如下面參照圖12a至圖12b所解釋的,在圖11b的塊1155闡述的結(jié)論將是不正確的。

      圖12a至圖12b示出根據(jù)本發(fā)明構(gòu)思的實施例的使用圖1的kvfs高速緩沖存儲器150的示例過程的流程圖。在圖12a,在塊1205處,圖1的kvfs145可搜索圖1的kvfs高速緩沖存儲器150來查看圖1的數(shù)據(jù)對象165的復(fù)本155和圖1的元數(shù)據(jù)對象170的復(fù)本160是否在圖1的kvfs高速緩沖存儲器150中。在塊1210處,圖1的kvfs145可確定圖1的kvfs高速緩沖存儲器150是否存儲了圖1的數(shù)據(jù)對象165的復(fù)本155和圖1的元數(shù)據(jù)對象170的復(fù)本160。注意,在上下文中,“存儲復(fù)本”并不意味著存儲圖1的數(shù)據(jù)對象165的復(fù)本155和圖1的元數(shù)據(jù)對象170的復(fù)本160的全部,乃至,存儲圖1的數(shù)據(jù)對象165和元數(shù)據(jù)對象170二者的一部分也不是必需的。所有需要的只是針對圖1的kvfs高速緩沖存儲器150存儲圖1的數(shù)據(jù)對象165和/或元數(shù)據(jù)對象170的應(yīng)用了文件系統(tǒng)命令的那部分的復(fù)本。如果圖1的kvfs高速緩沖存儲器150存儲圖1的數(shù)據(jù)對象165和/或元數(shù)據(jù)對象170的所有的相關(guān)部分的復(fù)本,則即使圖1的復(fù)本155和復(fù)本160不是圖1的數(shù)據(jù)對象165和元數(shù)據(jù)對象170的完整的復(fù)本,圖1的kvfs145也可推斷出圖1的kvfs高速緩沖存儲器150存儲圖1的數(shù)據(jù)對象165的復(fù)本155和圖1的元數(shù)據(jù)對象170的復(fù)本160。

      如果圖1的kvfs高速緩沖存儲器150存儲了圖1的數(shù)據(jù)對象165的復(fù)本155和圖1的元數(shù)據(jù)對象170的復(fù)本160,則在塊1215處,圖1的kvfs145可對圖1的復(fù)本155和復(fù)本160執(zhí)行圖3a的文件系統(tǒng)命令310。如果文件系統(tǒng)命令310涉及改變針對圖1的數(shù)據(jù)對象165或圖1的元數(shù)據(jù)對象170的任何數(shù)據(jù),則圖1的kvfs145可將圖1的kvfs高速緩沖存儲器150中的受影響的頁標(biāo)記為臟,使得改變的數(shù)據(jù)可最終被沖刷到存儲裝置120,或者圖1的kvfs145可立即刪除存在的受影響的對象并將改變的對象的替換復(fù)本存儲在存儲裝置120。

      如果圖1的kvfs高速緩沖存儲器150未存儲圖1的數(shù)據(jù)對象165的復(fù)本155,則在塊1220(圖12b)處,圖1的kvfs145可將圖3a的文件系統(tǒng)命令310映射到圖3a的鍵-值系統(tǒng)命令330。在塊1225處,圖1的kvfs145可將圖3a的鍵-值系統(tǒng)命令330發(fā)送到圖1的存儲裝置120。在塊1230處,圖1的kvfs145可從存儲裝置120接收被圖3a的鍵-值系統(tǒng)命令330影響的對象的復(fù)本。在塊1235處,圖1的kvfs145可將圖1的數(shù)據(jù)對象165的復(fù)本155和/或圖1的元數(shù)據(jù)對象170的復(fù)本160存儲在圖1的kvfs高速緩沖存儲器150中,其從圖1的存儲裝置120接收。

      在塊1240處,不論圖1的kvfs高速緩沖存儲器150是否存儲圖1的復(fù)本155和/或復(fù)本160或圖1的數(shù)據(jù)對象165和/或元數(shù)據(jù)對象170,命令已被執(zhí)行。在塊1240處,圖1的kvfs145可修改圖4的索引節(jié)點425來反映被圖3a的文件系統(tǒng)命令330指示的任何變化。在塊1245處,圖1的kvfs145可從圖1的kvfs高速緩沖存儲器150訪問來自圖1的復(fù)本155和/或復(fù)本160中的一個或二者的相關(guān)部分的數(shù)據(jù)。在塊1250處,圖1的kvfs145可將訪問部分的數(shù)據(jù)返回到圖1的操作系統(tǒng)130。

      圖13示出根據(jù)本發(fā)明構(gòu)思的實施例的使用圖5的名稱生成器單元530從對象名稱180生成文件名稱的示例過程的流程圖。在圖13中,在塊1305處,圖1的kvfs墊片140可接收對象名稱180,從該對象名稱180將生成文件名稱。在塊1310處,圖6的哈希單元605可將哈希算法應(yīng)用到圖1的對象名稱180來產(chǎn)生哈希值。在塊1315處,圖6的ascii表示單元610可生成哈希值的ascii表示,從而在圖1的文件系統(tǒng)135內(nèi)產(chǎn)生有效的文件名稱。在塊1320處,沖突索引單元615可將哈希值的ascii表示與沖突索引進行結(jié)合來產(chǎn)生針對圖1的元數(shù)據(jù)對象170的被確保為在圖1的操作系統(tǒng)130內(nèi)是唯一的(或至少,在被假設(shè)包含圖1的文件175的文件夾內(nèi)是惟一)的名稱。

      圖14示出根據(jù)本發(fā)明構(gòu)思的實施例的在圖1的系統(tǒng)中修改圖1的元數(shù)據(jù)對象170的示例過程的流程圖。回想一下,當(dāng)圖1的存儲裝置120是基于閃存的存儲裝置時,數(shù)據(jù)可不被覆寫。相反,修改數(shù)據(jù),則原始數(shù)據(jù)無效(并稍后遭受垃圾收集),包含修改數(shù)據(jù)的新的數(shù)據(jù)對象被寫入。在圖14中,在塊1410處,圖1的kvfs145可從圖1的存儲裝置120刪除圖1的元數(shù)據(jù)對象170。在塊1415處,圖1的kvfs145可將替換元數(shù)據(jù)對象存儲在圖1的存儲裝置120。

      在圖9a至圖14中,示出了本發(fā)明構(gòu)思的一些實施例。但是本領(lǐng)域的技術(shù)人員將認(rèn)識到,通過改變塊的順序、通過省略塊或通過包括附圖中未示出的鏈接,本發(fā)明構(gòu)思的其他實施例也是可行的。無論是否明確地描述,流程圖的所有這樣的變化被認(rèn)為是本發(fā)明構(gòu)思的實施例。

      下面的討論意在提供對可實現(xiàn)本發(fā)明構(gòu)思的特定方面的適用的機器的簡潔的、通用的描述。通過來自傳統(tǒng)的輸入裝置(諸如,鍵盤、鼠標(biāo)等)的輸入以及通過從另一個機器接收的指令、與虛擬現(xiàn)實(vr)環(huán)境的交互、生物反饋或其他輸入信號,可至少部分地控制所述機器。如在此使用的,術(shù)語“機器”意在廣泛地包含單個機器、虛擬機器或一起操作的通信結(jié)合的機器、虛擬機器或裝置的系統(tǒng)。示例性的機器包括計算裝置(諸如,個人計算機、工作站、服務(wù)器、便攜式計算機、手持裝置、手機、平板等)以及運輸裝置(諸如,個人或公共交通工具(例如,汽車、火車、出租車等))。

      所述機器可包括嵌入式控制器,諸如可編程或非可編程邏輯裝置或陣列、專用集成電路(asic)、嵌入式計算機、智能卡等。所述機器可利用針對一個或多個遠程機器的一個或多個連接,諸如,通過網(wǎng)絡(luò)接口、調(diào)制解調(diào)器或其他通信結(jié)合。通過物理和/或邏輯網(wǎng)絡(luò)(諸如,內(nèi)部網(wǎng)、互聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)等),機器可以是互聯(lián)的。本領(lǐng)域的技術(shù)人員可理解,網(wǎng)絡(luò)通信可利用各種有線和/或無線短程或遠程載體和協(xié)議,其包括射頻(rf)、衛(wèi)星、微波、電氣和電子工程師協(xié)會(ieee)802.11、光纖、紅外、電纜、激光等。

      本發(fā)明構(gòu)思的實施例可通過參考或結(jié)合相關(guān)聯(lián)的數(shù)據(jù)而被描述,其中,相關(guān)聯(lián)的數(shù)據(jù)包括當(dāng)被機器訪問時,引起機器執(zhí)行任務(wù)或定義抽象的數(shù)據(jù)類型或低級硬件環(huán)境的函數(shù)、過程、數(shù)據(jù)結(jié)構(gòu)、應(yīng)用程序等。相關(guān)聯(lián)的數(shù)據(jù)可被存儲在例如易失性和/或非易失性存儲器(例如,ram、rom等)或存儲在其他存儲裝置以及它們相關(guān)聯(lián)的存儲介質(zhì)(其包括硬盤、軟盤、光存儲、磁帶、閃存、記憶棒、數(shù)字視頻光盤、生物存儲等)。相關(guān)聯(lián)的數(shù)據(jù)可以以數(shù)據(jù)包、串行數(shù)據(jù)、并行數(shù)據(jù)、傳播的信號等的形式通過包括物理和/或邏輯網(wǎng)絡(luò)的傳輸環(huán)境而進行傳送,并可以以壓縮或加密的格式而被使用。相關(guān)聯(lián)的數(shù)據(jù)可在分布式的環(huán)境中使用,并本地和/或遠程存儲以備機器訪問。

      本發(fā)明構(gòu)思的實施例可包括包含由一個或多個處理器執(zhí)行的指令的有形的、非暫時的機器可讀介質(zhì),其中,所述指令包括如在此描述的用于執(zhí)行本發(fā)明構(gòu)思的元件的指令。

      已經(jīng)參考示出的實施例描述和示出了本發(fā)明構(gòu)思的原理,將認(rèn)識到,示出的實施例可在不脫離該原理的情況下對布置和細(xì)節(jié)進行修改,并可以以任何期望的方式組合。以及,雖然前面的討論集中在具體的實施例,但時也考慮其他配置。特別地,即使在此使用諸如“根據(jù)本發(fā)明構(gòu)思的實施例”的表達,這些短語意味著普遍參考實施例的可能性,并不意在將本發(fā)明構(gòu)思限制到具體的實施例配置。如在此使用的,這些術(shù)語可參考被合并到其他實施例的相同的或不同的實施例。

      上述示例性實施例不被解釋為限制本發(fā)明構(gòu)思。雖然已經(jīng)描述了一些實施例,本領(lǐng)域的技術(shù)人員將很容易地理解,在不是實質(zhì)地脫離本公開的新穎教導(dǎo)和優(yōu)勢的情況下,可對那些實施例進行很多修改。因此,所有這樣的修改意在被包括在如權(quán)利要求定義的本發(fā)明構(gòu)思的范圍之內(nèi)。

      因此,考慮到在此描述的實施例的各種各樣的排列,該具體實施方式和附件僅意在說明,且不應(yīng)該被認(rèn)為限制本發(fā)明構(gòu)思的范圍。所以,如本發(fā)明構(gòu)思所要求的,所附權(quán)利要求及其等同物的范圍和精神內(nèi)可進行所有這樣的修改。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1