国产精品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)和方法

      文檔序號:6351063閱讀:210來源:國知局

      專利名稱::用于分配存儲的設備、系統(tǒng)和方法
      技術領域
      :本發(fā)明涉及數(shù)據(jù)存儲的分配并且更具體地涉及數(shù)據(jù)存儲在非易失性存儲裝置諸如固態(tài)存儲裝置上的分配。
      背景技術
      :相關領域描述典型的數(shù)據(jù)存儲裝置為塊存儲裝置,其中邏輯塊地址(“LBA”)與物理塊地址(“PBA”)之間存在近一對一映射。通常,LBA和PBA之間的一對一映射的唯一例外是,數(shù)據(jù)存儲裝置可具有少量附加塊,這些附加塊可重新映射到經(jīng)確定為不良塊的塊。根據(jù)LBA和PBA之間的這種一對一映射,LBA與對象名、文件名和其它邏輯標識符之間的高層映射在文件服務器或文件系統(tǒng)中進行。通常,使用LBA和PBA之間的這種一對一映射的數(shù)據(jù)存儲裝置為隨機存取存儲裝置。文件服務器或文件系統(tǒng)可使用小型計算機系統(tǒng)接口(“SCSI”)命令將指定給特定LBA的數(shù)據(jù)塊發(fā)送至數(shù)據(jù)存儲裝置。當初始化數(shù)據(jù)存儲裝置時,向典型的存儲裝置分配LBA。在這種情況下,分配LBA相當于將在數(shù)據(jù)存儲裝置上可用的LBA的范圍或列表指定給連接至文件服務器或文件系統(tǒng)的客戶端或計算機,所述文件服務器或文件系統(tǒng)連接至數(shù)據(jù)存儲裝置。在服務器或其它計算機可訪問不止一個數(shù)據(jù)存儲裝置的系統(tǒng)中,如果數(shù)據(jù)存儲裝置為隨機存取裝置,則文件服務器或文件系統(tǒng)通常包括附加標識符,其中每個LBA識別被訪問的特定數(shù)據(jù)存儲裝置。所述標識符可為驅(qū)動器名、在存儲裝置的制造商處指定的唯一標識符、邏輯名或可用于對所述系統(tǒng)中可訪問的各種數(shù)據(jù)存儲裝置進行區(qū)分的其它標識符。在該系統(tǒng)中,客戶端可通過一個或多個服務器來訪問數(shù)據(jù)存儲裝置。每個客戶端均可分配有存儲空間。分配的存儲空間可為整個存儲裝置,可為存儲裝置的一部分,或者可為兩個或更多個存儲裝置的全部或部分。通常,對于其中的服務器或客戶端可訪問兩個或更多個存儲裝置的系統(tǒng)而言,存儲空間和相應地址的分配將在連接至這些存儲裝置的文件服務器或文件系統(tǒng)中進行。通常,文件系統(tǒng)管理指定和未指定的LBA。未指定的LBA位于未使用的LBA池中。創(chuàng)建新文件時,將LBA從未使用的LBA池中移除并且LBA與該文件關聯(lián)。刪除該文件時,使LBA返回到未使用的LBA池中。在LBA和PBA之間不存在一一對應的數(shù)據(jù)存儲裝置諸如順序存儲裝置或日志結構存儲裝置中,通常存在另一層邏輯到物理映射,其與存在于連接至隨機存取存儲裝置的文件系統(tǒng)或文件服務器中的邏輯到邏輯映射類似。這些裝置可針對訪問所述裝置的任何文件系統(tǒng)冗余地管理其自身的LBA使用率。這種重復可有利于文件系統(tǒng)實施〃TRIM命令〃,以向所述裝置提供文件系統(tǒng)正在將LBA移動至未使用的LBA池中的提示,以使得所述裝置可同樣如此??赡艽嬖谄渌壿嫷竭壿嬘成?,以支持其它中間轉(zhuǎn)換,例如支持精簡配置層。在順序存儲裝置、日志結構文件系統(tǒng)或其它類似裝置中,文件系統(tǒng)/文件服務器中的邏輯到邏輯映射以及其它邏輯到邏輯映射和/或邏輯到物理映射是無效的,增加了復雜性并且在一些情況下為冗余的。
      發(fā)明內(nèi)容非易失性存儲裝置可向客戶端呈現(xiàn)邏輯地址空間。邏輯地址空間可包括可與存儲裝置的物理存儲位置(或通常為“存儲位置”)無關的多個邏輯標識符(LID)。因此,邏輯地址空間與特定存儲位置之間可能不存在預定義和/或預置映射。所述裝置(或其它實體)可保留將邏輯地址空間中的LID與存儲裝置的各個存儲位置關聯(lián)的索引。LID與存儲位置之間的關聯(lián)數(shù)據(jù)可為任意數(shù)據(jù)。LID與存儲位置的關聯(lián)數(shù)據(jù)可用于確定可用邏輯容量和/或可用物理存儲容量??蛻舳苏埱罂砂ㄡ槍壿嫷刂房臻g中的邏輯容量的請求。如果邏輯地址空間中存在足夠的邏輯容量,則可滿足該請求。邏輯地址空間的邏輯容量可包括已分配、未分配、已指定和/或未指定的識別LID。如本文所用,分配的LID可指邏輯地址空間中已分配給特定客戶端的LID。所述分配可包括預留所述LID、一系列LID、一組順序定序LID、一組連續(xù)LID、一組連續(xù)和不連續(xù)LID和/或邏輯地址空間中的邏輯容量,以供客戶端使用。分配的LID可能或可能不對應于存儲裝置上的物理存儲容量。未分配的LID可指邏輯地址空間中未分配給客戶端和/或與存儲在非易失性存儲裝置上的數(shù)據(jù)關聯(lián)的LID。如本文所用,指定的LID可指與存儲在非易失性存儲裝置上的數(shù)據(jù)關聯(lián)的分配的LID。因此,指定的LID可指與所述存儲裝置的一個或多個存儲位置關聯(lián)的LID。未指定的LID可指與存儲在非易失性存儲裝置上的數(shù)據(jù)不關聯(lián)的LID。如上所述,分配的LID可為未指定的LID。類似地,未分配的LID可為未指定的LID。一種分配數(shù)據(jù)存儲空間的設備可被配置為在功能上執(zhí)行以下必要步驟接收分配請求,確定數(shù)據(jù)存儲裝置的邏輯空間是否具有足夠的未指定和/或未分配的邏輯空間,并且提供回復。分配請求模塊可從請求裝置接收分配邏輯地址空間中的邏輯容量的分配請求。在數(shù)據(jù)存儲裝置處接收分配請求。所述邏輯容量用于將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上。邏輯容量模塊確定邏輯地址空間是否具有足夠的未指定和/或未分配的邏輯空間來滿足分配請求。所述確定可包括搜索保留邏輯容量分配的索引,諸如邏輯到物理映像,其包括邏輯空間中映射到一個或多個物理位置的指定的邏輯標識符(“LID”),與所述指定的LID相對應的數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上的所述一個或多個物理位置。然而,可使用其它數(shù)據(jù)結構、索引和/或映像。分配回復模塊可響應于確定邏輯空間是否具有足夠的邏輯空間的邏輯容量模塊向請求裝置提供回復。所述回復可包括關于是否可滿足分配請求的指示。如本文所用,邏輯標識符(“LID”)可指邏輯塊地址(“LBA”)、一系列LBA、一組不連續(xù)LBA、索引、文件名、索引節(jié)點或其它邏輯標識符中的一個或多個。LID可指不同于對象標識符的邏輯標識符。在一些實施方案中,數(shù)據(jù)存儲裝置包括存儲裝置和存儲控制器和/或驅(qū)動器,其中存儲控制器和/或驅(qū)動器包括包括存儲裝置中的物理地址的邏輯到物理映像。在另一個實施方案中,對應于邏輯空間(“邏輯空間容量”)的存儲容量顯著大于數(shù)據(jù)存儲裝置的物理存儲容量。邏輯空間容量包括與分配的邏輯空間結合的未指定和/或未分配的邏輯空間。分配的邏輯空間包括分配的邏輯空間內(nèi)的指定的LID和未指定的LID。在一些實施方案中,所述設備包括物理容量請求模塊、物理容量分配模塊和物理容量回復模塊。物理容量請求模塊從請求裝置接收物理容量請求,其中在數(shù)據(jù)存儲裝置處接收物理容量請求。物理容量請求包括數(shù)據(jù)存儲裝置中的可用物理存儲容量的量的請求。物理容量分配模塊確定數(shù)據(jù)存儲裝置上的可用物理存儲容量的量??捎梦锢泶鎯θ萘康牧堪〝?shù)據(jù)存儲裝置中的未指定的存儲位置的物理存儲容量。在另一個實施方案中,物理容量分配模塊追蹤指定的物理地址、未指定的物理地址、分配的物理地址容量和/或未分配的物理地址容量。在另一個實施方案中,接收分配請求包括接收邏輯分配請求或接收存儲數(shù)據(jù)的請求。在另一個實施方案中,確定邏輯空間是否包括足夠的未分配的邏輯空間來滿足分配請求包括接收請求的LID列表以待分配并且驗證這些LID可供分配或者識別滿足連同所述請求接收的標準的未分配的LID。在一個實施方案中,所述設備包括分配模塊,該分配模塊響應于確定邏輯空間包括足夠的未分配的邏輯空間來滿足分配請求的邏輯容量模塊向請求裝置分配足以滿足分配請求的未分配的邏輯空間。在另一個實施方案中,分配模塊結合存儲數(shù)據(jù)的請求分配一個或多個LID,并且在存儲與存儲數(shù)據(jù)的請求關聯(lián)的數(shù)據(jù)的同時分配所述一個或多個LID。在一個實施方案中,將回復傳送至請求裝置包括將分配的LID傳送至請求裝置,其中這些分配的LID滿足分配請求。在另一個實施方案中,將回復傳送至請求裝置包括將指示數(shù)據(jù)存儲裝置包括足夠的未分配的邏輯空間來滿足分配請求的回復傳送至請求裝置。在另一個實施方案中,將回復傳送至請求裝置包括將指示數(shù)據(jù)存儲裝置具有不足的未分配的邏輯空間來滿足分配請求的回復傳送至請求裝置。在另一個實施方案中,將回復傳送至請求裝置包括將已分配請求的LID的確認傳送至請求裝置,其中分配請求包括分配LID的請求。在一個實施方案中,所述設備包括分配查詢請求模塊、分配查詢確定模塊和分配查詢回復模塊。分配查詢請求模塊在數(shù)據(jù)存儲裝置處接收分配查詢。分配查詢確定模塊識別滿足分配查詢中指定的標準的一個或多個LID。識別的LID包括已指定的分配的LID、未指定的分配的LID和/或未分配的LID。分配查詢回復模塊傳送分配查詢的結果,其中這些結果包括識別的LID列表、已找到滿足標準的LID的確認和/或未找到滿足分配查詢中的標準的LID的確認。在另一個實施方案中,所述設備包括從數(shù)據(jù)存儲裝置內(nèi)部對數(shù)據(jù)存儲裝置的邏輯空間進行管理的邏輯空間管理模塊。管理邏輯空間可包括從請求裝置接收解除分配請求,其中解除分配請求使一個或多個分配的LID返回到未分配的狀態(tài),并且將成功的解除分配傳送至請求裝置。管理邏輯空間可包括從請求裝置接收LID組命令請求并且向請求裝置傳送指示對LID組命令請求的響應的回復。LID組命令請求包括將對兩個或更多個LID(“LID組”)采取的動作、與該LID組關聯(lián)的元數(shù)據(jù)和/或與該LID組關聯(lián)的數(shù)據(jù)。所述動作包括修改元數(shù)據(jù),備份數(shù)據(jù),備份元數(shù)據(jù),改變控制參數(shù),改變存取參數(shù),刪除數(shù)據(jù),復制數(shù)據(jù),加密數(shù)據(jù),刪除重復數(shù)據(jù),壓縮數(shù)據(jù)和/或解壓縮數(shù)據(jù)。在一個實施方案中,所述設備包括物理空間預留請求模塊、物理空間預留模塊和物理空間預留返回模塊。物理空間預留請求模塊從請求裝置接收預留數(shù)據(jù)存儲裝置上的可用物理存儲容量的請求(“物理空間預留請求”)。在數(shù)據(jù)存儲裝置處接收物理空間預留請求,并且該請求包括請求的物理存儲容量的量的指示。物理空間預留模塊確定數(shù)據(jù)存儲裝置是否具有滿足物理存儲空間請求的可用物理存儲容量的量,并且響應于確定可用物理存儲容量的量足以滿足物理空間預留請求,預留數(shù)據(jù)存儲裝置上的可用物理存儲容量的量以滿足物理存儲空間請求(“預留的物理容量”)。物理空間預留返回模塊響應于確定數(shù)據(jù)存儲裝置是否具有滿足物理空間預留請求的可用物理存儲空間的量的物理空間預留模塊,向請求裝置發(fā)送請求的物理存儲容量的量的可用性或不可用性指示。在一個實施方案中,物理空間預留請求包括邏輯空間的量,其中請求的物理存儲容量的量的指示來源于請求的邏輯空間。在另一個實施方案中,物理空間預留請求包括一個或多個LID,其中請求的物理存儲容量的量的指示來源于與所述LID關聯(lián)的數(shù)據(jù)量。與所述LID關聯(lián)的數(shù)據(jù)包括指定給這些LID的數(shù)據(jù)和/或分配給每個LID的數(shù)據(jù)容量。在另一個實施方案中,物理空間預留請求包括存儲數(shù)據(jù)的請求,其中請求的物理存儲容量的量的指示來源于所述數(shù)據(jù)和/或與所述數(shù)據(jù)關聯(lián)的元數(shù)據(jù)。在另一個實施方案中,物理空間預留請求包括與存儲數(shù)據(jù)的請求關聯(lián)的物理空間預留請求,其中請求的物理存儲容量的量的指示在物理空間預留請求中指示并且與存儲數(shù)據(jù)的請求的數(shù)據(jù)相關。在另一個實施方案中,物理空間預留請求包括預留物理存儲容量的量的請求。在另一個實施方案中,物理空間預留請求包括預留物理存儲容量的量并將預留的物理存儲容量分配給邏輯實體的請求。在一個實施方案中,所述設備包括響應于取消觸發(fā)事件將預留的物理存儲空間的全部或部分取消的物理空間預留取消模塊。取消觸發(fā)事件可包括確定待寫入數(shù)據(jù)存儲裝置且與由物理空間預留模塊預留的可用空間關聯(lián)的數(shù)據(jù)先前已存儲在存儲系統(tǒng)中。取消觸發(fā)事件可包括超時。取消觸發(fā)事件可包括將與預留的存儲空間關聯(lián)的數(shù)據(jù)寫入數(shù)據(jù)存儲裝置,其中寫入的數(shù)據(jù)存儲在小于關聯(lián)的預留的物理容量的空間中。在另一個實施方案中,物理空間預留模塊響應于接收與物理空間預留請求關聯(lián)的寫入請求并且將數(shù)據(jù)寫入數(shù)據(jù)存儲裝置(響應于該寫入請求),接收取消對先前接收的物理空間預留請求的全部或部分物理存儲容量進行預留的請求,和/或接收指定附加物理存儲容量的請求,改變預留的可用物理存儲容量,其中所述附加物理存儲容量與物理空間預留請求的物理存儲容量關聯(lián)。在一個實施方案中,當存儲在一個或多個物理地址處的數(shù)據(jù)被移動至一個或多個不同的物理地址,存儲在所述一個或多個物理地址處的數(shù)據(jù)存儲在第一位置且與存儲在第二位置處的數(shù)據(jù)相同,并且一個或多個LID的映射經(jīng)改變以對應于第二位置,和/或映射到一個或多個LID(“第一LID”)的一個或多個物理位置被重新映射到一個或多個不同的LID(“第二LID”)時,所述一個或多個LID到所述一個或多個物理地址的映射發(fā)生變化。用于分配數(shù)據(jù)存儲空間的另一種設備包括存儲裝置驅(qū)動器。存儲裝置驅(qū)動器經(jīng)由存儲接口耦合至文件系統(tǒng)或文件服務器,其中存儲接口包括命令接口,該命令接口可操作以從文件系統(tǒng)/文件服務器傳送分配數(shù)據(jù)存儲裝置的邏輯容量的分配請求,并且向文件系統(tǒng)/文件服務器傳送分配回復,其中所述邏輯容量用于將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上。存儲裝置驅(qū)動器和/或數(shù)據(jù)存儲裝置確定邏輯空間是否包括足夠的未分配的邏輯空間來滿足分配請求,其中所述確定包括搜索邏輯到物理映像。邏輯到物理映像包括邏輯空間中映射到一個或多個物理位置的指定的LID,與所述指定的LID相對應的數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上的所述一個或多個物理位置處,其中指定的LID不同于映射到該指定的LID的一個或多個物理地址。分配回復響應于分配請求并且包括關于邏輯空間是否包括足夠的邏輯空間來滿足分配請求的指示。在一個實施方案中,所述設備包括存儲裝置接口,其可操作以將存儲裝置驅(qū)動器耦接至數(shù)據(jù)存儲裝置,這足以使數(shù)據(jù)存儲裝置與存儲裝置驅(qū)動器配合,以確定邏輯空間是否包括足夠的邏輯容量來滿足分配請求。在另一個實施方案中,存儲裝置接口包括外設部件互連擴展("PCIExpress”或“PCIe”)、串行高級技術附件(“ΑΤΑ”)總線、并行ATA總線、小型計算機系統(tǒng)接口(“SCSI”)、火線(FireWire)、光纖通道、通用串行總線(“USB”)和PCIe高級交換(“PCIe-AS”)中的一個或多個。在另一個實施方案中,命令接口作為新的輸入輸出控制(“I0-CTL”)命令或現(xiàn)有IO-CTL命令的擴展來實施。本發(fā)明還呈現(xiàn)了一種分配存儲空間的系統(tǒng)。所述系統(tǒng)可通過具有非易失性存儲器、分配請求模塊、邏輯容量模塊和分配回復模塊的存儲裝置來體現(xiàn)。分配請求模塊從請求裝置接收分配邏輯容量的分配請求。在數(shù)據(jù)存儲裝置處接收分配請求,并且邏輯容量用于將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上。邏輯容量模塊確定邏輯空間是否具有足夠的未分配的邏輯空間來滿足分配請求,其中所述確定包括搜索邏輯到物理映像。邏輯到物理映像包括邏輯空間中映射到一個或多個物理位置的指定的邏輯標識符(“LID”),與所述指定的LID相對應的數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上的所述一個或多個物理位置處,其中指定的LID不同于映射到該指定的LID的一個或多個物理地址。分配回復模塊響應于確定邏輯空間是否具有足夠的邏輯空間的邏輯容量模塊將回復傳送至請求裝置,其中所述回復包括關于邏輯空間是否包括足夠的邏輯空間來滿足分配請求的指示。本發(fā)明還呈現(xiàn)了一種用于分配存儲空間的方法。公開的實施方案中的方法基本上包括執(zhí)行以上針對所述設備和系統(tǒng)的操作呈現(xiàn)的功能所需的步驟。在一個實施方案中,所述方法包括從請求裝置接收分配邏輯容量的分配請求,其中在數(shù)據(jù)存儲裝置處接收分配請求。所述邏輯容量用于將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上。所述方法還包括確定邏輯空間是否包括足夠的未分配的邏輯空間來滿足分配請求,其中所述確定包括搜索邏輯到物理映像。邏輯到物理映像包括邏輯空間中映射到一個或多個物理位置的指定的邏輯標識符(“LID”),與所述指定的LID相對應的數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上的所述一個或多個物理位置處,其中指定的LID不同于映射到該指定的LID的一個或多個物理地址。所述方法包括響應于確定邏輯空間是否具有足夠的邏輯空間將回復傳送至請求裝置,其中所述回復包括關于邏輯空間是否包括足夠的邏輯空間來滿足分配請求的指示。在本說明書中通篇對特征、優(yōu)點或類似的術語的參考并未暗示可通過本發(fā)明來實現(xiàn)的所有特征和優(yōu)點均應當包括或包括在本發(fā)明的任何單個實施方案中。相反,應當將涉及這些特征和優(yōu)點的術語理解為意指,結合實施方案描述的具體特征、優(yōu)點或特性包括在本發(fā)明的至少一個實施方案中。因此,在本說明書中通篇討論的特征和優(yōu)點及類似的術語可能(但未必)涉及相同的實施方案。此外,可以任何適當?shù)姆绞綄⒈景l(fā)明的所述特征、優(yōu)點和特性結合在一個或多個實施方案中。相關領域的技術人員將認識到,本發(fā)明可在無需具體實施方案的一個或多個具體特征或優(yōu)點的情況下實施。在其它情況中,可在某些實施方案中看到可能不存在于本發(fā)明的所有實施方案中的其它特征和優(yōu)點。本發(fā)明的這些特征和優(yōu)點通過以下說明和所附權利要求將變得更加顯而易見,或者可通過本發(fā)明的實施來了解,如下所述。為了易于理解本發(fā)明的優(yōu)點,將通過參考在附圖中示出的具體實施方案對本發(fā)明進行以上簡述的更具體說明。理解到這些圖僅描述了本發(fā)明的典型實施方案并因此不被視為對其范圍進行限制,從而將通過采用附圖對本發(fā)明進行其它特定和詳細的描述和解釋,其中圖IA為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的系統(tǒng)的一個實施方案的示意性框圖;圖IB為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的系統(tǒng)的另一個實施方案的示意性框圖;圖IC為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的系統(tǒng)的另一個實施方案的示意性框圖;圖2為示出了固態(tài)存儲裝置的具體實施方案的示意性框圖,所述固態(tài)存儲裝置可包括根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的設備;圖3為示出了固態(tài)存儲裝置中的寫入數(shù)據(jù)管道和讀取數(shù)據(jù)管道的示意性框圖,所述固態(tài)存儲裝置可包括根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的設備;圖4為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的設備的一個實施方案的示意性框圖;圖5為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的設備的另一個實施方案的示意性框圖;圖6為示出了根據(jù)本發(fā)明的用于分配數(shù)據(jù)存儲空間的方法的一個實施方案的示意性流程圖;圖7為示出了根據(jù)本發(fā)明的用于處理存儲裝置處的物理容量請求的方法的一個實施方案的示意性流程圖;圖8為示出了根據(jù)本發(fā)明的用于預留物理存儲空間的方法的一個實施方案的示意性流程圖;圖9為示出了根據(jù)本發(fā)明的用于在數(shù)據(jù)存儲裝置中指定分配的邏輯標識符的方法的一個實施方案的示意性流程圖;圖10為示出了根據(jù)本發(fā)明的用于在數(shù)據(jù)存儲裝置中指定分配的邏輯標識符的方法的另一個實施方案的示意性流程圖;并且圖11為示出了根據(jù)本發(fā)明的用于在存儲裝置處處理分配查詢的方法的一個實施方案的示意性流程圖。圖12為將邏輯標識符與非易失性存儲裝置的存儲位置關聯(lián)的索引的示例性實施方案的示意圖;圖13為將邏輯標識符與非易失性存儲裝置的存儲位置關聯(lián)的索引的示例性實施方案的示意圖;圖14示出了用于保留未分配的邏輯容量的索引的一個實例;圖15為用于分配非易失性存儲裝置的方法的一個實施方案的流程圖;并且圖16為用于分配非易失性存儲裝置的方法的一個實施方案的流程圖。具體實施例方式本說明書中描述的許多功能單元已被標記為模塊,以便更具體地強調(diào)其實施獨立性。例如,模塊可作為包括定制VLSI電路或門陣列、現(xiàn)貨半導體(諸如邏輯片、晶體管)或其它分立元件的硬件電路來實施。模塊也可在可編程硬件裝置諸如現(xiàn)場可編程門陣列、可編程陣列邏輯、可編程邏輯裝置等中實施。模塊也可在軟件中實施以通過各種類型的處理器來執(zhí)行。可執(zhí)行代碼的識別模塊可例如包括計算機指令的一個或多個物理塊或邏輯塊,其可例如以對象、程序或功能來組織。然而,識別模塊的可執(zhí)行文件(executables)無需物理地設置在一起,但可包括存儲在不同位置中的不同指令,這些指令在邏輯地接合在一起時包括所述模塊并且實現(xiàn)該模塊的所述目的。實際上,可執(zhí)行代碼的模塊可為單指令或多指令,并且甚至可分布在若干不同代碼段上、不同程序之間和整個若干存儲裝置上。類似地,模塊內(nèi)的操作數(shù)據(jù)可在本文中得以識別和示出,并且可以任何適當?shù)男问襟w現(xiàn)并組織在任何適當類型的數(shù)據(jù)結構內(nèi)。所述操作數(shù)據(jù)可被收集成單個數(shù)據(jù)集,或者可分布在不同位置(包括不同的存儲裝置)上,并且可至少部分地僅作為電子信號存在于系統(tǒng)或網(wǎng)絡上。如果模塊或模塊的部分在軟件中實施,則軟件部分存儲在一個或多個計算機可讀介質(zhì)上。在本說明書中通篇對“一個實施方案”或類似的術語的參考意指,結合實施方案描述的特定特征、結構或特性包括在本發(fā)明的至少一個實施方案中。因此,在本說明書中通篇出現(xiàn)的短語“在一個實施方案中”和類似的術語可能(但未必)均涉及相同的實施方案。所提及的計算機可讀介質(zhì)可采用能夠?qū)C器可讀指令存儲在數(shù)字處理設備上的任何形式。計算機可讀介質(zhì)可通過傳輸線、光盤、數(shù)字視頻光盤、磁帶、貝努里技術驅(qū)動(Bernoullidrive)、磁盤、穿孔卡、閃速存儲器、集成電路或其它數(shù)字處理設備存儲裝置來體現(xiàn)。此外,可以任何適當?shù)姆绞綄⒈景l(fā)明的所述特征、結構或特性結合在一個或多個實施方案中。在以下說明中,提供了許多具體細節(jié),諸如編程、軟件模塊、用戶選擇、網(wǎng)絡交易、數(shù)據(jù)庫查詢、數(shù)據(jù)庫結構、硬件模塊、硬件電路、硬件芯片等的實例,以提供對本發(fā)明的實施方案的充分理解。然而,相關領域的技術人員將認識到,本發(fā)明可在無需所述具體細節(jié)中的一個或多個的情況下實施,或者可通過其它方法、部件、材料等來實施。在其它情況中,未詳細示出或描述所熟知的結構、材料或操作,以避免模糊本發(fā)明的各方面。通常將本文中包括的示意性流程圖作為邏輯流程圖來闡述。因此,所描述的順序和標記步驟表示所呈現(xiàn)方法的一個實施方案??梢栽O想在功能、邏輯或效果上與所示方法的一個或多個步驟或其部分等效的其它步驟和方法。另外,提供了所采用的格式和符號以解釋所述方法的邏輯步驟,但應理解這些格式和符號不旨在限制所述方法的范圍。雖然各種箭頭類型和線條類型可用于各流程圖中,但應理解其不旨在限制相應方法的范圍。實際上,一些箭頭或其它連接符可用于僅指示所述方法的邏輯流程。例如,箭頭可指示所述方法的列舉步驟之間的未指定期限的等待或監(jiān)測期。另外,進行特定方法的順序可能會或可能不會嚴格符合所示出的相應步驟的順序。圖IA為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的系統(tǒng)100的一個實施方案的示意性框圖。系統(tǒng)100包括存儲系統(tǒng)102,存儲系統(tǒng)102具有存儲控制器104、存儲裝置106a-n和存儲裝置驅(qū)動器118(在下文中,“存儲裝置驅(qū)動器118”可與“驅(qū)動器118”互換使用)。系統(tǒng)100包括通過計算機網(wǎng)絡112連接至一個或多個客戶端110的服務器108。服務器108還可包括一個或多個客戶端110。服務器108包括通過存儲接口116連接至存儲系統(tǒng)102的驅(qū)動器118的文件服務器114。下文更詳細地描述了系統(tǒng)100的部件。系統(tǒng)100包括存儲系統(tǒng)102。存儲系統(tǒng)102可為單個數(shù)據(jù)存儲裝置,可為存儲區(qū)域網(wǎng)絡(“3八^’)、僅大量磁盤/驅(qū)動器(“JB0D”)、網(wǎng)絡附加存儲(“NAS”)或本領域的技術人員已知的其它存儲系統(tǒng)。在圖IA所示的系統(tǒng)100的實施方案中,存儲系統(tǒng)102連接至包括文件系統(tǒng)的文件服務器114并且包括位于服務器108中的驅(qū)動器118。在下文中,文件服務器和文件系統(tǒng)可互換使用。在一個實施方案中,文件服務器114包括文件系統(tǒng)。在其它實施方案中,系統(tǒng)100包括一個或多個客戶端110、文件服務器114與一個或多個客戶端110的組合,或處理數(shù)據(jù)單元諸如對象、文件、邏輯塊等且將數(shù)據(jù)單元存儲在存儲裝置106上并且通過存儲接口116與數(shù)據(jù)存儲裝置交互的其它部件或系統(tǒng)。在優(yōu)選的實施方案中,存儲裝置106和控制存儲裝置106的存儲控制器104構成數(shù)據(jù)存儲裝置。數(shù)據(jù)存儲裝置還可包括耦合至存儲控制器104的驅(qū)動器118。驅(qū)動器118可在多個存儲控制器104之間共享,而存儲控制器104可被多個存儲裝置106a-n共享。存儲系統(tǒng)102可包括多個數(shù)據(jù)存儲裝置,每個數(shù)據(jù)存儲裝置均包括存儲裝置106。然而,多個數(shù)據(jù)存儲裝置可具有共享的存儲控制器104和/或驅(qū)動器118。多個數(shù)據(jù)存儲裝置中的一些可具有單獨的存儲控制器104和/或單獨的驅(qū)動器118。因為數(shù)據(jù)存儲裝置涉及分配,所以下面針對圖4的設備400更詳細地對其進行了討論。在其它實施方案中,存儲系統(tǒng)102可能不需要特定驅(qū)動器118,但可直接連接至文件服務器114,其中文件服務器114能夠直接與存儲系統(tǒng)102的存儲控制器104通信。在所述實施方案中,驅(qū)動器118位于服務器108中,但在其它實施方案中,驅(qū)動器118可部分或全部位于服務器108的外部。在本發(fā)明中,在存儲系統(tǒng)102中進行邏輯地址分配和邏輯地址管理,如下文將進一步闡述。存儲控制器104連接至一個或多個存儲裝置106a-n并且控制存儲裝置106中的數(shù)據(jù)存儲。存儲控制器104與一個或多個文件服務器114/文件系統(tǒng)通信并且通常通過驅(qū)動器118與文件服務器114/文件系統(tǒng)通信。在一個實施方案中,驅(qū)動器118可為存儲控制器104的擴展。在一個具體實施方案中,存儲控制器104為固態(tài)存儲裝置控制器202,如將在圖2的設備201中更詳細地描述。通常,存儲控制器104將邏輯標識符映射到存儲裝置106的物理地址并且可分配和管理邏輯標識符,如下文將更詳細地描述。存儲控制器104和驅(qū)動器118中可包括分配和管理邏輯標識符的全部或部分步驟。然而,邏輯地址的全局分配可在存儲系統(tǒng)102的外部進行,如將在圖IC的系統(tǒng)103中更詳細地描述。在一個實施方案中,驅(qū)動器118或者存儲接口116為應用程序接口(“API”),并且起作用以將命令和其它數(shù)據(jù)轉(zhuǎn)換成適于發(fā)送至存儲控制器104的格式。在另一個實施方案中,驅(qū)動器118包括存儲控制器104的一個或多個功能。例如,驅(qū)動器118可包括下述模塊的全部或部分并且可包括存儲裝置106的一個或多個索引或映像。構成存儲系統(tǒng)102的驅(qū)動器118、一個或多個存儲控制器104和一個或多個存儲裝置106具有連接至文件系統(tǒng)/文件服務器的存儲接口116,并且傳統(tǒng)上在文件系統(tǒng)/文件服務器中進行的分配被有利地下推(即卸載)至存儲系統(tǒng)102。如本申請中所用的邏輯標識符為與存儲數(shù)據(jù)單元的數(shù)據(jù)的物理地址不同的數(shù)據(jù)單元標識符。如本申請中所用的數(shù)據(jù)單元為邏輯地組合在一起的任何數(shù)據(jù)集。數(shù)據(jù)單元可為文件、對象、廉價/獨立冗余磁盤/驅(qū)動器陣列(“RAID”)數(shù)據(jù)條帶的數(shù)據(jù)段,或數(shù)據(jù)存儲中使用的其它數(shù)據(jù)集。數(shù)據(jù)單元可為可執(zhí)行代碼、數(shù)據(jù)、元數(shù)據(jù)、目錄、索引、可存儲在存儲裝置中的任何其它類型的數(shù)據(jù)或其組合。數(shù)據(jù)單元可通過名稱、邏輯地址、物理地址、地址范圍或用于識別數(shù)據(jù)單元的其它約定來識別。邏輯標識符(“LID”)包括數(shù)據(jù)單元標識符,諸如文件名、對象標識符、索引節(jié)點、通用唯一標識符(“UUID”)、全局唯一標識符(“⑶ID”)或其它數(shù)據(jù)單元標簽,并且還可包括邏輯塊地址(“LBA”)、柱面磁頭扇區(qū)(“CHS”)或其它低層邏輯標識符。邏輯標識符通常包括可映射到物理位置的任何邏輯標簽。所述存儲系統(tǒng)102包括一個存儲控制器104,但還可包括其它存儲控制器104。在一個實施方案中,每個存儲控制器104控制唯一的一組存儲裝置106。在另一個實施方案中,兩個或更多個存儲控制器104可連接至存儲裝置(例如106a)并且可彼此通信以將數(shù)據(jù)存儲在存儲裝置106a上。例如,一個存儲控制器104可為主控制器,而另一個存儲控制器104可為從屬控制器。本領域的技術人員將認識到兩個或更多個存儲控制器104可控制存儲系統(tǒng)102中的兩個或更多個存儲裝置106的其它方式。存儲系統(tǒng)102包括一個或多個存儲裝置106a-n。存儲裝置106存儲數(shù)據(jù)單元的數(shù)據(jù),如存儲控制器104所指示。在一個實施方案中,存儲裝置106按順序或以日志結構或某種類似的方式來存儲至少一些數(shù)據(jù)。通常,在該存儲裝置106中,未以隨機存取裝置中的存儲方式來存儲數(shù)據(jù)。例如,當修改數(shù)據(jù)單元時,從一個位置讀取數(shù)據(jù)單元的數(shù)據(jù),對其進行修改,然后將其寫入不同位置。將數(shù)據(jù)寫入數(shù)據(jù)存儲裝置106的次序和順序成為日志,并且通過重放該順序,可構建或重構索引。修改的數(shù)據(jù)可存儲在當前按順序存儲數(shù)據(jù)的位置處。數(shù)據(jù)存儲裝置106可包括一個或多個追加點,這些追加點指示存儲所述按順序存儲的數(shù)據(jù)的下一個位置。在該數(shù)據(jù)存儲裝置106中,邏輯標識符被映射到一個或多個物理地址。例如,邏輯標識符可映射到當前數(shù)據(jù)以及相同數(shù)據(jù)的較早版本。下面更詳細描述了順序存儲和邏輯到物理映射。在一個實施方案中,存儲裝置106可為固態(tài)存儲裝置或存儲級存儲器,諸如閃速存儲器、納米隨機存取存儲器(“nanoRAM或NRAM”)、磁阻RAM(“MRAM”)、動態(tài)RAM(“DRAM”)、相變RAM(“PRAM”)等。在其它實施方案中,存儲裝置可為被組織用于作為按順序存儲數(shù)據(jù)的日志結構文件系統(tǒng)來存儲數(shù)據(jù)的硬盤驅(qū)動器、光盤驅(qū)動器、帶存儲器等。在另一個實施方案中,存儲裝置106包括作為性能較低的長期存儲裝置(諸如硬盤驅(qū)動器)的高速緩沖存儲器來操作的高性能存儲裝置,諸如閃速存儲器。2007年12月6日提交的標題為"Apparatus,System,andMethodforSolid-StateStorageasCacheforHigh-Capacity,Non-VolatileStorage“的美國專利申請No.11/952,123(DavidFlynn等)中描述了作為大容量非易失性存儲裝置的高速緩沖存儲器來操作的固態(tài)存儲器的一個實例,該專利以引用的方式并入本文。在另一個實施方案中,存儲裝置106連同存儲控制器104可為服務器內(nèi)存儲區(qū)域網(wǎng)絡(“SAN”)的一部分,并且可與一個或多個客戶端110、存儲控制器104或位于設置存儲裝置106和存儲控制器104的服務器108外部的服務器108通信。2007年12月6日提交的標題為"Apparatus,System,andMethodforanIn-ServerStorageAreaNetwork"的美國專利申請No.11/952,106(DavidFlyrm等)中描述了服務器內(nèi)SAN的一個實例,該專利以引用的方式并入本文。本領域的技術人員將認識到其它存儲裝置106,其中在存儲系統(tǒng)102中分配和管理邏輯標識符是有利的。系統(tǒng)100包括服務器108。服務器108可在計算機諸如工作站、主計算機、個人計算機、膝上型計算機或可訪問存儲裝置106的其它計算設備中得以體現(xiàn)。在一個實施方案中,服務器108為計算機內(nèi)的一個分區(qū)。服務器108可包括物理外殼。存儲系統(tǒng)102可位于服務器108的物理外殼中,例如作為插入服務器108的主板中的外設部件互連擴展(“PCIExpress”或“PCI-e”)卡。存儲系統(tǒng)102可部分地位于服務器108的物理外殼內(nèi)。例如,如果所述存儲系統(tǒng)具有在運行服務器108的處理器上運行的驅(qū)動器118,則存儲控制器和/或存儲裝置106可位于插入計算機中或通過電纜連接的外殼中。本領域的技術人員將認識到存儲系統(tǒng)102可連接至服務器108或與服務器108關聯(lián)的計算機的一部分的多種方式。在所述實施方案中,服務器108包括經(jīng)由存儲接口116連接至存儲系統(tǒng)102的文件服務器114/文件系統(tǒng)。在一個實施方案中,文件系統(tǒng)為被一個或多個客戶端110訪問的文件服務器114的部件??蛻舳?10和/或文件系統(tǒng)/文件服務器114通過存儲接口116來訪問存儲系統(tǒng)102。通常,文件系統(tǒng)/文件服務器114連接至存儲系統(tǒng)102的驅(qū)動器118,并且驅(qū)動器118通過存儲裝置接口120與存儲控制器104和一個或多個存儲裝置106交互。存儲裝置接口116可為PCI-e總線、串行高級技術附件(“serialATA”)總線、并行ATA等。在另一個實施方案中,存儲裝置接口116為外部總線,諸如小型計算機系統(tǒng)接口(“SCSI”)、火線、光纖通道、通用串行總線(“USB”)、PCIe高級交換(“PCIe-AS”)等。文件服務器114/文件系統(tǒng)通??晒芾碓L問存儲系統(tǒng)102的一個或多個客戶端110的文件。在一個實施方案中,不存在驅(qū)動器118,并且文件服務器114/文件系統(tǒng)經(jīng)由存儲裝置接口120直接與存儲控制器104通信。例如,存儲控制器104可模擬一種裝置,該裝置可在加載驅(qū)動器118時短暫地,或較長一段時間地直接連接至文件服務器114/文件系統(tǒng)。系統(tǒng)100包括一個或多個客戶端110。在一個實施方案中,一個或多個客戶端110通過一個或多個計算機網(wǎng)絡112與服務器108和文件服務器114通信。在另一個實施方案中,服務器108包括一個或多個客戶端110。客戶端110可為在服務器108或其它計算機上運行的應用程序。從存儲系統(tǒng)102的角度,文件服務器114可為客戶端110,而在下文中“客戶端”110可包括文件服務器114。計算機網(wǎng)絡112可包括因特網(wǎng)、廣域網(wǎng)(“WAN”)、城域網(wǎng)(“MAN”)、局域網(wǎng)(“LAN”),、令牌環(huán)、無線網(wǎng)絡、光纖通道網(wǎng)絡、SAN、網(wǎng)絡附加存儲(“NAS”)、ESCON等或任何網(wǎng)絡組合。計算機網(wǎng)絡112還可包括來自網(wǎng)絡技術(諸如以太網(wǎng)、令牌環(huán)、WiFi、WiMax等)的IEEE802族的網(wǎng)絡,并且包括便于通信的電纜線路和部件??蛻舳?10可為主機、服務器、SAN的存儲控制器、工作站、個人計算機、膝上型計算機、手持式計算機、超級計算機、計算機集群、網(wǎng)絡交換機、路由器或裝置、數(shù)據(jù)庫或存儲裝置、數(shù)據(jù)采集或數(shù)據(jù)收集系統(tǒng)、診斷系統(tǒng)、測試系統(tǒng)、機器人、便攜式電子裝置、無線電裝置、文件服務器114等??蛻舳?10可在通過計算機網(wǎng)絡112與服務器108通信的計算機或服務器上運行??蛻舳?10可指示文件系統(tǒng)對文件、對象、邏輯塊或存儲在存儲系統(tǒng)102中的其它數(shù)據(jù)單元進行讀取、寫入、刪除、修改等。本領域的技術人員將認識到,對象可具有很廣泛的定義。雖然術語“對象”可能并非始終包括所有數(shù)據(jù)單元,但在本申請中,“對象”應當從廣義理解并且可包括文件或其它數(shù)據(jù)結構。然后,文件服務器114/文件系統(tǒng)可采用數(shù)據(jù)單元的邏輯名與使文件服務器114/文件系統(tǒng)與數(shù)據(jù)單元關聯(lián)的邏輯標識符之間的映射來存取數(shù)據(jù)單元。在典型的實施方案中,文件服務器114/文件系統(tǒng)將數(shù)據(jù)單元的數(shù)據(jù)組織成邏輯塊并且將邏輯塊地址與每個邏輯塊關聯(lián)。邏輯塊地址可為文件服務器114/文件系統(tǒng)打算將邏輯塊存儲在存儲系統(tǒng)102中的位置。然后,文件服務器114/文件系統(tǒng)可通過SCSI命令讀取請求、寫入請求等來指示存儲系統(tǒng)102。在本發(fā)明中,在存儲系統(tǒng)102中管理和分配邏輯標識符,諸如邏輯塊地址,如下文將更詳細地討論。在一個實施方案中,甚至在存儲系統(tǒng)102并非隨機存取系統(tǒng)時,文件服務器114/文件系統(tǒng)也將存儲系統(tǒng)102中的存儲處理為隨機存取裝置。在典型的隨機存取裝置中,邏輯標識符與隨機存取裝置的物理地址幾乎為一一對應。典型的隨機存取裝置中的該一對一映射(不包括隨機存取裝置上被預留以進行不良塊映射的少量物理地址)也與與邏輯標識符關聯(lián)的存儲容量和與物理地址關聯(lián)的物理容量之間的近一對一關系有關。例如,如果邏輯標識符為邏輯塊地址(“LBA”),則與LBA關聯(lián)的每個邏輯塊均具有固定大小。隨機存取裝置上的相應物理塊通常與邏輯塊具有相同大小。這能夠使典型的文件服務器114/文件系統(tǒng)通過管理邏輯標識符(諸如LBA)來管理隨機存取裝置上的物理容量。LBA到PBA映射的這種連續(xù)性通常取決于文件系統(tǒng)并且通過文件系統(tǒng)用于對存儲在數(shù)據(jù)存儲裝置上的數(shù)據(jù)消除碎化。類似地,一些系統(tǒng)可使用該連續(xù)性將數(shù)據(jù)設置在特定物理磁道上以提高性能,如同稱為磁盤驅(qū)動器"短擊(shortstroking)“的技術中的情況。高度可預測性LBA到PBA映射在某些應用中是必要的,以通過直接管理邏輯地址空間來間接管理數(shù)據(jù)在物理地址空間中的存儲。然而,存儲系統(tǒng)102可為日志結構文件系統(tǒng),使得不存在確定LBA到PBA映射的“固定"關系或算法,或在另一個實施方案中,存儲系統(tǒng)102可為隨機存取系統(tǒng),但可被不止一個客戶端110或文件服務器114/文件系統(tǒng)訪問,使得分配給每個客戶端110或文件服務器114/文件系統(tǒng)的邏輯標識符表示遠大于典型系統(tǒng)的邏輯到物理標識符的一對一關系的存儲容量。存儲系統(tǒng)102也可為精簡配置系統(tǒng),使得一個或多個客戶端110各自均具有遠大于存儲系統(tǒng)102中的存儲裝置106的存儲容量的分配的邏輯地址范圍。在系統(tǒng)100中,存儲系統(tǒng)102管理和分配邏輯標識符,使得邏輯標識符與物理標識符之間不存在一對一或近一對一關系。系統(tǒng)100是有利的,因為與典型的存儲系統(tǒng)相比,其可更有效地管理存儲容量。例如,對于多個客戶端110可訪問的典型的隨機存取裝置而言,如果向每個客戶端分配一定量的存儲空間,則分配中通常會存在和占用存儲空間,即使占用的實際存儲空間的量遠小于此。系統(tǒng)100也是有利的,因為系統(tǒng)100降低了連接至存儲裝置106的標準精簡配置系統(tǒng)的復雜性。標準精簡配置系統(tǒng)具有精簡配置層,諸如按順序存儲數(shù)據(jù)的日志結構文件系統(tǒng)或固態(tài)存儲器,該精簡配置層除了具有存儲裝置106的邏輯到物理映射之外,還具有邏輯到邏輯映射。系統(tǒng)100更有效,因為消除了多個層映射并且在最低層進行精簡配置(邏輯到物理映射)。圖IB為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的系統(tǒng)101的另一個實施方案的示意性框圖。圖IB所示的系統(tǒng)101為圖IA所示的系統(tǒng)100的變型。系統(tǒng)101包括經(jīng)由存儲接口116連接至驅(qū)動器118的存儲系統(tǒng)102、經(jīng)由存儲裝置接口120連接至每個存儲控制器104的驅(qū)動器118以及存儲裝置106a-n,其基本上類似于以上關于圖IA的系統(tǒng)100描述的那些。系統(tǒng)101還包括連接至計算機網(wǎng)絡112的一個或多個客戶端110,這些客戶端110也基本上類似于以上關于圖IA的系統(tǒng)100描述的那些。在圖IB的系統(tǒng)101中,客戶端110各自具有文件服務器114/文件系統(tǒng)并且通過存儲裝置122來訪問存儲系統(tǒng)102。文件服務器114/文件系統(tǒng)可為分布式文件服務器/文件系統(tǒng),諸如IBM的GPFS或Lustre集群文件系統(tǒng)。存儲裝置122可為SAN控制器、RAID控制器等并且每個文件服務器114/文件系統(tǒng)可獨立連接至存儲系統(tǒng)102的存儲裝置106。存儲裝置122可為存儲系統(tǒng)102的客戶端110。在這種情況下,系統(tǒng)101是有利的,因為在一個實施方案中,每個文件服務器114/文件系統(tǒng)可采用標準SCSI協(xié)議或標準SCSI協(xié)議的擴展將存儲系統(tǒng)102的附加存儲處理為SCSI裝置。即使存儲系統(tǒng)102的實際存儲空間遠小于分配給各個客戶端110的存儲空間,每個客戶端110及其文件服務器114/文件系統(tǒng)也可操作,如同其可完全訪問通過存儲系統(tǒng)102分配給客戶端110的存儲空間。存儲系統(tǒng)102可有效地管理和分配客戶端110的邏輯標識符,同時使文件服務器114/文件系統(tǒng)使用標準協(xié)議以連接至存儲系統(tǒng)102。在另一個實施方案中,存儲系統(tǒng)102在虛擬化操作系統(tǒng)(諸如VMware)上的虛擬服務器或客戶機內(nèi)管理和分配客戶端110的邏輯標識符。在另一個實施方案中,文件服務器114/文件系統(tǒng)被配置為卸載存儲系統(tǒng)102的分配管理并通過分配請求、分配查詢等與存儲裝置驅(qū)動器118通信,并且接收對這些請求的回復,如下文將更詳細地闡述。存儲裝置106可位于存儲裝置122中或位于存儲裝置122的外部。在一個實施方案中,一個或多個存儲裝置106位于存儲裝置122中并且一個或多個存儲裝置106位于存儲裝置122的外部。存儲裝置106可與存儲裝置122布置在一起或可遠離存儲裝置122。本領域的技術人員將認識到其它存儲裝置122以及存儲裝置122和存儲裝置106的其它配置。在一個實施方案中,一個或多個客戶端110還包括除了存儲系統(tǒng)102中示出的驅(qū)動器118之外的驅(qū)動器118(未示出)。在另一個實施方案中,存儲系統(tǒng)102不包括驅(qū)動器118,但每個客戶端110均包括驅(qū)動器118。驅(qū)動器118通常用于解譯命令以及存儲系統(tǒng)102與文件服務器114/文件系統(tǒng)或存儲裝置122之間的其它通信。在一個實施方案中,存儲系統(tǒng)102模擬標準存儲裝置,直到加載驅(qū)動器118。然后,驅(qū)動器118可使得附加特征和命令在不存在驅(qū)動器118的情況下不可用。圖IC為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的系統(tǒng)103的另一個實施方案的示意性框圖。系統(tǒng)103包括具有存儲裝置106a-n的兩個或更多個存儲系統(tǒng)lOh-n,每個存儲系統(tǒng)lOh-n在服務器108a-n中均通過一個或多個計算機網(wǎng)絡112連接至客戶端110。系統(tǒng)103還包括與每個服務器108通信并且可與客戶端110通信的主分配管理器124。存儲裝置106、存儲系統(tǒng)102、服務器108、客戶端110和計算機網(wǎng)絡112基本上類似于以上關于圖IA和IB的系統(tǒng)100、101描述的那些。另外,系統(tǒng)103包括存儲控制器104、存儲接口116、文件服務器114/文件系統(tǒng),并且可包括驅(qū)動器118以及上述其它部件和零件。圖IC的系統(tǒng)103中描述的實施方案旨在表明具有存儲系統(tǒng)102的服務器108的數(shù)量不受限制,并且可包括不止一個存儲系統(tǒng)103。在一個實施方案中,系統(tǒng)103包括主分配管理器124。在一個實施方案中,主分配管理器IM在高層上管理存儲空間分配。例如,主分配管理器IM可向每個客戶端110分配存儲容量。然后,主分配管理器1可與每個存儲系統(tǒng)10-!!協(xié)調(diào),以分配和管理每個客戶端110的邏輯標識符。在一個實施方案中,主分配管理器IM在高層上管理存儲空間,從而分配存儲容量、限制存儲容量、向客戶端110指定存儲系統(tǒng)102或存儲裝置106等,同時存儲系統(tǒng)102通過追蹤和分配邏輯標識符并且將邏輯標識符映射到物理位置來在低層上進行管理和分配。主分配管理器1將分配請求、物理容量請求、分配查詢等發(fā)送至存儲系統(tǒng)lOh-n并且接收使主分配管理器IM能夠管理邏輯空間的回復。本領域的技術人員將認識到使主分配管理器1與分配和管理邏輯標識符的存儲系統(tǒng)102結合的其它方式。在一個實施方案中,不同于也可管理邏輯和/或物理分配的精簡配置層,主分配管理器IM無需進行邏輯到邏輯重映射。主分配管理器IM可執(zhí)行為精簡配置系統(tǒng)所共有的其它分配功能,但卸載存儲系統(tǒng)102的初次分配(邏輯和物理分配)。固態(tài)存儲裝置圖2為示出了固態(tài)存儲裝置控制器202的具體實施方案200的示意性框圖,固態(tài)存儲裝置控制器202可包括根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的設備。固態(tài)存儲裝置206包括寫入數(shù)據(jù)管道301和讀取數(shù)據(jù)管道303,這在下文關于圖3的討論中更詳細地描述。固態(tài)存儲裝置控制器202可包括多個固態(tài)存儲控制器O-N204a-n,每個控制器2(Ma-n均控制固態(tài)存儲器207。在所述實施方案中,示出了兩個固態(tài)控制器固態(tài)控制器020和固態(tài)存儲控制器N204η,并且每個控制器均控制固態(tài)存儲器207a-n。在所述實施方案中,固態(tài)存儲控制器020控制數(shù)據(jù)通道,以使得附加固態(tài)存儲器207a存儲數(shù)據(jù)。固態(tài)存儲控制器N20控制與存儲數(shù)據(jù)關聯(lián)的索引元數(shù)據(jù)通道,并且關聯(lián)的固態(tài)存儲器207η存儲索引元數(shù)據(jù)。在替代實施方案中,固態(tài)存儲裝置控制器202包括具有單個固態(tài)存儲器207a的單個固態(tài)控制器2(Ma。在另一個實施方案中,存在多個固態(tài)存儲控制器2(Ma-n和關聯(lián)的固態(tài)存儲器207a-n。在一個實施方案中,耦合至其關聯(lián)的固態(tài)存儲器207a-207n-l的一個或多個固態(tài)控制器2(Ma-204n-l控制數(shù)據(jù),而耦合至其關聯(lián)的固態(tài)存儲器207η的至少一個固態(tài)存儲控制器20控制索引元數(shù)據(jù)。在一個實施方案中,至少一個固態(tài)控制器204為現(xiàn)場可編程門陣列(“FPGA”),并且控制器功能被編入FPGA中。在具體實施方案中,F(xiàn)PGA為XilinxFPGA。在另一個實施方案中,固態(tài)存儲控制器204包括被專門設計為固態(tài)存儲控制器204的部件,諸如專用集成電路(“ASIC”)或定制邏輯解法。在另一個實施方案中,至少一個固態(tài)存儲控制器204由FPGA、ASIC和定制邏輯元件的組合構成。固態(tài)存儲器固態(tài)存儲器206為非易失性固態(tài)存儲元件216、218、220的陣列,非易失性固態(tài)存儲元件216、218、220設置在存儲體214中并且通過雙向存儲輸入/輸出(“I/O”)總線210并行訪問。在一個實施方案中,存儲I/O總線210能夠在任何一個時間進行單向通信。例如,當數(shù)據(jù)被寫入固態(tài)存儲器207吋,不能從固態(tài)存儲器207中讀取數(shù)據(jù)。在另ー個實施方案中,數(shù)據(jù)可同時雙向流動。然而,如本文針對數(shù)據(jù)總線所用,雙向是指可具有毎次僅單向流動的數(shù)據(jù)的數(shù)據(jù)路徑,但當數(shù)據(jù)停止在雙向數(shù)據(jù)總線上單向流動時,數(shù)據(jù)可在雙向數(shù)據(jù)總線上反向流動。當維護控制總線212內(nèi)的控制線和地址線吋,通過存儲I/O總線210以位級寫入和讀取數(shù)據(jù)。固態(tài)存儲元件(例如SSS0.0216a)通常被配置成電路板上的芯片(ー個或多個小片的包)或小片。如同所述,固態(tài)存儲元件(例如216a)獨立于或半獨立于其它固態(tài)存儲元件(例如218a)操作,即使這些若干元件一起被封裝在芯片包、芯片包的堆?;蚰硞€其它封裝元件中。如同所述,固態(tài)存儲元件216、218、220的列被指定為存儲體214。如同所述,在固態(tài)存儲器207中的ηχm個固態(tài)存儲元件216、218、220的陣列中,可存在“η”個存儲體2Ha-n,并且每個存儲體中可存在“m”個固態(tài)存儲元件216a-m、218a-m、220a-m。在一個實施方案中,固態(tài)存儲器207a包括八個存儲體214,每個存儲體214中具有二十個固態(tài)存儲元件216、218、220,并且固態(tài)存儲器207η包括一個存儲體214,每個存儲體214中具有2個固態(tài)存儲元件216、218。在一個實施方案中,每個固態(tài)存儲元件216、218、220均由單層単元(“SLC”)裝置構成。在另ー個實施方案中,每個固態(tài)存儲元件216、218、220均由多層単元(“MLC”)裝置構成。在一個實施方案中,將共享公用存儲I/O總線210a行(例如216b、218b、220b)的多個存儲體的固態(tài)存儲元件封裝在一起。在另ー個實施方案中,固態(tài)存儲元件216、218、220在每個芯片中可具有ー個或多個小片,其中一個或多個芯片垂直堆疊,并且可獨立訪問每個小片。在另ー個實施方案中,固態(tài)存儲元件(例如SSS0.0216a)在每個小片中可具有一個或多個虛擬小片并且在每個芯片中可具有ー個或多個小片,其中一個或多個芯片垂直堆疊,并且可獨立訪問每個虛擬小片。在另ー個實施方案中,固態(tài)存儲元件SSS0.0216a在每個小片中可具有一個或多個虛擬小片并且在每個芯片中可具有ー個或多個小片,其中所述ー個或多個小片中的ー些或全部垂直堆疊,并且可獨立訪問每個虛擬小片。在一個實施方案中,兩個小片以每組四個堆棧進行垂直堆疊,以形成八個存儲元件(例如SSS0.O-SSS0.8)216a-220a,每個存儲元件均位于單獨的存儲體2Ha_n中。在另ー個實施方案中,20個存儲元件(例如SSS0.O-SSS20.0)216構成虛擬存儲體21(或邏輯存儲體),以使得八個虛擬存儲體中的每ー個均具有20個存儲元件(例如SSSO.O-SSS20.8)216,218,220ο通過連接至特定一組存儲元件(SSS0.O-SSS0.8)216a、218a、220a的所有存儲元件的存儲I/O總線210將數(shù)據(jù)發(fā)送至固態(tài)存儲器207。存儲控制總線21用于選擇特定存儲體(例如存儲體-0214a),以使得通過連接至所有存儲體214的存儲I/O總線210接收的數(shù)據(jù)恰好被寫入選定的存儲體21中。在優(yōu)選的實施方案中,存儲I/O總線210由ー個或多個獨立I/O總線構成(包括210a.a-m、210n.a-m的“IIOBa-m”),其中每行內(nèi)的固態(tài)存儲元件共享并行訪問每個固態(tài)存儲元件216、218、220的獨立I/O總線之一,以使得所有存儲體214被同時訪問。例如,存儲I/O總線210的一個通道可同時訪問每個存儲體2Ha-n的第一固態(tài)存儲元件216a、218a、220a。存儲I/O總線210的第二通道可同時訪問每個存儲體2Ha-n的第二固態(tài)存儲元件216b、218b、220b。同時訪問每行固態(tài)存儲元件216、218、220。在一個實施方案中,如果固態(tài)存儲元件216、218、220為多層(物理堆疊),則同時訪問固態(tài)存儲元件216、218、220的所有物理層。如本文所用,“同時”還包括幾乎同時訪問,其中以稍微不同的間隔來訪問裝置以避免開關噪聲。在此背景下使用的同時不同于其中相繼地單獨發(fā)送命令和/或數(shù)據(jù)的順序或串行訪問。通常,采用存儲控制總線212來獨立地選擇存儲體2Ha-n。在一個實施方案中,采用芯片啟動或芯片選擇來選擇存儲體214。如果芯片選擇和芯片啟動均可用,則存儲控制總線212可選擇多層固態(tài)存儲元件216、218、220中的ー層。在其它實施方案中,存儲控制總線212使用其它命令來単獨地選擇多層固態(tài)存儲元件216、218、220中的ー層。也可通過在存儲I/O總線210和存儲控制總線212上發(fā)送的控制信息和地址信息的組合來選擇固態(tài)存儲元件216、218、220。在一個實施方案中,每個固態(tài)存儲元件216、218、220均分成擦除塊,并且每個擦除塊均分成頁面。典型的頁面為2000字節(jié)(“2kB”)。在一個實例中,固態(tài)存儲元件(例如SSS0.0)包括兩個寄存器并且可對兩個頁面進行編程,以使得雙寄存器固態(tài)存儲元件216、218、220具有4kB的容量。然后,具有20個固態(tài)存儲元件216、218、220的存儲體214會具有SOkB的頁面容量,這些容量可通過離開存儲I/O總線210的通道的同一地址進行訪問。具有固態(tài)存儲元件216、218、220的80kB存儲體214中的該組頁面可被稱為虛擬或邏輯頁面。類似地,可將存儲體21的每個存儲元件216a-m的擦除塊分組以形成虛擬或邏輯擦除塊。在優(yōu)選的實施方案中,當在固態(tài)存儲元件216、218、220內(nèi)接收到擦除命令吋,將固態(tài)存儲元件216、218、220內(nèi)的頁面的擦除塊擦除。盡管預計固態(tài)存儲元件216、218、220內(nèi)的擦除塊、頁面、位面或其它邏輯和物理分區(qū)的大小和數(shù)量通過技術改進會隨時間改變,但可以預計與新配置一致的許多實施方案可被實施并且符合本文的一般說明。通常,當將包寫入固態(tài)存儲元件216、218、220內(nèi)的特定位置吋,如果旨在將該包寫入特定頁面內(nèi)的某個位置,其中該特定頁面為特定存儲體的特定元件的特定擦除塊所特有,則在存儲I/O總線210上發(fā)送物理地址,然后發(fā)送所述包。所述物理地址包含足夠的信息,以便固態(tài)存儲元件216、218、220將所述包指向以上頁面內(nèi)的指定位置。因為存儲I/O總線210a.a內(nèi)的適當總線同時訪問一行存儲元件(例如SSS0.O-SSS0.N216a,218a,220a)中的所有存儲元件,以到達正確頁面并且避免將數(shù)據(jù)包寫入該行存儲元件(SSS0.O-SSSO.N216a,218a,220a)中以類似方式尋址的頁面,所以通過存儲控制總線212來同時選擇包括固態(tài)存儲元件SSS0.0216a的存儲體214a,其中固態(tài)存儲元件SSS0.0216a具有將數(shù)據(jù)包寫入的正確頁面。類似地,在存儲I/O總線212上移動的讀取命令需要存儲控制總線212上的同步命令,以選擇單個存儲體21和該存儲體21內(nèi)的適當頁面。在優(yōu)選的實施方案中,讀取命令讀取整個頁面,并且因為存儲體214中并行存在多個固態(tài)存儲元件216、218、220,所以整個邏輯頁面通過讀取命令來讀取。然而,所述讀取命令可分成子命令,如下文將針對存儲體交錯所闡述。也可在寫入操作中訪問邏輯頁面。可通過存儲I/O總線210發(fā)送擦除塊擦除命令以將擦除塊擦除,所述擦除塊具有特定擦除塊地址以擦除特定擦除塊。通常,可通過存儲I/O總線210的并行路徑發(fā)送擦除塊擦除命令以擦除邏輯擦除塊,每個邏輯擦除塊均具有特定擦除塊地址以擦除特定擦除塊。同吋,通過存儲控制總線212來選擇特定存儲體(例如存儲體-0214a),以防止將所有存儲體(存儲體I-N214b-n)中以類似方式尋址的擦除塊擦除。也可采用存儲I/O總線210和存儲控制總線212的組合將其它命令發(fā)送至特定位置。本領域的技術人員將認識到采用雙向存儲I/O總線210和存儲控制總線212來選擇特定存儲位置的其它方式。在一個實施方案中,將數(shù)據(jù)包按順序?qū)懭牍虘B(tài)存儲器207。例如,數(shù)據(jù)包流入具有存儲元件216的存儲體21的存儲寫入緩沖器中,并且當所述緩沖器已滿時,將這些數(shù)據(jù)包編程為指定的邏輯頁面。然后,數(shù)據(jù)包再次填充存儲寫入緩沖器,并且在已滿吋,將這些包寫入同一邏輯頁面(如果存在空間)或?qū)懭胂漏`個邏輯頁面。下一個邏輯頁面可位于同一存儲體21或另ー個存儲體(例如214b)中。該進程以邏輯頁面緊接邏輯頁面的方式繼續(xù)進行,通常直到邏輯擦除塊被填充。在另ー個實施方案中,所述流動可在整個邏輯擦除塊邊界中繼續(xù)進行,同時該進程以邏輯擦除塊緊接邏輯擦除塊的方式繼續(xù)進行。在一個實施方案中,邏輯頁面(例如216a-n)中的每個固態(tài)存儲元件包括ー個或多個追加點。追加點可位于下一次寫入來自寫入緩沖器的數(shù)據(jù)的位置。一旦在追加點處寫入數(shù)據(jù),則該追加點移動至該數(shù)據(jù)的終端。該進程通常繼續(xù)進行直到邏輯擦除塊已滿。然后,將追加點移動至不同邏輯擦除塊。保留寫入邏輯擦除塊的順序,從而如果包括邏輯地址與物理地址之間的映射的索引已損壞或丟失,則可重放存儲數(shù)據(jù)的順序以重建該索引。該類順序存儲可被稱為日志結構陣列,并且具有該類順序存儲的存儲系統(tǒng)102可為ー種日志結構系統(tǒng)。在該順序存儲系統(tǒng)或日志結構文件系統(tǒng)中,當在讀取-修改-寫入操作中修改數(shù)據(jù)時,從ー個位置讀取數(shù)據(jù),對其進行修改,然后將其寫入追加點而非讀取該數(shù)據(jù)的位置的頂部上方。所述索引將與以上數(shù)據(jù)關聯(lián)的邏輯標識符映射到存儲與該邏輯標識符相對應的數(shù)據(jù)的每個位置。如果不需要無效數(shù)據(jù),則可在無用單元收集操作中擦除這些數(shù)據(jù),并且更新所述索引以反映所述無效數(shù)據(jù)已被清除。也可在所述索引中追蹤以上數(shù)據(jù)的較早版本,以追蹤每個版本。如果所述索引已損壞,則重放所述順序以重建該索引,并且在每次遇到特定邏輯標識符的數(shù)據(jù)時,將所述索引更新。一旦已重放整個順序,通常將特定邏輯標識符的最新版本的數(shù)據(jù)映射到該邏輯標識符。在一個實施方案中,每個固態(tài)存儲元件216、218、220包括不止ー個追加點。例如,熱數(shù)據(jù)(例如新數(shù)據(jù)或常用數(shù)據(jù))可按順序存儲在一個邏輯擦除塊的追加點處,而冷數(shù)據(jù)(例如不常用數(shù)據(jù))可存儲在另ー個邏輯擦除塊中的不同追加點處。在各個實施方案中,固態(tài)存儲元件216、218、220可具有超過兩個追加點。在讀取、修改、寫入操作中,在讀取操作中設置和讀取與數(shù)據(jù)單元關聯(lián)的數(shù)據(jù)包。未將修改的數(shù)據(jù)單元中已修改的數(shù)據(jù)段寫入其讀取位置。相反,再次將修改的數(shù)據(jù)段轉(zhuǎn)換成數(shù)據(jù)包,然后將其寫入當前寫入的邏輯頁面中的下ー個可用位置。修改各個數(shù)據(jù)包的索引條目,以指向包含修改的數(shù)據(jù)段的包。與相同數(shù)據(jù)單元關聯(lián)的未經(jīng)修改數(shù)據(jù)包的索引中的條目或多個條目將包括未修改數(shù)據(jù)包的原始位置的指示字。因此,如果保留原始數(shù)據(jù)單元,例如保留數(shù)據(jù)單元的前ー個版本,則原始數(shù)據(jù)單元將在所述索引中具有初始寫入的所有數(shù)據(jù)包的指示字。新數(shù)據(jù)單元將在所述索引中具有某些原始數(shù)據(jù)包的指示字,并且具有當前寫入的邏輯頁面中的修改的數(shù)據(jù)包的指示字。在復寫操作中,所述索引包括原始數(shù)據(jù)單元的條目,所述原始數(shù)據(jù)單元映射到存儲在固態(tài)存儲器207中的多個包。在一個實施方案中,在進行復寫吋,在將新數(shù)據(jù)單元映射到源包的索引中,創(chuàng)建新數(shù)據(jù)單元并且創(chuàng)建新條目。新數(shù)據(jù)單元也被寫入固態(tài)存儲器207,同時其位置被映射到所述索引中的新條目。在改變已在原始數(shù)據(jù)單元中做出但尚未傳播至副本并且所述索引已丟失或損壞的情況下,新數(shù)據(jù)單元包可用于識別原始數(shù)據(jù)單元內(nèi)被引用的包。通常,對于順序存儲而言,在將數(shù)據(jù)存儲在存儲裝置106上之前,寫入該數(shù)據(jù)的物理地址是未知的,但可在存儲該數(shù)據(jù)時確定。通常,數(shù)據(jù)存儲裝置中的可用物理存儲容量未被映射到LID,直到將對應于該LID的數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置中時或至少直到確定了存儲該數(shù)據(jù)的追加點的位置吋。有利地,將包按順序?qū)懭胗欣诟椒€(wěn)地使用固態(tài)存儲器207并且使得固態(tài)存儲裝置控制器202監(jiān)測固態(tài)存儲器207中各個邏輯頁面的存儲熱點和層使用率。將包按順序?qū)懭胍灿欣谟行У拇蠊β薀o用單元收集系統(tǒng),這將在下文進行詳細描述。本領域的技術人員將認識到數(shù)據(jù)包的順序存儲的其它有益效果。固態(tài)存儲裝置控制器在各個實施方案中,固態(tài)存儲裝置控制器202還包括數(shù)據(jù)總線205、局部總線209、緩沖控制器208、緩沖器O-N22加-11、主控制器224、直接存儲器存取(“DMA”)控制器226、內(nèi)存控制器228、動態(tài)存儲器陣列ぬ0、靜態(tài)隨機存儲器陣列ぬ2、管理控制器ぬ4、管理總線236、橋接器238至系統(tǒng)總線MO以及混雜邏輯M2,如下所述。在其它實施方案中,系統(tǒng)總線240耦接至一個或多個網(wǎng)絡接ロ卡(“NIC”)244,一些網(wǎng)絡接ロ卡244可包括遠程DMA(“RDMA”)控制器M6、一個或多個中央處理器(“CPU”)248、ー個或多個外部內(nèi)存控制器250和關聯(lián)的外部存儲器陣列252、一個或多個存儲控制器254、對端控制器(peercontroller)256和專用處理器258,如下所述。連接至系統(tǒng)總線MO的部件244-258可位于服務器108中或可為其它裝置。通常,固態(tài)存儲控制器204通過存儲I/O總線210將數(shù)據(jù)傳送至固態(tài)存儲器207。在典型的實施方案中,如果固態(tài)存儲器設置在存儲體214中,并且每個存儲體214均包括并行訪問的多個存儲元件216、218、220,則存儲I/O總線210為總線的陣列,每行存儲元件216、218、220中的一個總線跨越存儲體214。如本文所用,術語“存儲I/O總線”可指一個存儲I/O總線210或數(shù)據(jù)獨立總線(未示出)的陣列。在優(yōu)選的實施方案中,訪問一行存儲元件(例如216a、218a、220a)的每個存儲I/O總線210可包括在一行存儲元件216a、218a、220a中訪問的存儲分區(qū)(例如擦除塊)的邏輯到物理映射。該映射也可使映射到某個存儲分區(qū)的物理地址處的邏輯地址重新映射到不同存儲分區(qū),其前提是第一存儲分區(qū)失效、部分失效、不可訪問或存在某種其它問題。也可通過系統(tǒng)總線M0、橋接器238、局部總線209、緩沖器222并且最終通過數(shù)據(jù)總線205將數(shù)據(jù)從請求裝置(諸如客戶端110或文件服務器114/文件系統(tǒng))傳送至固態(tài)存儲控制器204。數(shù)據(jù)總線205通常連接至通過緩沖控制器208控制的一個或多個緩沖器22h-n。緩沖控制器208通??刂茢?shù)據(jù)從局部總線209傳送至緩沖器222以及通過數(shù)據(jù)總線205傳送至管道輸入緩沖器306和輸出緩沖器330(見圖幻。緩沖控制器208通常控制如何可將來自請求裝置的數(shù)據(jù)暫時存儲在緩沖器222中,然后傳送到數(shù)據(jù)總線205上(或反之亦然),以解釋不同時鐘域的原因,防止數(shù)據(jù)沖突等。緩沖控制器208通常與主控制器224一起運行,以協(xié)調(diào)數(shù)據(jù)流。隨著數(shù)據(jù)的到達,數(shù)據(jù)將到達系統(tǒng)總線對0,通過橋接器238傳送至局部總線209。通常,將所述數(shù)據(jù)從局部總線209傳送至一個或多個數(shù)據(jù)緩沖器222,如主控制器224和緩沖控制器208所指示。然后,所述數(shù)據(jù)通過固態(tài)控制器204從緩沖器222流向數(shù)據(jù)總線205,并且流到固態(tài)存儲器207諸如NAND閃存或其它存儲介質(zhì)上。在優(yōu)選的實施方案中,采用包括一個或多個固態(tài)存儲控制器204a-2(Mn-l和關聯(lián)的固態(tài)存儲器207a-207n-l的一個或多個數(shù)據(jù)通道來傳送與所述數(shù)據(jù)一起到達的數(shù)據(jù)和關聯(lián)的帶外元數(shù)據(jù)(“數(shù)據(jù)單元的元數(shù)據(jù)”),而至少一個通道(固態(tài)存儲控制器20、固態(tài)存儲器207η)專用于帶內(nèi)元數(shù)據(jù),諸如在固態(tài)存儲裝置206內(nèi)部生成的索引信息和其它元數(shù)據(jù)。局部總線209通常為雙向總線或一組總線,其允許在位于固態(tài)存儲裝置控制器202內(nèi)部的裝置之間以及在位于固態(tài)存儲裝置206內(nèi)部的裝置與連接至系統(tǒng)總線MO的裝置244-258之間進行的數(shù)據(jù)和命令通信。橋接器238有利于局部總線209與系統(tǒng)總線240之間的通信。本領域的技術人員將認識到其它實施方案,諸如總線Μ0、209、205、210和橋接器238的環(huán)形結構或交換式星形配置和功能。系統(tǒng)總線240通常為計算機、服務器108或安裝或連接有固態(tài)存儲裝置206的其它裝置的總線。在一個實施方案中,系統(tǒng)總線240可為PCI-e總線、串行高級技術附件("serialATA”)總線、并行ATA等。在另ー個實施方案中,系統(tǒng)總線240為外部總線,諸如小型計算機系統(tǒng)接ロ(“SCSI”)、火線、光纖通道、USB、PCIe-AS等。固態(tài)存儲裝置206可被封裝以裝配在裝置內(nèi)部或作為外部連接裝置。固態(tài)存儲裝置控制器202包括控制固態(tài)存儲裝置206內(nèi)的高層功能的主控制器224。在各個實施方案中,主控制器2M通過解譯存儲請求和其它請求來控制數(shù)據(jù)流,指示索引的創(chuàng)建以將與數(shù)據(jù)關聯(lián)的標識符映射到關聯(lián)數(shù)據(jù)的物理位置,從而協(xié)調(diào)DMA請求等。本文所述功能中的多個通過主控制器2M來完全或部分控制。在一個實施方案中,主控制器2M采用嵌入式控制器。在另ー個實施方案中,主控制器2M采用局部存儲器,諸如動態(tài)存儲器陣列230(動態(tài)隨機存取存儲器“DRAM”)、靜態(tài)存儲器陣列323(靜態(tài)隨機存取存儲器“SRAM”)等。在一個實施方案中,局部存儲器通過主控制器2M來控制。在另ー個實施方案中,主控制器經(jīng)由內(nèi)存控制器2來訪問局部存儲器。在另ー個實施方案中,主控制器運行Linux服務器,并且可支持各種通用服務器接ロ,諸如萬維網(wǎng)、超文本標記語言(“HTML”)等。在另ー個實施方案中,主控制器2M采用納米處理器。主控制器2M可采用可編程邏輯或標準邏輯,或上列控制器類型的任何組合來構建。本領域的技術人員將認識到主控制器224的多個實施方案。在一個實施方案中,如果存儲控制器104/固態(tài)存儲裝置控制器202管理多個數(shù)據(jù)存儲裝置106/固態(tài)存儲器207a-n,則主控制器2M將工作負荷分配在內(nèi)部控制器(諸如固態(tài)存儲控制器2(Ma-n)之間。例如,主控制器2M可分配待寫入數(shù)據(jù)存儲裝置(例如固態(tài)存儲器207a-n)的數(shù)據(jù),以使得所述數(shù)據(jù)的一部分存儲在每個附加數(shù)據(jù)存儲裝置106/固態(tài)存儲器207上。這個特征為允許較快地存儲和存取數(shù)據(jù)的性能增強。在一個實施方案中,主控制器2M采用FPGA來實施。固態(tài)存儲裝置控制器202也可采用FPGA來實施。在另一個實施方案中,主控制器224內(nèi)的固件可通過管理總線236、經(jīng)由網(wǎng)絡連接至網(wǎng)絡接ロ卡(“NIC”)244的系統(tǒng)總線240或連接至系統(tǒng)總線MO的其它裝置來更新。在一個實施方案中,管理對象、文件、另ー個數(shù)據(jù)單元的主控制器2M模擬塊存儲,使得計算機或服務器108或連接至存儲裝置106/固態(tài)存儲裝置206的其它裝置將存儲裝置106/固態(tài)存儲裝置206視為塊存儲裝置并且將分成邏輯塊的數(shù)據(jù)發(fā)送至存儲裝置106/固態(tài)存儲裝置206中的特定邏輯塊地址。然后,主控制器2M劃分邏輯塊并且存儲來自這些邏輯塊的數(shù)據(jù),如同其對任何其它數(shù)據(jù)単元(諸如對象)的處理方式。然后,主控制器2M將這些邏輯塊和與其一起發(fā)送的邏輯塊地址映射到存儲數(shù)據(jù)的實際物理位置。所述映射存儲在索引中。通常,對于邏輯塊仿真而言,塊裝置應用程序接ロ(“API”)設置在服務器108的驅(qū)動器118、客戶端110或期望將存儲裝置106/固態(tài)存儲裝置206用作塊存儲裝置的其它裝置中。在另ー個實施方案中,主控制器224與NIC控制器244和嵌入式RDMA控制器246協(xié)調(diào),以提供剛好及時的數(shù)據(jù)和命令集RDMA傳送。NIC控制器244可隱藏在非透明端ロ后面,以能夠使用定制驅(qū)動器。另外,客戶端110上的驅(qū)動器可通過采用標準堆棧API且與NIC244—起操作經(jīng)由I/O存儲驅(qū)動器來訪問計算機網(wǎng)絡118。在一個實施方案中,主控制器2M也為RAID控制器。如果數(shù)據(jù)存儲裝置/固態(tài)存儲裝置206與一個或多個其它數(shù)據(jù)存儲裝置106/固態(tài)存儲裝置206進行網(wǎng)絡連接,則主控制器2M可為單層RAID、多層RAID、漸進RAID等的RAID控制器。主控制器224也使得一些對象存儲在RAID陣列中,而使得其它對象在無需RAID的情況下存儲。在另ー個實施方案中,主控制器2M可為分布式RAID控制器元件。在另ー個實施方案中,主控制器2M可包括多個RAID、分布式RAID以及如其它地方描述的其它功能。在一個實施方案中,主控制器2M與單個或冗余網(wǎng)絡管理器(例如交換機)協(xié)調(diào),以建立路由,平衡帶寬利用率、故障轉(zhuǎn)移等。在另ー個實施方案中,主控制器224與集成專用邏輯(經(jīng)由局部總線209)和關聯(lián)的驅(qū)動器軟件協(xié)調(diào)。在另ー個實施方案中,主控制器2M與附加專用處理器258或邏輯(經(jīng)由外部系統(tǒng)總線M0)和關聯(lián)的驅(qū)動器軟件協(xié)調(diào)。在另ー個實施方案中,主控制器2M與遠程專用邏輯(經(jīng)由計算機網(wǎng)絡118)和關聯(lián)的驅(qū)動器軟件協(xié)調(diào)。在另ー個實施方案中,主控制器224與局部總線209或外部總線連接的硬盤驅(qū)動器(“HDD”)存儲控制器協(xié)調(diào)。控制器202可使存儲控制器2M對客戶端不可見。在一個實施方案中,主控制器2M與一個或多個存儲控制器2M通信,其中存儲裝置106/固態(tài)存儲裝置206可作為通過SCSI總線、互聯(lián)網(wǎng)SCSI(“SCSI”)、光纖通道等連接的存儲裝置。同吋,存儲裝置106/固態(tài)存儲裝置206可自主管理對象、文件和其它數(shù)據(jù)單元,并且可作為對象文件系統(tǒng)、分布式對象文件系統(tǒng)、文件系統(tǒng)等。主控制器2M也可被對端控制器256和/或?qū)S锰幚砥?58訪問。在另ー個實施方案中,主控制器224與自主型集成管理控制器協(xié)調(diào),以定期驗證FPGA代碼和/或控制器軟件,在運行(重置)時驗證FPGA代碼和/或在通電(重置)期間驗證控制器軟件,支持外部重置請求,支持由于監(jiān)視器超時產(chǎn)生的重置請求,并且支持電壓、電流、功率、溫度以及閾值中斷的其它環(huán)境測量和設置。在另ー個實施方案中,主控制器224管理對未使用的擦除塊進行的無用單元收集,以便再次使用。在另ー個實施方案中,主控制器2M管理耗損均衡、存儲單元的刷新等。在另ー個實施方案中,主控制器2M使數(shù)據(jù)存儲裝置/固態(tài)存儲裝置206分成多個虛擬裝置并且允許基于分區(qū)的介質(zhì)加密。在另ー個實施方案中,主控制器2M支持具有高級多位ECC糾錯的固態(tài)存儲控制器204。本領域的技術人員將認識到存儲控制器104或更具體地固態(tài)存儲裝置206中的主控制器224的其它特征和功能。在一個實施方案中,固態(tài)存儲裝置控制器202包括控制動態(tài)隨機存儲器陣列230和/或靜態(tài)隨機存儲器陣列232的內(nèi)存控制器228。如上所述,內(nèi)存控制器2可為獨立的或與主控制器224結合。內(nèi)存控制器2通常控制某種類型的易失性存儲器,諸如DRAM(動態(tài)隨機存儲器陣列ぬ0)和SRAM(靜態(tài)隨機存儲器陣列ぬ2)。在其它實例中,內(nèi)存控制器2也控制其它存儲器類型,諸如電可擦可編程只讀存儲器(“EEPR0M”)等。在其它實施方案中,內(nèi)存控制器2控制兩種或更多種存儲器類型,并且內(nèi)存控制器2可包括不止ー個控制器。通常,內(nèi)存控制器228以盡可能可行的方式控制SRAM232,并且通過DRAM230來補充SRAM232ο在一個實施方案中,將索引存儲在存儲器230、232中,然后將其定期卸載到固態(tài)存儲器207η或其它非易失性存儲器的通道中。本領域的技術人員將認識到內(nèi)存控制器228、動態(tài)存儲器陣列230和靜態(tài)存儲器陣列232的其它用途和配置。在一個實施方案中,固態(tài)存儲裝置控制器202包括DMA控制器226,DMA控制器2控制存儲裝置/固態(tài)存儲裝置206與ー個或多個外部內(nèi)存控制器250、關聯(lián)的外部存儲器陣列252和CPU248之間的DMA操作。注意到,外部內(nèi)存控制器250和外部存儲器陣列252被稱為外部裝置,因為其位于存儲裝置/固態(tài)存儲裝置206的外部。另外,DMA控制器2也可通過NIC244和關聯(lián)的RDMA控制器246與請求裝置一起控制RDMA操作。下文更詳細地闡述了DMA和RDMA。在一個實施方案中,固態(tài)存儲裝置控制器202包括連接至管理總線236的管理控制器234。通常管理控制器234管理存儲裝置/固態(tài)存儲裝置206的環(huán)境指標和狀態(tài)。管理控制器234可通過管理總線236來監(jiān)測裝置溫度、風扇速度、電源設置值等。管理控制器可支持可擦可編程只讀存儲器(“EEPR0M”)的讀取和編程,以存儲FPGA代碼和控制器軟件。通常,管理總線236連接至存儲裝置/固態(tài)存儲裝置206內(nèi)的各個部件。管理控制器234可通過局部總線209來傳送警報、中斷等或可包括系統(tǒng)總線240或其它總線的單獨接線。在一個實施方案中,管理總線236為內(nèi)部集成電路(“I2C”)總線。本領域的技術人員將認識到管理控制器234的其它相關功能和用途,管理控制器234通過管理總線236連接至存儲裝置/固態(tài)存儲裝置206的部件。在一個實施方案中,固態(tài)存儲裝置控制器202包括可針對具體應用來定制的混雜邏輯M2。通常,如果固態(tài)裝置控制器202或主控制器2采用FPGA或其它可配置控制器來配置,則根據(jù)特定應用程序、用戶要求、存儲要求等可包括定制邏輯。數(shù)據(jù)管道圖3為示出了根據(jù)本發(fā)明的固態(tài)存儲控制器204的一個實施方案300的示意性框圖,固態(tài)存儲控制器204具有位于固態(tài)存儲裝置206中的寫入數(shù)據(jù)管道301和讀取數(shù)據(jù)管道303。實施方案300包括數(shù)據(jù)總線205、局部總線209和緩沖控制器208,其基本上類似于關于圖2的固態(tài)存儲裝置控制器202描述的那些。寫入數(shù)據(jù)管道包括分包器302和錯誤校正碼(“ECC”)生成器304。在其它實施方案中,寫入數(shù)據(jù)管道包括輸入緩沖器306、寫入同步緩沖器308、寫入程序模塊310、壓縮模塊312、加密模塊314、無用單元收集程序旁路316(其一部分位于讀取數(shù)據(jù)管道內(nèi))、介質(zhì)加密模塊318和寫入緩沖器320。讀取數(shù)據(jù)管道303包括讀取同步緩沖器328、ECC糾錯模塊322、解包器324、對齊模塊3和輸出緩沖器330。在其它實施方案中,讀取數(shù)據(jù)管道303可包括介質(zhì)解密模塊332、無用單元收集程序旁路316的一部分、解密模塊334、解壓縮模塊336和讀取程序模塊338。固態(tài)存儲控制器204還可包括控制和狀態(tài)寄存器340、控制隊列342、存儲體交錯控制器344、同步緩沖器346、存儲總線控制器348和復用器(“MUX”)350。下文描述了固態(tài)控制器204與關聯(lián)的寫入數(shù)據(jù)管道301和讀取數(shù)據(jù)管道303的部件。在其它實施方案中,可使用同步固態(tài)存儲器207,并且可消除同步緩沖器308、328。寫入數(shù)據(jù)管道寫入數(shù)據(jù)管道301包括分包器302,分包器302接收通過另ー個寫入數(shù)據(jù)管道301階段直接或間接地寫入固態(tài)存儲器的數(shù)據(jù)或元數(shù)據(jù)段,并且創(chuàng)建針對固態(tài)存儲器207來設置大小的ー個或多個包。所述數(shù)據(jù)或元數(shù)據(jù)段通常為對象、文件、索引節(jié)點或其它數(shù)據(jù)単元的一部分,但還可包括整個對象、文件、索引節(jié)點等。在另ー個實施方案中,數(shù)據(jù)段為邏輯數(shù)據(jù)塊的一部分,但還可包括整個邏輯塊。通常,從服務器108、客戶端110或者其它計算機或裝置處接收數(shù)據(jù)單元或數(shù)據(jù)單元的一部分,并且將其以流入固態(tài)存儲裝置206或服務器108中的數(shù)據(jù)段發(fā)送至固態(tài)存儲裝置206。數(shù)據(jù)段可具有固定或可變長度,并且也可具有另ー個名稱,諸如數(shù)據(jù)包裏,但如本文所引用,其包括諸如文件、對象、邏輯塊等數(shù)據(jù)單元的全部或部分。每個數(shù)據(jù)單元均被存儲為ー個或多個包。每個數(shù)據(jù)單元均可具有ー個或多個容器包。每個包均包含標題。標題可包括標題類型字段。類型字段可包括數(shù)據(jù)、屬性(諸如對象屬性)、元數(shù)據(jù)、數(shù)據(jù)段定界符(多包)、對象或其它結構、鏈接等。標題還可包括關于包大小的信息,諸如該包中包括的數(shù)據(jù)的字節(jié)數(shù)。包的長度可通過包類型來確定。標題可包括建立包與數(shù)據(jù)單元的關系的信息,諸如邏輯標識符。一個實例可能為邏輯塊地址和偏移,其使用數(shù)據(jù)包標題中的偏移來識別數(shù)據(jù)段在數(shù)據(jù)單元內(nèi)的位置。本領域的技術人員將認識到通過分包器302添加至數(shù)據(jù)的標題中可包括的其它信息和可添加至數(shù)據(jù)包的其它信息。每個包均包括標題和可能來自數(shù)據(jù)或元數(shù)據(jù)段的數(shù)據(jù)。每個包的標題包括將包與該包所屬的數(shù)據(jù)單元關聯(lián)的相關信息。例如,標題可包括對象標識符和偏移,其指示數(shù)據(jù)段、對象、邏輯塊或形成數(shù)據(jù)包的其它數(shù)據(jù)単元。標題還可包括被存儲總線控制器348用來存儲包的邏輯標識符。標題還可包括關于包大小的信息,諸如該包中包括的字節(jié)數(shù)。標題還可包括順序號,該順序號在重構數(shù)據(jù)段或數(shù)據(jù)單元吋,識別數(shù)據(jù)段相對于數(shù)據(jù)單元內(nèi)的其它包的所屬位置。標題可包括標題類型字段。類型字段可包括數(shù)據(jù)、對象屬性、元數(shù)據(jù)、數(shù)據(jù)段定界符(多包)、對象結構、對象鏈接等。本領域的技術人員將認識到通過分包器302添加至數(shù)據(jù)或元數(shù)據(jù)的標題中可包括的其它信息和可添加至包的其它信息。寫入數(shù)據(jù)管道301包括ECC生成器304,其向從分包器302接收的ー個或多個包生成一個或多個錯誤校正碼(“ECC”)。ECC生成器304通常采用糾錯算法來生成通過數(shù)據(jù)包存儲的ECC。通過所述包存儲的ECC通常用于檢測和校正通過傳輸和存儲而引入數(shù)據(jù)中的錯誤。在一個實施方案中,使包流向ECC生成器304中以作為具有長度N的非編碼塊(“ECC·”)。ECC塊通常具有若干個包,但可為單個包。包可跨越多個ECC塊。ECC塊通常小于邏輯頁面,但在其它實施方案中,其可大于單個邏輯頁面。ECC塊、包、邏輯頁面、邏輯擦除塊等可對齊或不對齊。針對ECC塊計算長度S的檢驗子,追加該檢驗子并且將其作為長度N+S的編碼ECC組塊來輸出。在優(yōu)選的實施方案中,檢驗子S針對跨越多個物理頁面使得ー個或多個ECC塊存儲在邏輯頁面中的ECC塊。N和S的值取決于被選擇用于實現(xiàn)特定性能、效率和穩(wěn)健性指標的算法的特性。在該優(yōu)選的實施方案中,ECC塊與包之間不存在固定關系;包可包括不止ー個ECC塊;ECC塊可包括不止ー個包;并且第一包可在ECC塊內(nèi)的任何位置終止,而第二包可在第一包在同一ECC塊內(nèi)終止之后開始。在該優(yōu)選的實施方案中,未動態(tài)修改ECC算法。在優(yōu)選的實施方案中,通過數(shù)據(jù)包存儲的ECC足夠穩(wěn)健以校正超過兩位的錯誤。有利地,采用允許進行不僅僅単位校正或甚至雙位校正的穩(wěn)健ECC算法可延長固態(tài)存儲器207的壽命。例如,如果將閃速存儲器用作固態(tài)存儲器207中的存儲介質(zhì),則每個擦除周期可將閃速存儲器寫入大約100,000次,而不會產(chǎn)生錯誤。可采用穩(wěn)健ECC算法來延長該使用極限。通過使ECC生成器304和相應ECC糾錯模塊322位于固態(tài)存儲裝置206上,固態(tài)存儲裝置206可在內(nèi)部校正錯誤,并且比采用穩(wěn)健性較低的ECC算法(諸如單位校正)具有更長的使用壽命。2009年5月18日提交的標題為〃Apparatus,System,andMethodtoIncreaseDataIntegrityinaRedundantStorageSystem"的美_專禾丨J申請No.12/468,041(JonathanThatcher等)和2009年5月18日提交的標題為“Apparatus,System,anaMethodiorReconfiguringanArraytoOperatewithLessStorageElements"的美國專利申請No.12/468,040(JonathanThatcher等)中更詳細地描述了將遍布用于減少耗損的存儲元件的ECC組塊用于存儲裝置106中的ー個實例。這些申請描述了如果發(fā)現(xiàn)存儲元件存在錯誤,采用ECC保護和奇偶校驗信息來有效地檢測錯誤,然后重新配置陣列。然而,在其它實施方案中,ECC生成器304可采用穩(wěn)健性較低的算法,并且可校正単位或雙位錯誤。在另ー個實施方案中,固態(tài)存儲裝置206可包括可靠性較低的存儲器,諸如多層單元(“MLC”)閃存,以便增加容量,所述存儲器在無更穩(wěn)健的ECC算法的情況下可能不會充分可靠。在一個實施方案中,寫入數(shù)據(jù)管道301包括輸入緩沖器306,輸入緩沖器306接收待寫入固態(tài)存儲器207的數(shù)據(jù)段并且存儲輸入數(shù)據(jù)段,直到寫入數(shù)據(jù)管道301的下ー個階段,諸如分包器302(或更復雜的寫入數(shù)據(jù)管道301的其它階段)準備處理下一個數(shù)據(jù)段吋。輸入緩沖器306通常使得速率數(shù)據(jù)段之間的差異通過寫入數(shù)據(jù)管道301采用大小適當?shù)臄?shù)據(jù)緩沖器來接收和處理。輸入緩沖器306也可使數(shù)據(jù)總線205以大于寫入數(shù)據(jù)管道301可保持的速率將數(shù)據(jù)傳送至寫入數(shù)據(jù)管道301,以便提高數(shù)據(jù)總線205的操作效率。通常,當寫入數(shù)據(jù)管道301不包括輸入緩沖器306吋,在其它地方進行緩沖功能,諸如在固態(tài)存儲裝置206中但在寫入數(shù)據(jù)管道301外部,在服務器108中,諸如在網(wǎng)絡接ロ卡(“NIC”)內(nèi)或在另ー個裝置處(例如在使用遠程直接存儲器存取(“RDMA”)吋)。數(shù)據(jù)可從一個或多個客戶端110或文件服務器114/文件系統(tǒng)流入輸入緩沖器306中。通常,以從客戶端110和/或文件服務器114/文件系統(tǒng)到達的順序?qū)?shù)據(jù)輸入到輸入緩沖器306中。然后,可以到達順序按順序地存儲數(shù)據(jù),而非通過客戶端110或文件服務器114/文件系統(tǒng)進行分離。在順序存儲裝置中,因為可使用索引和元數(shù)據(jù)來追蹤數(shù)據(jù)來源,所以可使來自各種來源的數(shù)據(jù)散置。在另ー個實施方案中,寫入數(shù)據(jù)管道301還包括寫入同步緩沖器308,寫入同步緩沖器308在將從ECC生成器304接收的包寫入固態(tài)存儲器207之前對這些包進行緩沖。寫入同步緩沖器308位于本地時鐘域與固態(tài)存儲器時鐘域之間的邊界處,并且提供緩沖以說明時鐘域的差異。在其它實施方案中,可使用同步固態(tài)存儲器207,并且可消除同步緩沖器308>3280在一個實施方案中,寫入數(shù)據(jù)管道301還包括介質(zhì)加密模塊318,介質(zhì)加密模塊318從分包器302直接或間接地接收ー個或多個包,并且在將這些包發(fā)送至ECC生成器304之前,使用固態(tài)存儲裝置206所獨具的加密密鑰將所述ー個或多個包加密。通常,將整個包(包括標題)加密。在另ー個實施方案中,標題未被加密。在該文獻中,應理解加密密鑰是指從結合固態(tài)存儲器207的實施方案外部和在需要加密保護的實施方案中管理的秘密加密密鑰。介質(zhì)加密模塊318和相應的介質(zhì)解密模塊332向存儲在固態(tài)存儲器207中的數(shù)據(jù)提供了保密級。例如,在使用介質(zhì)加密模塊318來加密數(shù)據(jù)的情況下,如果固態(tài)存儲器207連接至不同的固態(tài)存儲控制器204、固態(tài)存儲裝置206或服務器108,則在不使用在將數(shù)據(jù)寫入固態(tài)存儲器207期間所使用的同一加密密鑰的情況下,通常不能輕易地讀取固態(tài)存儲器207的內(nèi)容。在典型的實施方案中,固態(tài)存儲裝置206未將加密密鑰存儲在非易失性存儲器中,并且不允許對加密密鑰進行外部訪問。在初始化期間向固態(tài)存儲控制器204提供加密密鑰。固態(tài)存儲裝置206可使用和存儲連同加密密鑰使用的非秘密加密隨機數(shù)??赏ㄟ^每個包來存儲不同隨機數(shù)。數(shù)據(jù)段可分裂在具有唯一隨機數(shù)的多個包之間,以通過加密算法來提高保護。可從客戶端110、服務器108、密鑰管理器或?qū)虘B(tài)存儲控制器204待使用的加密密鑰進行管理的其它裝置處接收加密密鑰。在另ー個實施方案中,固態(tài)存儲器207可具有兩個或更多個分區(qū),并且固態(tài)存儲控制器204好似其為兩個或更多個固態(tài)存儲控制器204,每個固態(tài)存儲控制器204均在固態(tài)存儲器207內(nèi)的單個分區(qū)上操作。在該實施方案中,唯一介質(zhì)加密密鑰可與每個分區(qū)一起使用。在另ー個實施方案中,寫入數(shù)據(jù)管道301還包括加密模塊314,加密模塊314在將數(shù)據(jù)段發(fā)送至分包器302之前,將從輸入緩沖器306直接或間接地接收的數(shù)據(jù)或元數(shù)據(jù)段加密,所述數(shù)據(jù)段通過使用連同該數(shù)據(jù)段接收的加密密鑰來加密。加密模塊314不同于介質(zhì)加密模塊318,因為被加密模塊318用來加密數(shù)據(jù)的加密密鑰可能并非為存儲在固態(tài)存儲裝置206內(nèi)的所有數(shù)據(jù)所共用,但可基于數(shù)據(jù)單元而不同,并且可連同接收的數(shù)據(jù)段接收,如下所述。例如,加密模塊318待加密的數(shù)據(jù)段的加密密鑰可與數(shù)據(jù)段一起接收或可作為將數(shù)據(jù)段所屬的數(shù)據(jù)單元寫入的命令的一部分來接收。固態(tài)存儲裝置206可使用和存儲每個數(shù)據(jù)包中連同加密密鑰使用的非秘密加密隨機數(shù)??赏ㄟ^每個包來存儲不同隨機數(shù)。數(shù)據(jù)段可分裂在具有唯一隨機數(shù)的多個包之間,以通過加密算法來提高保護。在一個實施方案中,介質(zhì)加密模塊318使用的隨機數(shù)與加密模塊314使用的隨機數(shù)相同??蓮目蛻舳?10、服務器108、密鑰管理器或保存待用于加密數(shù)據(jù)段的加密密鑰的其它裝置處接收加密密鑰。在一個實施方案中,將加密密鑰從固態(tài)存儲裝置206、服務器108、客戶端110或能夠執(zhí)行行業(yè)標準方法的其它外部代理之一傳送至固態(tài)存儲控制器204,以安全地傳送和保護私鑰和公鑰。在一個實施方案中,加密模塊318用連同第一包接收的第一加密密鑰將第一包加密,并且用連同第二包接收的第二加密密鑰將第二包加密。在另ー個實施方案中,加密模塊318用連同第一包接收的第一加密密鑰將第一包加密,并且將第二數(shù)據(jù)包在無需加密的情況下傳至下ー個階段。有利地,固態(tài)存儲裝置206的寫入數(shù)據(jù)管道301中包括的加密模塊318允許進行數(shù)據(jù)單元接數(shù)據(jù)單元或段接段數(shù)據(jù)加密,而無需使用單個文件服務器114/文件系統(tǒng)或其它外部系統(tǒng)來追蹤用于存儲相應數(shù)據(jù)単元或數(shù)據(jù)段的不同加密密鑰。每個請求裝置155或相關密鑰管理器獨立地管理用于僅將請求裝置155發(fā)送的數(shù)據(jù)單元或數(shù)據(jù)段加密的加密密鑰。在另ー個實施方案中,寫入數(shù)據(jù)管道301包括壓縮模塊312,壓縮模塊312在將數(shù)據(jù)段發(fā)送至分包器302之前壓縮元數(shù)據(jù)段的數(shù)據(jù)。壓縮模塊312通常采用本領域的技術人員已知的壓縮程序來壓縮數(shù)據(jù)或元數(shù)據(jù)段,以減小該段的存儲大小。例如,如果數(shù)據(jù)段包括512個零的字符串,則壓縮模塊312可用指示512個零的代碼或令牌來取代512個零,其中該代碼遠比512個零占用的空間緊湊。在一個實施方案中,壓縮模塊312用第一壓縮程序來壓縮第一段,并且傳遞無需壓縮的第二段。在另ー個實施方案中,壓縮模塊312用第一壓縮程序來壓縮第一段,并且用壓縮第二壓縮程序來第二段。使固態(tài)存儲裝置206內(nèi)具有該靈活性是有利的,以使得客戶端110或?qū)?shù)據(jù)寫入固態(tài)存儲裝置206的其它裝置各自可指定壓縮程序,或者以使得在另ー個指定無需壓縮時,其中ー個可指定壓縮程序。也可根據(jù)基于每個數(shù)據(jù)單元類型或數(shù)據(jù)單元類別的設置默認值來選擇壓縮程序。例如,特定數(shù)據(jù)單元的第一數(shù)據(jù)單元可能能夠覆蓋默認壓縮程序設置值,相同數(shù)據(jù)單元類別和數(shù)據(jù)單元類型的第二數(shù)據(jù)單元可使用默認壓縮程序,并且相同數(shù)據(jù)單元類別和數(shù)據(jù)單元類型的第三數(shù)據(jù)單元可無需壓縮。在一個實施方案中,寫入數(shù)據(jù)管道301包括無用單元收集程序旁路316,該旁路從讀取數(shù)據(jù)管道303中接收數(shù)據(jù)段以作為無用單元收集系統(tǒng)中的數(shù)據(jù)旁路的一部分。通常因為包被標記為待刪除或已被修改并且修改的數(shù)據(jù)存儲在不同位置,所以無用單元收集系統(tǒng)通常會標記不再有效的包。在某個時刻,無用單元收集系統(tǒng)確定可恢復特定存儲部分,諸如邏輯擦除塊。該確定可能是由于缺乏可用存儲容量、被標記為無效的數(shù)據(jù)的百分比達到閾值、有效數(shù)據(jù)的合井、該存儲部分的錯誤檢測率達到閾值或基于數(shù)據(jù)分布的改進性能等。無用單元收集算法可考慮多種因素以確定要恢復存儲部分的時間。一旦存儲部分已被標記為待恢復,則通常必須重新設置該部分中的有效包。無用單元收集程序旁路316可使包讀取到讀取數(shù)據(jù)管道303中,然后直接傳送至寫入數(shù)據(jù)管道301,而無需從固態(tài)存儲控制器204發(fā)送。在優(yōu)選的實施方案中,無用單元收集程序旁路316為在固態(tài)存儲裝置206內(nèi)操作的自主型無用單元收集程序系統(tǒng)的一部分。這可使固態(tài)存儲裝置206管理數(shù)據(jù),以使得數(shù)據(jù)系統(tǒng)地遍布固態(tài)存儲器207,以提高性能、數(shù)據(jù)可靠性,避免固態(tài)存儲器207的任何ー個位置或區(qū)域的過度使用和使用不足,并且延長固態(tài)存儲器207的使用壽命。無用單元收集程序旁路316與一個或多個客戶端110或其它裝置寫入的其它段協(xié)調(diào)將段插入寫入數(shù)據(jù)管道301中。在所述實施方案中,無用單元收集程序旁路316位于寫入數(shù)據(jù)管道301中的分包器302之前并且位于讀取數(shù)據(jù)管道303中的解包器3M之后,但也可位于讀取數(shù)據(jù)管道303和寫入數(shù)據(jù)管道301中的其它位置。在刷新寫入數(shù)據(jù)管道301期間,可使用無用單元收集程序旁路316來填充邏輯頁面的剰余部分,以便提高固態(tài)存儲器207內(nèi)的存儲效率,從而降低無用單元收集頻率。在一個實施方案中,寫入數(shù)據(jù)管道301包括緩沖數(shù)據(jù)以進行有效的寫入操作的寫入緩沖器320。通常,寫入緩沖器320包括足夠的包容量來填充固態(tài)存儲器207中的至少ー個邏輯頁面。這使得寫入操作不間斷地將數(shù)據(jù)的整個頁面發(fā)送至固態(tài)存儲器207。邏輯頁面可包括不止ー個ECC組塊。通過將寫入數(shù)據(jù)管道301的寫入緩沖器320和讀取數(shù)據(jù)管道303內(nèi)的緩沖器的大小設置成相同的容量或大于固態(tài)存儲器207內(nèi)的存儲寫入緩沖器,可更有效地寫入和讀取數(shù)據(jù),因為可精心編制單個寫入命令而非多個命令來將數(shù)據(jù)的整個邏輯頁面發(fā)送至固態(tài)存儲器207。在另ー個實施方案中,將具有小于邏輯頁面的寫入緩沖器302的內(nèi)容寫入固態(tài)存儲器207。填充寫入緩沖器320吋,固態(tài)存儲器207可用于其它讀取操作。這是有利的,因為在將數(shù)據(jù)寫入存儲寫入緩沖器并且流入存儲寫入緩沖器的數(shù)據(jù)掛起(stall)吋,具有較小的寫入緩沖器或無寫入緩沖器的其它固態(tài)裝置可占用固態(tài)存儲器。將阻礙讀取操作,直到整個存儲寫入緩沖器被填充和編程吋。不具有寫入緩沖器或小型寫入緩沖器的系統(tǒng)的另一種方法在于刷新未滿的存儲寫入緩沖器,以便能夠進行讀取。另外,這是無效的,因為需要多個寫入/程序周期來填充頁面。對于具有大小大于邏輯頁面的寫入緩沖器320的所述實施方案而言,包括多個子命令的單個寫入命令然后可與單個程序命令先后將數(shù)據(jù)頁面從每個固態(tài)存儲元件216、218,220中的存儲寫入緩沖器傳送至每個固態(tài)存儲元件216、218、220內(nèi)的指定頁面。這種技術具有消除已知可降低數(shù)據(jù)可靠性和耐久性的非全頁編程并且在填充緩沖器時釋放用于讀取和其它命令的目標存儲體的有益效果。在一個實施方案中,寫入緩沖器320為乒乓緩沖器,其中該緩沖器的ー側(cè)被填充,然后在該乒乓緩沖器的另ー側(cè)被填充時,其被指定在適當?shù)臅r間進行傳送。在另ー個實施方案中,寫入緩沖器320包括容量大于數(shù)據(jù)段的邏輯頁面的先進先出(“FIFO”)寄存器。本領域的技術人員將認識到可在將數(shù)據(jù)寫入固態(tài)存儲器207之前存儲數(shù)據(jù)的邏輯頁面的其它寫入緩沖器320配置。在另ー個實施方案中,寫入緩沖器320的大小小于邏輯頁面,從而可將小于信息頁面的頁面寫入固態(tài)存儲器207中的存儲寫入緩沖器。在該實施方案中,為了防止寫入數(shù)據(jù)管道301中的掛起阻礙讀取操作,采用無用單元收集系統(tǒng)將需要從ー個位置移動至另一個以作為無用単元收集進程的一部分的數(shù)據(jù)排隊。如果寫入數(shù)據(jù)管道301中發(fā)生數(shù)據(jù)掛起,可將所述數(shù)據(jù)通過無用單元收集程序旁路316提供給寫入緩沖器320,然后傳至固態(tài)存儲器207中的存儲寫入緩沖器,以在對這些數(shù)據(jù)編程之前填充邏輯頁面的頁面。這樣,寫入數(shù)據(jù)管道301中的數(shù)據(jù)掛起不會使固態(tài)存儲裝置106的讀取掛起。在另ー個實施方案中,寫入數(shù)據(jù)管道301包括具有寫入數(shù)據(jù)管道301內(nèi)的ー個或多個用戶可定義功能的寫入程序模塊310。寫入程序模塊310可使用戶定制寫入數(shù)據(jù)管道301。用戶可根據(jù)特定數(shù)據(jù)要求或應用來定制寫入數(shù)據(jù)管道301。如果固態(tài)存儲控制器204為FPGA,則用戶可采用定制命令和功能相對容易地對寫入數(shù)據(jù)管道301編程。用戶也可使用寫入程序模塊310來包括定制功能與ASIC,但ASIC定制可能比采用FPGA更難于實現(xiàn)。寫入程序模塊310可包括緩沖器和旁路機構,以使得第一數(shù)據(jù)段在寫入程序模塊310中執(zhí)行,同時第二數(shù)據(jù)段可繼續(xù)通過寫入數(shù)據(jù)管道301。在另ー個實施方案中,寫入程序模塊310可包括可通過軟件編程的處理器核。注意到,輸入緩沖器306與壓縮模塊312之間示出了寫入程序模塊310,但寫入程序模塊310可位于寫入數(shù)據(jù)管道301中的任何位置,并且可分布在各個階段302-320之間。另外,已編程且獨立操作的多個寫入程序模塊310可分布在各個階段302-320之間。另外,可改變階段302-320的順序。本領域的技術人員將認識到根據(jù)特定用戶要求對階段302-320的順序做出的可行性改變。讀取數(shù)據(jù)管道讀取數(shù)據(jù)管道303包括ECC糾錯模塊322,其采用由請求包的每個ECC塊存儲的ECC來確定ECC塊中是否存在數(shù)據(jù)錯誤,所述ECC塊為從固態(tài)存儲器207接收的請求包。然后,ECC糾錯模塊322校正請求包中的任何錯誤(如果存在任何錯誤),并且采用ECC可校正這些錯誤。例如,如果ECC可檢測六位錯誤,但僅可校正三位錯誤,則ECC糾錯模塊322校正請求包的ECC塊中的最多三個出錯位數(shù)。ECC糾錯模塊322通過將出錯位數(shù)改變?yōu)樾U?狀態(tài)或零狀態(tài)來校正出錯位數(shù),以使得請求的數(shù)據(jù)包與在其被寫入固態(tài)存儲器207中時相同,并且向所述包生成ECC。如果ECC糾錯模塊322確定請求包所包含的出錯位數(shù)大于ECC可校正的出錯位數(shù),則ECC糾錯模塊322不能校正請求包的損壞的ECC塊中的錯誤并發(fā)送中斷。在ー個實施方案中,ECC糾錯模塊322采用指示請求包出錯的消息來發(fā)送中斷。所述消息可包括ECC糾錯模塊322不能校正錯誤或可暗示ECC糾錯模塊322不能校正錯誤的信息。在另ー個實施方案中,ECC糾錯模塊322采用中斷和/或消息來發(fā)送請求包中損壞的ECC塊。在該優(yōu)選的實施方案中,請求包中ECC糾錯模塊322不能校正的損壞的ECC塊或損壞的ECC塊的一部分被主控制器2M讀取、校正并且返回到ECC糾錯模塊322,以由讀取數(shù)據(jù)管道303進行進一歩處理。在一個實施方案中,將請求包中損壞的ECC塊或損壞的ECC塊的一部分發(fā)送至請求所述數(shù)據(jù)的裝置。請求裝置巧5可校正ECC塊或使用另ー個副本(諸如備份或鏡像副本)來替換所述數(shù)據(jù),然后可使用請求的數(shù)據(jù)包中的替換數(shù)據(jù)或?qū)⑵浞祷氐阶x取數(shù)據(jù)管道303。請求裝置155可使用出錯的請求包中的標題信息來識別替換損壞的請求包或替換所述包所屬的數(shù)據(jù)單元所需的數(shù)據(jù)。在另ー個優(yōu)選的實施方案中,固態(tài)存儲控制器204使用某種類型的RAID來存儲數(shù)據(jù),并且能夠恢復損壞的數(shù)據(jù)。在另ー個實施方案中,ECC糾錯模塊322發(fā)送中斷和/或消息,并且接收裝置未成功進行與請求的數(shù)據(jù)包關聯(lián)的讀取操作。本領域的技術人員將認識到由于ECC糾錯模塊322確定請求包的ー個或多個ECC塊已損壞并且ECC糾錯模塊322甚至在重試所述操作之后也不能校正錯誤而要采取的其它選擇和動作。讀取數(shù)據(jù)管道303包括從ECC糾錯模塊322直接或間接地接收請求包的ECC塊并且檢查和移除一個或多個包標題的解包器324。解包器3可通過檢查標題內(nèi)的包標識符、數(shù)據(jù)長度、數(shù)據(jù)位置等來驗證包標題。在一個實施方案中,標題包括可用于驗證傳送至讀取數(shù)據(jù)管道303的包為請求包的散列碼。解包器3M也將標題從分包器302添加的請求包中移除。解包器3M可_在不在某些包上操作,而是將這些標題在無需修改下向前傳送。一個實例可能為在需要標題信息來重建索引的重建進程期間請求的容器標簽。其它實例包括傳送旨在在固態(tài)存儲裝置206內(nèi)使用的各種類型的包。在另ー個實施方案中,解包器324的操作可取決于包類型。讀取數(shù)據(jù)管道303包括從解包器3M接收數(shù)據(jù)且移除無用數(shù)據(jù)的對齊模塊326。在一個實施方案中,發(fā)送至固態(tài)存儲器207的讀取命令檢索數(shù)據(jù)包。請求所述數(shù)據(jù)的裝置可能不需要檢索包內(nèi)的所有數(shù)據(jù),并且對齊模塊3移除無用數(shù)據(jù)。如果檢索頁面內(nèi)的所有數(shù)據(jù)為請求的數(shù)據(jù),則對齊模塊3不移除任何數(shù)據(jù)。對齊模塊3在將數(shù)據(jù)段轉(zhuǎn)發(fā)至下一個階段之前,以與請求數(shù)據(jù)段的裝置相兼容的形式將數(shù)據(jù)重新格式化為數(shù)據(jù)単元的數(shù)據(jù)段。通常,因為數(shù)據(jù)由讀取數(shù)據(jù)管道303處理,所以數(shù)據(jù)段或包的大小在各個階段會發(fā)生變化。對齊模塊3使用接收數(shù)據(jù)將數(shù)據(jù)格式化成適于發(fā)送至請求裝置155且接合以形成響應的數(shù)據(jù)段。例如,來自第一數(shù)據(jù)包的一部分的數(shù)據(jù)可與來自第二數(shù)據(jù)包的一部分的數(shù)據(jù)結合。如果數(shù)據(jù)段大于請求裝置請求的數(shù)據(jù),則對齊模塊3可丟棄無用數(shù)據(jù)。在一個實施方案中,讀取數(shù)據(jù)管道303包括讀取同步緩沖器328,讀取同步緩沖器328對從固態(tài)存儲器207讀取的一個或多個請求包在由讀取數(shù)據(jù)管道303處理之前進行緩沖。讀取同步緩沖器3位于固態(tài)存儲器時鐘域與局部總線時鐘域之間的邊界處,并且提供緩沖以說明時鐘域的差異。在另ー個實施方案中,讀取數(shù)據(jù)管道303包括從對齊模塊3接收請求包且在傳輸至請求裝置之前存儲該包的輸出緩沖器330。輸出緩沖器330說明了從讀取數(shù)據(jù)管道303的階段接收數(shù)據(jù)段的時間與將數(shù)據(jù)段發(fā)送至固態(tài)存儲控制器204的其它部分或請求裝置、客戶端110、文件服務器114等的時間之間的差異。輸出緩沖器330也可使數(shù)據(jù)總線205以大于讀取數(shù)據(jù)管道303可保持的速率從讀取數(shù)據(jù)管道303接收數(shù)據(jù),以便提高數(shù)據(jù)總線205的操作效率。在一個實施方案中,讀取數(shù)據(jù)管道303包括介質(zhì)解密模塊332,介質(zhì)解密模塊332從ECC糾錯模塊322接收ー個或多個加密的請求包,并且在將所述一個或多個請求包發(fā)送至解包器324之前,使用固態(tài)存儲裝置206所獨具的加密密鑰將所述ー個或多個請求包解密。通常,用于通過介質(zhì)解密模塊332來解密數(shù)據(jù)的加密密鑰與介質(zhì)加密模塊318使用的加密密鑰相同。在另ー個實施方案中,固態(tài)存儲器207可具有兩個或更多個分區(qū),并且固態(tài)存儲控制器204好似其為兩個或更多個固態(tài)存儲控制器204,每個固態(tài)存儲控制器204均在固態(tài)存儲器207內(nèi)的單個分區(qū)上操作。在該實施方案中,唯一介質(zhì)加密密鑰可與每個分區(qū)一起使用。在另ー個實施方案中,讀取數(shù)據(jù)管道303包括解密模塊334,解密模塊334在將數(shù)據(jù)段發(fā)送至輸出緩沖器330之前將解包器3M格式化的數(shù)據(jù)段解密。使用連同讀取請求接收的加密密鑰來解密數(shù)據(jù)段,所述讀取請求啟動對讀取同步緩沖器3接收的請求包的檢索。解密模塊334可用連同第一包的讀取請求接收的加密密鑰將第一包解密,然后可用不同的加密密鑰將第二包解密或可將第二包在無需解密的情況下傳至讀取數(shù)據(jù)管道303的下ー個階段。通常,解密模塊334使用不同于介質(zhì)解密模塊332用于將請求包解密的加密密鑰將數(shù)據(jù)段解密。當包中存儲有非秘密加密隨機數(shù)吋,將該隨機數(shù)連同加密密鑰用于解密數(shù)據(jù)包??蓮目蛻舳?10、服務器108、密鑰管理器或?qū)虘B(tài)存儲控制器204待使用的加密密鑰進行管理的其它裝置處接收加密密鑰。在另ー個實施方案中,讀取數(shù)據(jù)管道303包括將解包器3M格式化的數(shù)據(jù)段解壓縮的解壓縮模塊336。在該優(yōu)選的實施方案中,解壓縮模塊336使用存儲在包標題和容器標簽中的一者或兩者中的壓縮信息來選擇與用于通過壓縮模塊312來壓縮數(shù)據(jù)的程序互補的程序。在另ー個實施方案中,請求被解壓縮的數(shù)據(jù)段的裝置指定解壓縮模塊336使用的解壓縮程序。在另ー個實施方案中,解壓縮模塊336根據(jù)基于每個數(shù)據(jù)單元類型或數(shù)據(jù)單元類別的設置默認值來選擇解壓縮程序。第一數(shù)據(jù)單元的第一包可能能夠覆蓋默認解壓縮程序,相同數(shù)據(jù)單元類別和數(shù)據(jù)單元類型的第二數(shù)據(jù)單元的第二包可使用默認解壓縮程序,并且相同數(shù)據(jù)單元類別和數(shù)據(jù)單元類型的第三數(shù)據(jù)單元的第三包可無需解壓縮。在另ー個實施方案中,讀取數(shù)據(jù)管道303包括具有讀取數(shù)據(jù)管道303內(nèi)的ー個或多個用戶可定義功能的讀取程序模塊338。讀取程序模塊338具有與寫入程序模塊310類似的特性,并且可使用戶向讀取數(shù)據(jù)管道303提供定制功能。讀取程序模塊338可位于如圖3所示的位置,可位于讀取數(shù)據(jù)管道303內(nèi)的另ー個位置,或者可包括讀取數(shù)據(jù)管道303內(nèi)的多個位置中的多個部分。另外,獨立操作的多個讀取程序模塊338可位于讀取數(shù)據(jù)管道303內(nèi)的多個位置中。本領域的技術人員將認識到讀取數(shù)據(jù)管道303內(nèi)的讀取程序模塊338的其它形式。如同寫入數(shù)據(jù)管道301,可重新設置讀取數(shù)據(jù)管道303的階段,并且本領域的技術人員將認識到讀取數(shù)據(jù)管道303內(nèi)的階段的其它順序。固態(tài)存儲控制器204包括控制和狀態(tài)寄存器340與相應控制隊列342??刂坪蜖顟B(tài)寄存器340與控制隊列342有利干與寫入數(shù)據(jù)管道301和讀取數(shù)據(jù)管道303中處理的數(shù)據(jù)關聯(lián)的控制和定序命令和子命令。例如,分包器302中的數(shù)據(jù)段可具有與ECC生成器304關聯(lián)的控制隊列342中的ー個或多個相應控制命令或指令。因為將數(shù)據(jù)段分包,所以所述指令或命令中的一些可在分包器302內(nèi)執(zhí)行。當由數(shù)據(jù)段創(chuàng)建的新建數(shù)據(jù)包被傳至下ー個階段時,其它命令或指令可通過控制和狀態(tài)寄存器340傳至下ー個控制隊列342。針對轉(zhuǎn)發(fā)至寫入數(shù)據(jù)管道301的包,命令或指令可被同時加載到控制隊列342中,其中每個管道階段在該階段執(zhí)行各個包時彈出適當?shù)拿罨蛑噶?。類似地,針對從讀取數(shù)據(jù)管道303請求的包,命令或指令可被同時加載到控制隊列342中,其中每個管道階段在該階段執(zhí)行各個包時彈出適當?shù)拿罨蛑噶睢1绢I域的技術人員將認識到控制和狀態(tài)寄存器340與控制隊列342的其它特征和功能。固態(tài)存儲控制器204和/或固態(tài)存儲裝置206還可包括存儲體交錯控制器344。存儲體交錯控制器344協(xié)調(diào)存儲體之間的寫入、讀取、擦除等。通常,擦除邏輯擦除塊比寫入邏輯頁面花費的時間長,而讀取比寫入邏輯頁面花費的時間短。通過協(xié)調(diào)存儲體之間的命令,存儲體交錯控制器344可提高固態(tài)存儲裝置202中的效率。2007年12月6日提交的標“Apparatus,system,andMethodforManagingしommandsofSolid-btatestorageUsingBankInterleave"的美國申請No.11/952,095(DavidFlynn等)中更詳細地描述了存儲體交錯控制器;344。固態(tài)存儲控制器204包括對從固態(tài)存儲器207發(fā)送和接收的命令和狀態(tài)消息進行緩沖的同步緩沖器346。同步緩沖器346位于固態(tài)存儲器時鐘域與局部總線時鐘域之間的邊界處,并且提供緩沖以說明時鐘域的差異。同步緩沖器346、寫入同步緩沖器308和讀取同步緩沖器3可為獨立的或可一起起作用來緩沖數(shù)據(jù)、命令、狀態(tài)消息等。在該優(yōu)選的實施方案中,同步緩沖器346位于最少數(shù)量的信號穿過時鐘域的位置。本領域的技術人員將認識到,時鐘域之間的同步可任意地移動至固態(tài)存儲裝置202內(nèi)的其它位置,以便優(yōu)化設計實施的某個方面。固態(tài)存儲控制器204包括存儲總線控制器348,存儲總線控制器348解譯和轉(zhuǎn)換發(fā)送至固態(tài)存儲器110和從其讀取的數(shù)據(jù)與根據(jù)固態(tài)存儲器207的類型從固態(tài)存儲器207接收的狀態(tài)消息的命令。例如,存儲總線控制器348可針對不同類型的存儲器、具有不同性能特性的存儲器、來自不同制造商的存儲器等具有不同時序要求。存儲總線控制器348也將控制命令發(fā)送至存儲控制總線212。在該優(yōu)選的實施方案中,固態(tài)存儲控制器204包括具有復用器350a-n的陣列的MUX350,其中每個復用器專用于固態(tài)存儲器陣列207中的行。例如,復用器350a與固態(tài)存儲器元件216a、218a、220a關聯(lián)。MUX350將來自寫入數(shù)據(jù)管道301的數(shù)據(jù)和來自存儲總線控制器348的命令經(jīng)由存儲I/O總線210發(fā)送至固態(tài)存儲器207,并且將來自固態(tài)存儲器207的數(shù)據(jù)和狀態(tài)消息經(jīng)由存儲I/O總線210發(fā)送至讀取數(shù)據(jù)管道303且通過存儲總線控制器348、同步緩沖器346和存儲體交錯控制器344發(fā)送至控制和狀態(tài)寄存器340。在該優(yōu)選的實施方案中,固態(tài)存儲控制器204包括每行固態(tài)存儲器元件(例如SSS0.1216a、SSS0.2218a、SSSO.N220a)的MUX350。MUX350將來自寫入數(shù)據(jù)管道301的數(shù)據(jù)與發(fā)送至固態(tài)存儲器207的命令經(jīng)由存儲I/O總線210組合,并且將讀取數(shù)據(jù)管道303待處理的數(shù)據(jù)與命令分離。存儲在寫入緩沖器320中的包通過每行固態(tài)存儲器元件(SSSx.OtoSSSx.N216,218,220)的寫入同步緩沖器308在離開寫入緩沖器320的總線上指向每行固態(tài)存儲器元件(SSSX.0toSSSx.N216,218,220)的MUX350通過MUX350從存儲I/O總線210接收所述命令和讀取數(shù)據(jù)。MUX350也將狀態(tài)消息指向存儲總線控制器348。分配設備圖4為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的設備400的一個實施方案的示意性框圖。設備400包括分配請求模塊402、邏輯容量模塊404和分配回復模塊406,如下所述。分配請求模塊402、邏輯容量模塊404和分配回復模塊406通常在存儲系統(tǒng)102中示出,但分配請求模塊402、邏輯容量模塊404和分配回復模塊406的全部或部分可位于存儲控制器104、驅(qū)動器118或存儲系統(tǒng)102中的其它位置中。設備400包括從請求裝置接收分配邏輯容量的分配請求的分配請求模塊402。請求裝置可為文件服務器114/文件系統(tǒng)、客戶端110、主分配管理器124、或能夠發(fā)送分配請求的任何其它裝置或部件。在數(shù)據(jù)存儲裝置處接收分配請求。在一個實施方案中,數(shù)據(jù)存儲裝置包括存儲裝置106(如同所示)和控制存儲裝置106的至少存儲控制器104,并且可包括耦合至存儲控制器104的驅(qū)動器118。與分配請求關聯(lián)的邏輯容量用于專門將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上,其為分配請求的目標。分配請求可包括邏輯分配請求或可包括存儲數(shù)據(jù)的請求。就邏輯分配請求而言,該請求通常為將LID分配給客戶端110的請求。就存儲數(shù)據(jù)的請求而言,ー個或多個LID被分配給客戶端110或文件服務器114/文件系統(tǒng),并且被指定,該請求可包括將這些LID與包括所述數(shù)據(jù)的存儲位置關聯(lián)。在一個實施方案中,在分配時將LID指定給數(shù)據(jù)(例如,分配請求可包括存儲數(shù)據(jù)的請求)。在另ー個實施方案中,如果將分配請求與存儲數(shù)據(jù)的請求分開,則將LID分配給所述數(shù)據(jù)可能與將LID指定給所述數(shù)據(jù)為單獨的步驟。在某些實施方案中,所述請求來自多個客戶端,因此客戶端標識符可與該請求關聯(lián),設備400可使用客戶端標識符以對所述客戶端的分配和/或可分配給客戶端的LID實施存取控制。另外,客戶端標識符可用于管理將多少物理容量分配給特定客戶端或一組客戶端。設備400包括確定數(shù)據(jù)存儲裝置的邏輯空間是否具有足夠的未分配的邏輯空間來滿足分配請求的邏輯容量模塊404。邏輯容量模塊404可使用保留LID指定和/或分配的索引(或其它數(shù)據(jù)結構)來確定邏輯空間是否具有足夠的未指定和/或未分配的邏輯容量。在一些實施方案中,邏輯容量模塊404可捜索非易失性存儲裝置上保留的邏輯到物理映像或索引。邏輯到物理映像包括邏輯空間中的指定的邏輯標識符(“LID”)與包括對應于關聯(lián)的LID的數(shù)據(jù)的存儲位置(例如物理位置)之間的關聯(lián)數(shù)據(jù)。然而,根據(jù)本公開的教導,可使用用于確定邏輯容量的其它數(shù)據(jù)結構和/或技木。因此,本公開不應被理解為限于該方面。下面結合圖11和12公開了確定可用邏輯容量(例如未分配和/或未指定的邏輯容量)和/或可用物理存儲容量的其它實例。如上所述,未指定的LID可指不與存儲在非易失性存儲裝置上的數(shù)據(jù)相對應的LID(例如,不存在于邏輯到物理映像中)。未指定的LID可被分配給客戶端110或可為未分配。在一些實施方案中,邏輯到物理映像被配置來使得所述映像中的LID與關于這些LID的物理地址之間不存在其它邏輯到邏輯映射。邏輯到物理映像中在數(shù)據(jù)存儲裝置處管理的LID可包括任何類型的邏輯地址,諸如LBA、索引、文件名和索引節(jié)點,并且可包括対象。特別地,邏輯到物理映像不限于對象或任何特定邏輯地址類型,但可包括對象以及文件名、LBA等。在另ー個實施方案中,LID包括不同于對象標識符的邏輯標識符,并且對象不由數(shù)據(jù)存儲裝置直接管理。設備400是有利的,因為數(shù)據(jù)存儲裝置以及設備400的模塊402-406的邏輯到物理映像不限于對象,但所述LID也可為LBA和其它數(shù)據(jù)単元標簽,這擴大了設備400的范圍和靈活性。在一些實施方案中,邏輯容量模塊404捜索邏輯到物理映像以識別指定的LID,并且通過識別數(shù)據(jù)存儲裝置的邏輯空間,邏輯容量模塊404確定未分配的邏輯空間。例如,如果邏輯空間包括從0000至FFFF的一系列邏輯地址,并且邏輯到物理映像指示已指定邏輯地址0000至F000,則邏輯容量模塊404可確定未分配的邏輯空間可包括地址FOOl至FFFF。如果邏輯地址FOOl至FFFF未被分配給另ー個客戶端110,則其可供分配以滿足分配請求。在一些實施方案中,非易失性存儲裝置可針對各個不同的客戶端保留単獨的邏輯存儲空間。因此,每個客戶端可自行操作単獨的邏輯存儲空間。因此,非易失性存儲裝置可保留每個客戶端的単獨的元數(shù)據(jù)(例如索引、容量指示符等)。客戶端可通過地址(例如網(wǎng)絡地址)、憑證或其它標識符來區(qū)分。客戶端請求中可提供標識符和/或這些標識符可與被客戶端用來訪問非易失性存儲裝置的通信信道或協(xié)議關聯(lián)。在一些實施方案中,邏輯到物理映像(或其它數(shù)據(jù)結構)可包括被配置為追蹤尚未指定的邏輯容量分配的分配索引或分配條目。例如,可將LID(或邏輯容量的其它部分)分配給客戶端,但其可與存儲在存儲裝置106上的數(shù)據(jù)不關聯(lián)。因此,雖然可分配邏輯容量,但其可為“未指定”,因此可能不包括在邏輯到物理映像中。因此,當確定未分配的邏輯空間時,除了其它索引信息(例如邏輯到物理映像)之外,邏輯容量模塊404還可參考其它數(shù)據(jù)結構(例如分配索引或分配條目)。作為另外一種選擇或除此之外,非易失性存儲裝置可保留可識別未分配的LID(或邏輯容量的其它部分)的“未分配的索引”。下面結合圖12描述了可用性索引的實例。如果(例如)分配請求包括針對一定數(shù)量的LID的請求,則邏輯容量模塊404可確定可用邏輯空間(例如未指定和/或未分配的邏輯容量)是否足以滿足或超出請求的邏輯地址的量。在另ー個實例中,如果分配請求包括LID列表或一系列LID,則邏輯容量模塊404可確定請求的LID的全部或部分中的LID是否未被分配或未被指定。在典型的隨機存取裝置中,通常LID為LBA,并且根據(jù)預定映射,LBA與物理塊地址(“PBA”)匹配。相比之下,在順序存儲裝置、日志結構裝置等中,指定的LID不同于映射到該指定的LID的ー個或多個物理地址(例如,從LID到存儲位置之間可能不存在預置或預定映射)。在此數(shù)據(jù)存儲裝置中,可通過無用単元收集進程或其它空間恢復進程來移動數(shù)據(jù),并且在邏輯到物理映像中追蹤數(shù)據(jù)。通常,僅通過索引(例如邏輯到物理映射)來使順序或日志存儲裝置中的指定的LID與映射的物理地址相關。對于順序存儲裝置、日志結構裝置等,邏輯到物理映射可出于各種原因而改變。在一個實施方案中,當存儲在ー個或多個物理地址處的數(shù)據(jù)被移動至ー個或多個不同的物理地址時,ー個或多個LID到所述ー個或多個物理地址的映射發(fā)生變化。在另ー個實施方案中,ー個或多個LID到ー個或多個物理地址的映射在重復數(shù)據(jù)刪除進程中發(fā)生變化。例如,當存儲在所述ー個或多個物理地址處的數(shù)據(jù)存儲在第一物理位置且與存儲在第二物理位置處的數(shù)據(jù)相同,并且所述ー個或多個LID的映射經(jīng)改變以對應于第二物理位置吋。在另ー個實施方案中,當映射到ー個或多個LID(“第一LID”)的ー個或多個物理位置被重新映射到ー個或多個不同的LID(“第二LID”)吋,所述ー個或多個LID到所述ー個或多個物理地址的映射發(fā)生變化。例如,如果文件或?qū)ο竺淖?,也可能發(fā)生這種情況。在其中LID與物理存儲位置之間不具有預定和/或預置關聯(lián)數(shù)據(jù)和/或可移動數(shù)據(jù)并且LID與物理存儲位置之間的關聯(lián)數(shù)據(jù)可能改變的存儲裝置中,可使用邏輯到物理索引。因為所述存儲裝置已保留其上的邏輯地址與存儲位置之間的關聯(lián)數(shù)據(jù),所以可避免客戶端地址轉(zhuǎn)換;客戶端無需保留単獨的冗余映射集合。因此,可消除客戶端與所述存儲裝置之間的ー個或多個映射和/或地址轉(zhuǎn)換層,從而減少客戶端的處理負荷。設備400包括分配回復模塊406,分配回復模塊406響應于確定邏輯空間是否具有足夠的邏輯空間的邏輯容量模塊404將回復傳送至請求裝置。所述回復包括關于邏輯空間是否具有足夠的邏輯空間來滿足分配請求的指示。例如,如果邏輯容量模塊404確定未分配的邏輯空間不足以滿足分配請求,則分配回復模塊406可將分配請求失敗包括在所述回復中。如果(例如)邏輯容量模塊404確定未分配的邏輯空間足以滿足分配請求,則分配回復模塊406可根據(jù)分配請求的性質(zhì)將肯定性響應、LID列表、一系列LID等包括在所述回復中。如果(例如)邏輯容量模塊404確定未分配的邏輯空間足以滿足分配請求并且分配請求包括分配特定LID的請求,則回復模塊406可將已分配請求的LID的確認傳送至請求裝置。如果分配請求包括針對LID的請求,則分配回復模塊406可傳送請求的LID。如果分配請求包括針對滿足標準的LID的請求,則分配回復模塊406可傳送滿足該標準的LID。在一個實施方案中,分配請求針對特定的一組LID,并且分配回復模塊406可用請求的LID進行回復。在另ー個實施方案中,分配請求為寫入請求的一部分。在一種情況下,寫入請求包括特定LID,并且分配回復模塊406可用請求的LID進行回復。在另一種情況下,寫入請求僅包括數(shù)據(jù)或數(shù)據(jù)量的指示,并且分配回復模塊406可通過向?qū)懭胝埱蠓峙渥銐虻腖ID且返回分配的LID來回復?;蛘?,如果提供了數(shù)據(jù)量的指示,則回復可包括未分配的LID。分配回復模塊406可在寫入數(shù)據(jù)之前或之后進行回復。如果分配回復模塊406在寫入數(shù)據(jù)之后發(fā)送回復,則回復可為寫入數(shù)據(jù)的確認的一部分。本領域的技術人員將認識到分配回復模塊406可響應于確定數(shù)據(jù)存儲裝置的邏輯空間是否具有足夠的未分配的邏輯空間來滿足分配請求的邏輯容量模塊404進行回復的其它方式。在一個實施方案中,對應于邏輯空間(“邏輯空間容量”)的存儲容量顯著大于數(shù)據(jù)存儲裝置的物理存儲容量。邏輯空間容量包括與分配的邏輯空間結合的未分配的邏輯空間。分配的邏輯空間包括分配的邏輯空間內(nèi)的指定的LID和未指定的LID。換句話講,數(shù)據(jù)存儲裝置和關聯(lián)的邏輯到物理映射支持精簡配置。在邏輯標識符為LBA的情況中,每個LBA通常具有定義的數(shù)據(jù)大小。在某些實施方案中,將LBA指定給邏輯塊,并且邏輯塊通常與存儲裝置106上的物理塊具有相同大小。在一個實施方案中,數(shù)據(jù)存儲裝置的邏輯空間的LID的子集與數(shù)據(jù)存儲裝置內(nèi)的物理塊為一一對應。例如,如果將邏輯空間的一部分分配給客戶端110,并且客戶端110存儲邏輯塊,因此對于客戶端Iio而言,LID為LBA,則每個LBA可與相當于物理塊地址(“PBA”)的物理地址相對應。數(shù)據(jù)存儲裝置可用的邏輯空間仍可適于分配給其它客戶端110,并且仍可為精簡配置。雖然通常邏輯標識符為邏輯塊地址,但在圖4的設備400中,邏輯標識符可能更多。邏輯標識符可為邏輯地址(“LA”)、邏輯塊地址(“LBA”)、文件名、文件地址、對象標識符、索引節(jié)點、索引等。如果存儲系統(tǒng)102、服務器108等使用64或1位地址來表示LID,則可用于對該邏輯空間(即邏輯空間)尋址的邏輯標識符會變得很大。地址中的一定量的位可專用于邏輯空間,而該地址中的其它位可帶有其它信息,諸如客戶端的識別、錯誤校正信息、關于數(shù)據(jù)請求的屬性(諸如優(yōu)先級、數(shù)據(jù)類型、完整性要求等)。僅使用地址中的一部分位(例如使用32位)來提供極大的地址空間。在一個實施方案中,將元數(shù)據(jù)提示(例如文件類型、數(shù)據(jù)類別等)從客戶端(例如FQ傳至存儲裝置。這些元數(shù)據(jù)提示可經(jīng)由地址位來編碼和傳送,所述地址位具有根據(jù)元信息來組織邏輯地址空間的側(cè)放作用。例如,所有系統(tǒng)文件可將地址中的最高命令位設置為1,因此所有系統(tǒng)文件均會位于邏輯地址空間的上半部。邏輯地址空間可超出存儲系統(tǒng)102中的存儲裝置106的物理存儲容量。通常,發(fā)送至存儲裝置106或存儲系統(tǒng)102的數(shù)據(jù)具有最小大小,從而以可識別單元發(fā)送數(shù)據(jù)。例如,可將發(fā)送至存儲系統(tǒng)102的數(shù)據(jù)分成組塊。終端處的數(shù)據(jù)可能與最小大小的組塊不匹配,因此除了尾端數(shù)據(jù)之外,數(shù)據(jù)組塊的剰余部分也可為空字符、零、一等。假設某個最小數(shù)據(jù)組塊被發(fā)送至存儲系統(tǒng)102,并且所有可能的邏輯標識符各自對應于ー個組塊,則邏輯標識符具有龐大的數(shù)量,并且與這些組塊相關的邏輯存儲容量遠大于存儲系統(tǒng)102中的存儲裝置106的物理存儲容量。數(shù)據(jù)存儲裝置中的可用物理存儲容量與可用LID無關。此外,這與其中可用邏輯塊地址與存儲裝置106的物理塊地址幾乎為一一對應的典型隨機存取裝置形成對比。在具體實施方案中,存儲裝置驅(qū)動器118經(jīng)由存儲接ロ116耦合至文件服務器114/文件系統(tǒng),并且存儲接ロ116包括能夠使文件服務器114/文件系統(tǒng)與存儲接ロ116交互的接ロ。所述接ロ可包括應用程序接ロ(API)、塊存儲接ロ、改進的塊存儲接ロ、命令接ロ等。根據(jù)ー個實施方案的命令接ロ可將位包括寫入命令(例如客戶端請求)中,以指示應當連同寫入進行分配。寫入中的第二位可指示請求的LBA參數(shù)為無效參數(shù)或包括客戶端的ID,并且可指示設備400應當分配ー個或多個LBA。或者,客戶端請求包括具有任選定時器的特定物理分配請求(文件長度)等。因此,所述接ロ允許多個不同特征和功能。所述接ロ可操作以從文件服務器114/文件系統(tǒng)傳送分配數(shù)據(jù)存儲裝置的邏輯容量的分配請求,并且向文件服務器114/文件系統(tǒng)傳送分配回復。分配回復響應于分配請求并且包括關于邏輯空間是否具有足夠的邏輯空間來滿足分配請求的指示。命令接ロ可作為新的輸入輸出控制(“I0-CTL”)命令或現(xiàn)有IO-CTL命令的擴展來實施。命令接ロ可實施新協(xié)議或擴充現(xiàn)有協(xié)議。所述邏輯容量用于將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上。存儲裝置驅(qū)動器118和/或數(shù)據(jù)存儲裝置確定邏輯空間是否具有足夠的未分配的邏輯空間來滿足分配請求,其中所述確定包括捜索邏輯到物理映像。存儲裝置驅(qū)動器118可為數(shù)據(jù)存儲裝置的一部分。然而,未在文件服務器114/文件系統(tǒng)中做出關于足夠的未分配的邏輯空間的確定。相反,文件服務器114/文件系統(tǒng)發(fā)送并分配請求,并且數(shù)據(jù)存儲裝置/驅(qū)動器118在捜索與作為數(shù)據(jù)存儲系統(tǒng)102的一部分的存儲裝置106相對應的邏輯到物理映像之后,對分配請求進行回復。在一個實施方案中,存儲裝置接ロ120可操作以將存儲裝置驅(qū)動器118耦接至數(shù)據(jù)存儲裝置,這足以使數(shù)據(jù)存儲裝置與存儲裝置驅(qū)動器118配合,以確定邏輯空間是否具有足夠的邏輯容量來滿足分配請求。如上所述,存儲裝置驅(qū)動器118可為PCIExpress、串行ATA總線、并行ATA總線、SCSI、火線、光纖通道、USB、PCIe-AS等。接ロ116可使將邏輯地址空間中的LID與非易失性存儲裝置上的各個存儲位置關聯(lián)的索引直接暴露于客戶端。客戶端可調(diào)用所述接ロ的某些功能來識別可用分配空間、物理容量、分配和指定有LID的存儲介質(zhì)的健康狀態(tài)等。概括地說,所述接ロ可使設備400的特征和功能的全部或子集直接暴露于客戶端,然后客戶端可根據(jù)需要使用該信息。圖5為示出了根據(jù)本發(fā)明的分配數(shù)據(jù)存儲空間的設備500的另ー個實施方案的示意性框圖。設備500包括分配請求模塊402、邏輯容量模塊404和分配回復模塊406,其基本上類似于以上關于圖4的設備400描述的那些。另外,設備500包括物理容量請求模塊502、物理容量分配模塊504、物理容量回復模塊506、分配模塊508、分配查詢請求模塊510、分配查詢確定模塊512、分配查詢回復模塊514、邏輯空間管理模塊516、映射模塊518、物理空間預留請求模塊520、物理空間預留模塊522、物理空間預留返回模塊524、物理空間預留取消模塊526、LID指定模塊528、DMA模塊530和刪除模塊532,如下所述。圖5的設備500的模塊402-406和502-532在存儲系統(tǒng)102中示出,并且其全部或部分可包括在驅(qū)動器118、存儲控制器104或本領域的技術人員已知的任何其它適當位置中。在一個實施方案中,設備500包括物理容量請求模塊502、物理容量分配模塊504和物理容量回復模塊506。物理容量請求模塊502從請求裝置接收物理容量請求。在數(shù)據(jù)存儲裝置處接收物理容量請求,并且該請求包括數(shù)據(jù)存儲裝置中的可用物理存儲容量的量(和/或分配給請求裝置的物理存儲容量)的請求。物理容量請求可包括物理容量或可例如通過指示待存儲的數(shù)據(jù)單元的大小來間接地請求物理存儲容量。另ー個間接物理存儲容量請求可包括可與數(shù)據(jù)大小相關的待存儲數(shù)據(jù)的邏輯地址。本領域的技術人員將認識到物理容量請求的其它形式。物理容量分配模塊504確定數(shù)據(jù)存儲裝置上的可用物理存儲容量的量??捎梦锢泶鎯θ萘康牧堪〝?shù)據(jù)存儲裝置中的未指定的存儲位置的物理存儲容量。在一些實施方案中,可“預算”可用物理存儲容量的量,例如存儲裝置的物理存儲容量中僅有一部分可用于請求裝置中。在一些實施方案中,可根據(jù)與每個客戶端或一組客戶端關聯(lián)的份額來“預算”可用物理存儲容量的量。設備500可實施這些份額。可用物理存儲裝置的分配可通過配置參數(shù)來確定,可根據(jù)服務政策的性能和/或質(zhì)量進行動態(tài)調(diào)整等。物理容量分配模塊504可使用索引(或其它數(shù)據(jù)結構),諸如上述邏輯到物理映像來確定可用物理存儲容量的量。邏輯到物理映像可指示包括有效數(shù)據(jù)的存儲位置(例如包括有效數(shù)據(jù)的存儲位置)。可引用邏輯到物理映像來識別指定的存儲位置。可用存儲容量可為總(或預算的)物理容量減去指定的容量。作為另外一種選擇或除此之外,分配索引(或其它數(shù)據(jù)結構)可保留可用物理存儲容量的指示符。所述指示符可響應于在存儲裝置上進行的存儲操作進行更新,這些存儲操作包括但不限于無用單元收集操作、疏導操作、解除分配(例如TRIM)、寫入其它數(shù)據(jù)、物理存儲容量預留、物理存儲容量預留取消等。因此,在請求吋,可“累計”可用物理存儲容量。物理容量回復模塊506響應于確定數(shù)據(jù)存儲裝置上的可用物理存儲容量的量的物理容量分配模塊504將回復傳送至請求裝置。在一個實施方案中,物理容量分配模塊504追蹤指定的物理地址、未指定的物理地址、預留的物理地址容量、未預留的物理地址容量等。物理容量分配模塊504可使用邏輯到物理映像、有效性映像、未使用的物理地址池、使用的物理地址池、物理到邏輯映像或本領域的技術人員已知的其它方式來追蹤這些參數(shù)。所述回復可采取多種形式。在一個實施方案中,如果物理容量請求包括可用物理容量的請求,則該回復可包括可用物理存儲容量的量。在另ー個實施方案中,如果物理容量請求包括具體物理容量的量,則該回復可包括數(shù)據(jù)存儲裝置具有請求的可用物理存儲容量的確認。本領域的技術人員將認識到響應于物理容量請求的回復的其它形式。具有物理容量請求模塊502、物理容量分配模塊504和物理容量回復模塊506的設備500有利于其中邏輯到物理映射不為ー對一映射的存儲裝置106。在讀取和寫入請求包括ー個或多個LBA的典型的隨機存取裝置中,文件服務器114/文件系統(tǒng)可通過識別指定的LBA來追蹤存儲裝置106的物理存儲容量。對于多個物理地址(由此存儲位置)可映射到單個邏輯標識符(即多個版本的數(shù)據(jù)映射到邏輯標識符)的日志結構文件系統(tǒng)或類似系統(tǒng)而言,追蹤邏輯標識符可能不會提供物理存儲容量的任何指示。存儲位置與LID之間的這種多對ー關系可用于支持快照和/或備份。設備500追蹤可用物理存儲空間,并且可將可用物理存儲空間的量傳送至服務器108或其它裝置。設備500是有利的,因為其可使文件服務器114/文件系統(tǒng)查詢物理存儲容量。卸載數(shù)據(jù)存儲裝置的分配管理和物理容量管理對于可按順序存儲數(shù)據(jù)的存儲裝置106、日志結構存儲裝置等而言是有效的。將指定的物理地址映射到指定的相應LID。當響應于寫入請求來存儲數(shù)據(jù)時,將指定給該數(shù)據(jù)的LID映射到存儲該數(shù)據(jù)的實際位置。對于按順序存儲數(shù)據(jù)的日志結構文件系統(tǒng)而言,不能從邏輯標識符明顯看出存儲該數(shù)據(jù)的位置,即使該邏輯標識符為LBA。相反,將數(shù)據(jù)存儲在追加點處,并且將存儲該數(shù)據(jù)的地址映射到邏輯標識符。如果數(shù)據(jù)為先前存儲數(shù)據(jù)的修改項,則可將LID映射到當前數(shù)據(jù)以及存儲舊數(shù)據(jù)的位置。可能有若干版本的數(shù)據(jù)被映射到同一LID。在一個實施方案中,設備500包括分配足以滿足請求裝置的分配請求的未分配的邏輯空間的分配模塊508。分配模塊508可響應于確定邏輯空間具有足夠的未分配的邏輯空間來滿足分配請求的邏輯容量模塊404來分配未分配的邏輯空間。在一個實施方案中,分配請求為預分配的一部分,其中邏輯空間與存儲數(shù)據(jù)的特定請求不關聯(lián)。例如,客戶端110可使用分配請求來請求邏輯空間,然后可隨時間繼續(xù)將數(shù)據(jù)存儲至分配的邏輯空間。分配模塊508響應于分配請求和確定邏輯空間具有足夠的未分配的邏輯空間來滿足分配請求的邏輯容量模塊404將LID分配給客戶端110。在各個實施方案中,分配模塊508可分配邏輯空間的子集,可根據(jù)包括某種標準(針對請求的邏輯空間)的分配請求來分配邏輯空間等。例如,如果分配請求包括將LID分配給用戶的請求,則LID可能已被分配給客戶端110且也可為分配給該用戶的子集的一部分,例如將LID分配給與客戶端110關聯(lián)的一組。分配模塊508可將分配請求中識別的LID與客戶端110和該組關聯(lián)。分配模塊508也可根據(jù)與特定存儲請求關聯(lián)的分配請求來分配LID。例如,如果存儲請求包括特定LID,并且邏輯容量模塊404確定這些LID可用,則分配模塊508可在存儲存儲請求的數(shù)據(jù)的同時分配這些LID。在另ー個實例中,如果存儲請求不包括LID,并且邏輯容量模塊404確定足夠的LID可用于存儲請求,則分配模塊508可針對數(shù)據(jù)來選擇和分配LID,并且分配回復模塊406可傳送分配的LID。分配模塊508通常會設置未分配的LID以待分配。分配模塊508可識別ー個或多個未分配的LID的方式有若干種。例如,分配模塊508可通過從客戶端110接收請求的LID列表以待分配并且驗證這些LID可供分配來識別未分配的LID。在另ー個實例中,分配模塊508可通過對滿足連同所述請求接收的標準的未分配的LID進行搜索來識別未分配的LID。所述標準可為與特定存儲裝置106關聯(lián)、可用于RAID中、具有某種指定的元數(shù)據(jù)特性等的LID。在另ー個實例中,分配模塊508可通過創(chuàng)建滿足連同可用LID池中識別的請求接收的標準的LID子集來識別未分配的LID。在一個實例中,LID可為已分配給客戶端110的LID的子集。例如,如果將一組(set/group)LID分配給特定用戶、群體、雇主等,則可分配這些LID的子集。ー個具體實例為,如果將ー組LID分配給某個組織,則還可將分配的LID的子集分配給該組織內(nèi)的特定用戶。本領域的技術人員將認識到分配模塊508可識別ー個或多個未分配的LID的其它方式。在一個實施方案中,分配模塊508可通過將LID分配給客戶端110(除了已分配給客戶端110的LID之外)來擴充分配給客戶端110的LID。另外,可通過將某些LID解除分配以使得其返回到未分配的LID的池中來減少分配給客戶端110的LID。在其它實施方案中,可分配、解除分配、増加、減少等分配的LID的子集。例如,可將分配給某個組織中的用戶的LID解除分配,從而仍可將分配給該用戶的LID分配給該組織,而非用戶。在一個實施方案中,設備500包括分配查詢請求模塊510、分配查詢確定模塊512、分配查詢回復模塊514。分配查詢請求模塊510在數(shù)據(jù)存儲裝置處接收分配查詢。分配查詢請求模塊510從某個請求裝置,諸如客戶端110、文件服務器114/文件系統(tǒng)、主分配管理器IM等接收分配查詢。分配查詢可包括關于分配邏輯空間或分配的邏輯空間的關聯(lián)的管理的信息的請求。例如,分配查詢可為識別指定的LID、識別分配的LID、識別未指定的分配的LID、未分配的LID或一系列LID等的請求。分配查詢可包括關于邏輯分配、邏輯容量、物理容量的信息,或滿足分配查詢中的標準的其它信息。所述信息可包括元數(shù)據(jù)、狀態(tài)、邏輯關聯(lián)數(shù)據(jù)、歷史使用率、標志、控制符等。本領域的技術人員將認識到其它分配查詢和響應于分配查詢返回的信息的類型。分配查詢包括允許分配查詢確定模塊512處理分配請求的某種標準。在一個實施方案中,分配查詢確定模塊512識別滿足分配查詢中指定的標準的ー個或多個LID。識別的LID包括已指定的分配的LID、未指定的分配的LID、未分配的LID等。分配查詢回復模塊514將查詢結果傳送至客戶端110,到達請求裝置或分配查詢中指示的另ー個裝置。分配查詢的結果可包括識別的LID列表、已找到滿足標準的LID的確認、未找到滿足分配查詢中的標準的LID的確認、指定/未指定的LID狀態(tài)、邏輯存儲容量等。通常,分配查詢回復模塊514返回狀態(tài)信息,并且返回的信息可包括與管理和分配本領域的技術人員已知的LID有關的任何信息。在另ー個實施方案中,設備500包括從數(shù)據(jù)存儲裝置內(nèi)部對數(shù)據(jù)存儲裝置的邏輯空間進行管理的邏輯空間管理模塊516。例如,邏輯空間管理模塊516可管理來自與數(shù)據(jù)存儲裝置的存儲裝置106關聯(lián)的存儲控制器104或驅(qū)動器118的邏輯空間。邏輯空間管理模塊516可追蹤例如邏輯到物理映像、索引或其它數(shù)據(jù)結構中未指定的LID和指定的LID。指定的LID為映射到ー個或多個物理地址的LID,其中來自與ー個或多個指定的LID相對應的一個或多個數(shù)據(jù)包的數(shù)據(jù)存儲在存儲裝置106上。在各個實施方案中,邏輯空間管理模塊516可處理上述分配請求和分配查詢以及關于分配的其它功能。邏輯空間管理模塊516還可包括從請求裝置接收解除分配請求。解除分配請求通常包括使ー個或多個分配的LID返回到未分配的狀態(tài),然后將成功的解除分配傳送至請求裝置或其它指定裝置的請求。解除分配請求可包括返回一個或多個存儲位置的請求,該請求使關聯(lián)的LID保持分配,然后將成功的解除分配傳送至請求裝置或其它指定裝置。這可能是透明的,或要求應當延伸解除分配請求以包括關于邏輯/物理解除分配應當伴隨該請求進行的指示。注意到,解除分配請求可為異步的且與疏導器相關。因此,解除分配請求在完成之前可為虛擬的(在時間上)。在任何時間點,分配(邏輯和物理分配)的管理可偏離實際可用空間。管理模塊516被配置為處理這些差異。邏輯空間管理模塊516也可從請求裝置接收LID組命令請求并且可向請求裝置傳送指示對LID組命令請求的響應的回復。LID組命令請求可包括將對例如兩個或更多個LID(“LID組”)采取的動作、與該LID組關聯(lián)的元數(shù)據(jù)、與該LID組關聯(lián)的數(shù)據(jù)等。例如,如果若干用戶各自分配有LID并且這些用戶為組的一部分,則LID組命令可用于將若干用戶的LID解除分配,將其它LID分配給每個用戶,返回每個用戶的使用信息等。響應于LID組命令所采取的動作還可包括修改元數(shù)據(jù)、備份數(shù)據(jù)、備份元數(shù)據(jù)、改變控制參數(shù)、改變存取參數(shù)、刪除數(shù)據(jù)、復制數(shù)據(jù)、加密數(shù)據(jù)、重復刪除數(shù)據(jù)、壓縮數(shù)據(jù)、解壓縮數(shù)據(jù)等。本領域的技術人員將認識到邏輯空間管理模塊516還可進行的其它邏輯空間管理功能。在一個實施方案中,設備500包括在邏輯到物理映像中將指定的LID映射到指定的物理地址的映射模塊518。邏輯容量模塊404使用映射模塊518映射的邏輯到物理映像來確定邏輯空間是否具有足夠的未分配的邏輯空間。邏輯到物理映像可用于追蹤指定的LID、未指定的LID、分配的LID、未分配的LID、分配的LID容量、未分配的LID容量等的分配。在一個實施方案中,映射模塊518將指定的LID和相應的指定的物理地址映射到多個映像中。例如,正向映像可用于快速識別給定LID的指定的物理地址。正向映像可包括B樹、內(nèi)容可尋址存儲器(“CAM”)、ニ叉樹、散列表等或有利于快速捜索群體稀疏的空間或范圍的其它數(shù)據(jù)結構。通過使用快速捜索群體稀疏的虛擬或邏輯命名空間的正向映像,映射模塊518提供了確定邏輯標識符的ー個或多個物理地址的有效方式。另外,反向映像可用于快速訪問關于物理地址的信息并且鏈接至與該物理地址關聯(lián)的邏輯標識符。反向映像可用于識別來自物理地址的LID。反向映像可用于將數(shù)據(jù)存儲裝置106中的地址映射到在存儲空間恢復操作期間一起擦除的擦除區(qū)域,諸如擦除塊中,使得反向映像的一部分跨越數(shù)據(jù)存儲裝置106的擦除區(qū)域。通過擦除區(qū)域來組織反向映像有利于追蹤在存儲恢復操作期間有用的信息。例如,反向映像可包括擦除區(qū)域中具有有效數(shù)據(jù)和具有無效數(shù)據(jù)的物理地址。當從擦除區(qū)域復制有效數(shù)據(jù)并且將該擦除區(qū)域擦除吋,可易于改變反向映像以表明該擦除區(qū)域不包括數(shù)據(jù)且準備對數(shù)據(jù)進行順序存儲。2008^4^80的ホ示11"Apparatus,System,andMethodforEfficientMappingofVirtualandPhysicalAddresses,Non-VolatileStorage“的美國專利申請No.12/098,434(DavidFlyrm等)中包括對正向和反向映射的更詳細討論,該專利以引用的方式并入本文。通過將LID和相應物理地址的大功率映射包括在存儲系統(tǒng)102和甚至存儲裝置106中,該映射有效地鞏固了傳統(tǒng)上在高層上進行功能,諸如精簡配置、分配功能等。映射模塊518提供了消除傳統(tǒng)系統(tǒng)中使用的映射層的有效方式。在精簡配置的存儲系統(tǒng)中,ー個潛在問題在于文件服務器/文件系統(tǒng)或客戶端可嘗試將數(shù)據(jù)寫入存儲裝置,但由于存儲裝置缺乏可用磁盤空間,因此這只會使寫入請求失敗。對于其中文件服務器/文件系統(tǒng)憑借LBA到PBA的一対一映射來追蹤可用物理存儲容量的隨機存取裝置中,存儲裝置用完存儲空間的可能性極低。然而,如果存儲裝置實際上為精簡配置系統(tǒng)、日志結構文件系統(tǒng)等,文件服務器/文件系統(tǒng)可以認為該存儲裝置為隨機存取裝置。對于此情況,希望在寫入請求之前或連同寫入請求預留物理空間,以使得寫入請求不會失敗。還存在文件服務器/文件系統(tǒng)或客戶端可能期望預留物理存儲空間的其它情況。設備500包括位于存儲系統(tǒng)102中的物理空間預留請求模塊520,物理空間預留請求模塊520從客戶端110或文件服務器114/文件系統(tǒng)接收預留數(shù)據(jù)存儲裝置(即為數(shù)據(jù)存儲裝置的一部分的存儲裝置106)上的可用物理存儲容量的請求[在下文中為“物理空間預留請求”]。在一個實施方案中,物理空間預留請求包括客戶端110或文件服務器114/文件系統(tǒng)請求的物理存儲容量的量的指示。請求的物理存儲容量的量的指示可以存儲裝置106的物理容量或存儲裝置106的容量的其它直接度量來表示。預留物理存儲容量的請求還可包括將預留的物理存儲容量分配給邏輯實體的請求。物理存儲容量的量的指示也可間接表示。例如,文件服務器114/文件系統(tǒng)可指示邏輯塊的數(shù)量,并且數(shù)據(jù)存儲裝置可確定每個邏輯塊的具體固定大小,然后將邏輯塊的數(shù)量轉(zhuǎn)換成物理存儲容量。本領域的技術人員將認識到物理空間預留請求中的物理存儲容量的量的其它指示符。在一個實施方案中,物理空間預留請求與寫入請求關聯(lián)。在一個實施方案中,寫入請求為兩步進程,并且物理空間預留請求和寫入請求是分開的。在另ー個實施方案中,物理空間預留請求為寫入請求的一部分或?qū)懭胝埱蟊淮_認為具有隱含的物理空間預留請求。在另ー個實施方案中,物理空間預留請求與特定寫入請求不關聯(lián),但相反地可與計劃性存儲關聯(lián),從而預留臨界操作等(其中僅分配存儲空間是不夠的)的存儲空間。。在某些實施方案中,可將數(shù)據(jù)組織成原子數(shù)據(jù)單元。例如,原子數(shù)據(jù)單元可為包、頁面、邏輯頁面、邏輯包、塊、邏輯塊、與一個或多個邏輯塊地址關聯(lián)的一組數(shù)據(jù)(這些邏輯塊地址可為連續(xù)或不連續(xù)的)、文件、文檔或其它類別的相關數(shù)據(jù)。在一個實施方案中,原子數(shù)據(jù)單元與多個不連續(xù)和/或無次序的邏輯塊地址或被寫入數(shù)據(jù)管道處理為單個原子數(shù)據(jù)單元的其它標識符關聯(lián)。如本文所用,在單個寫入操作中寫入不連續(xù)和/或無次序的邏輯塊被稱為原子寫入。在一個實施方案中,硬件控制器按照所接收的順序來處理操作,并且客戶端的軟件驅(qū)動器將這些操作一起發(fā)送至硬件控制器以進行單次原子寫入,以使得寫入數(shù)據(jù)管道可正常地處理原子寫入操作。因為硬件按順序處理操作,所以這保證了不同邏輯塊地址或給定原子寫入的其它標識符一起穿過寫入數(shù)據(jù)管道而到達非易失性存儲器。在一個實施方案中,一旦恢復電源,客戶端可在恢復時取消、重新處理或以其它方式處理失敗的原子寫入和/或其它失敗或終止的操作。在一個實施方案中,設備500可使用指示特定塊是否為原子寫入的一部分的元數(shù)據(jù)標志來標記原子寫入的塊。元數(shù)據(jù)標記的一個實例取決于非易失性存儲器的日志只寫/只加協(xié)議以及元數(shù)據(jù)標志等。使用只加日志來存儲數(shù)據(jù)且防止任何交錯塊能夠使原子寫入的成員元數(shù)據(jù)為單比特數(shù)據(jù)。在一個實施方案中,標志位可為0,除非塊為原子寫入的成員,則該位可為1,或者反之亦然。在一個實施方案中,如果塊為原子寫入的成員且為原子寫入的最后ー個塊,則元數(shù)據(jù)標志可為0以表明該塊為原子寫入的最后ー個塊。在另ー個實施方案中,可發(fā)送不同的硬件命令,以標記原子寫入的不同標題,諸如原子寫入中的第一個塊、原子寫入的中間成員塊、原子寫入的尾標等。在一個實施方案中,當從客戶端或存儲裝置的功率損耗或其它失效中恢復時,設備500以確定性方向掃描非易失性存儲器上的日志(例如,在一個實施方案中,日志的起始點為尾標,而日志的終點為表頭,并且始終將數(shù)據(jù)添加在表頭處)。在一個實施方案中,功率管理設備從日志的表頭掃描至日志的尾標。對于原子寫入的恢復而言,在一個實施方案中,當從表頭掃描至尾標時,如果元數(shù)據(jù)標志位為0,則塊為單塊原子寫入或非原子寫入塊。在一個實施方案中,一旦元數(shù)據(jù)標志位從0變?yōu)?,掃描的前一個塊和可能掃描的當前塊為原子寫入的成員。在一個實施方案中,功率管理設備繼續(xù)掃描日志,直到元數(shù)據(jù)標志變回到0,在日志的該點處,掃描的前一個塊為原子寫入的最后ー個成員和針對原子寫入存儲的第一個塊。在一個實施方案中,非易失性存儲器采用在日志前面(即日志的表頭)進行新寫入的基于日志的只加寫入結構化寫入系統(tǒng)。在另ー個實施方案中,存儲控制器采用無用單元收集系統(tǒng)、疏導器、清除代理等來收回日志的刪除塊、舊塊和/或無效塊。在另ー個實施方案中,存儲控制器使用正向映像將邏輯塊地址映射到物理地址,以有利于使用只加寫入結構和無用單元收集。在一個實施方案中,設備500包括確定數(shù)據(jù)存儲裝置(即存儲裝置106)是否具有滿足物理存儲空間請求的可用物理存儲容量的量的物理空間預留模塊522。如果物理空間預留模塊522確定可用物理存儲容量的量足以滿足物理空間預留請求,則物理空間預留模塊522預留存儲裝置106上的可用物理存儲容量的量以滿足物理存儲空間請求。滿足物理存儲空間請求所預留的可用物理存儲容量的量為預留的物理容量。預留的物理容量的量可能或可能不等于物理空間預留請求中請求的存儲空間量的量。例如,存儲系統(tǒng)102可能需要通過將數(shù)據(jù)寫入存儲裝置106來存儲附加信息,諸如元數(shù)據(jù)、索引信息、錯誤校正碼等。另外,存儲系統(tǒng)102可加密數(shù)據(jù),這可能會影響存儲大小。存儲系統(tǒng)102也可壓縮數(shù)據(jù),這可減少滿足物理空間預留請求中的請求的量所需的物理存儲容量的量。在一個實施方案中,物理空間預留請求包括邏輯空間的量,并且請求的物理存儲容量的量的指示來源于請求的邏輯空間。在另ー個實施方案中,物理空間預留請求包括一個或多個LID,并且請求的物理存儲容量的量的指示來源干與所述LID關聯(lián)的數(shù)據(jù)量。在一個實例中,與所述LID關聯(lián)的數(shù)據(jù)為已指定給這些LID的數(shù)據(jù),諸如寫入請求中的數(shù)據(jù)。在另ー個實例中,與所述LID關聯(lián)的數(shù)據(jù)為分配給每個LID的數(shù)據(jù)容量,例如LID為LBA并且可使用邏輯塊大小來得到請求的物理存儲容量的量的情況。在另ー個實施方案中,物理空間預留請求為存儲數(shù)據(jù)的請求。在該實施方案中,可包含物理空間預留請求,并且請求的物理存儲容量的量的指示可來源于所述數(shù)據(jù)和/或與所述數(shù)據(jù)關聯(lián)的元數(shù)據(jù)。在另ー個實施方案中,物理空間預留請求與存儲數(shù)據(jù)的請求關聯(lián)。在該實施方案中,請求的物理存儲容量的量的指示在物理空間預留請求中指示并且可與存儲數(shù)據(jù)的請求的數(shù)據(jù)相關。然后,物理空間預留模塊522也可使用元數(shù)據(jù)、壓縮、加密等因素來確定滿足物理空間預留請求所需的物理容量的量。滿足物理空間預留請求所需的物理容量的量可等干、大于或小于物理空間預留請求中指示的量。一旦物理空間預留模塊522確定了滿足物理空間預留請求所需的物理容量的量,則物理空間預留模塊522確定存儲系統(tǒng)102中的一個或多個存儲裝置106a-n是否單獨或組合地具有足夠的可用物理存儲容量來滿足物理空間預留請求。所述請求可針對特定存儲裝置(例如106a)、存儲裝置106的組合上的空間(例如一些存儲裝置106位于RAID中的情況)或可針對存儲系統(tǒng)102中通常具有的可用空間。物理空間預留模塊522可使可用容量的確定適于物理空間預留請求的細節(jié)。如果物理空間預留請求針對不止一個存儲裝置上的空間,物理空間預留模塊522通常會從每個存儲裝置106的每個邏輯到物理映像或一組存儲裝置106的組合邏輯到物理映像中檢索可用物理存儲容量信息。物理空間預留模塊522通常會查看指定的物理地址。注意到,物理空間預留模塊522通過查看指定的LID可能不具有足夠的信息來確定可用物理容量,因為LID與物理地址之間通常不存在一對ー關系。在一個實施方案中,物理空間預留模塊522通過保留足夠的可用存儲容量以滿足物理空間預留請求中的請求的容量的量來預留物理存儲容量。通常,在日志結構文件系統(tǒng)或其它順序存儲裝置中,物理空間預留模塊522不會預留存儲裝置106中的特定物理區(qū)域或物理地址范圍,但相反會預留物理存儲容量。例如,存儲裝置106可具有500千兆字節(jié)(“GB”)的可用物理存儲容量。存儲裝置106可接收數(shù)據(jù)并且將數(shù)據(jù)存儲在ー個或多個追加點處,從而減小存儲容量。同時,無用單元收集或存儲空間恢復操作可在將恢復的擦除塊返回到存儲池的后臺中進行,從而增加存儲空間。在一個實施方案中,存儲和釋放數(shù)據(jù)的位置不斷改變,因此物理空間預留模塊522可在無需預留固定物理存儲位置的情況下監(jiān)測存儲容量。物理空間預留模塊522可以多種方式來預留存儲空間。例如,物理空間預留模塊522可在存儲裝置106上的可用物理存儲容量減小至預留的存儲容量時暫停新數(shù)據(jù)的存儲,可在存儲裝置106上的物理存儲容量減小至高于預留的物理存儲容量的某個水平時發(fā)送警報,或者可發(fā)送使可用存儲容量保持高于預留的物理存儲容量的某個其它動作或動作的組合。在另ー個實施方案中,物理空間預留模塊522預留數(shù)據(jù)存儲裝置上的物理區(qū)域、物理地址范圍等。例如,如果物理空間預留模塊522預留了一定數(shù)量的擦除塊,則與物理空間預留請求關聯(lián)的數(shù)據(jù)可存儲在預留的區(qū)域或地址范圍中。可將所述數(shù)據(jù)按順序存儲在預留的存儲區(qū)域或范圍中。例如,可能期望將某些數(shù)據(jù)存儲在特定位置處。本領域的技術人員將認識到響應于物理空間預留請求預留特定區(qū)域、地址范圍等的原因。在一個實施方案中,設備500包括物理空間預留返回模塊524,物理空間預留返回模塊5M響應于確定數(shù)據(jù)存儲裝置是否具有滿足物理空間預留請求的可用物理存儲空間的量的物理空間預留模塊522,向客戶端110或文件服務器114/文件系統(tǒng)發(fā)送請求的物理存儲容量的量的可用性或不可用性指示。例如,如果物理空間預留模塊522確定可用存儲空間足以滿足物理空間預留請求,則物理空間預留返回模塊5M可發(fā)送物理空間預留模塊522已預留請求的存儲容量的通知或其它合適的通知。另ー方面,如果物理空間預留模塊522確定存儲裝置106或存儲系統(tǒng)102不具有足夠的可用物理存儲容量來滿足物理空間預留請求,則物理空間預留返回模塊5M可發(fā)送失敗通知或請求的物理存儲空間未被預留的其它指示符。例如,可在寫入數(shù)據(jù)之前使用請求的存儲空間的可用性或不可用性指示來降低寫入操作失敗的可能性。在另ー個實施方案中,設備500包括物理空間預留取消模塊526,物理空間預留取消模塊5響應于取消觸發(fā)事件將預留的物理存儲空間的全部或部分取消。取消觸發(fā)事件可可呈多種不同形式。例如,取消觸發(fā)事件可包括確定待寫入存儲裝置106或存儲系統(tǒng)102且與物理空間預留模塊522預留的可用空間關聯(lián)的數(shù)據(jù)先前已存儲在存儲系統(tǒng)102中。例如,如果重復數(shù)據(jù)刪除進程確定數(shù)據(jù)已存在于存儲系統(tǒng)102中,則可能無需再次存儲該數(shù)據(jù),因為先前存儲的數(shù)據(jù)可被映射到兩個或更多個LID。在更基本的實例中,如果預留的物理存儲空間與寫入請求關聯(lián)并且已執(zhí)行寫入請求,則取消觸發(fā)事件可完成對寫入請求的數(shù)據(jù)的存儲。在該實例中,物理空間預留取消模塊5可減小或取消預留的物理存儲容量。如果寫入的數(shù)據(jù)小于預留的空間,則物理空間預留取消模塊又可減小預留的量,或者可完全取消與寫入請求關聯(lián)的預留的物理存儲容量。寫入到小于預留的物理空間的空間可能是由于寫入了數(shù)據(jù)單元(該數(shù)據(jù)單元為所述請求的根據(jù))的一部分,其中逐步寫入與物理空間預留請求關聯(lián)的數(shù)據(jù)等。在一個實施方案中,通過物理存儲空間預留模塊522來預留物理存儲空間,以與請求匹配,但由于壓縮或類似的程序的原因,存儲的數(shù)據(jù)的存儲空間小于關聯(lián)的預留的物理存儲容量。在另ー個實施方案中,取消觸發(fā)事件為超吋。例如,如果物理空間預留請求與寫入請求關聯(lián),則物理空間預留模塊522預留物理存儲容量,如果在一定量的時間結束之前未寫入與寫入請求關聯(lián)的數(shù)據(jù),則物理空間預留取消模塊5可取消對物理存儲空間的預留。本領域的技術人員將認識到將預留的物理容量的全部或部分取消的其它原因。在一個實施方案中,物理空間預留模塊522可増加或以其它方式改變預留的物理存儲容量的量。例如,物理空間預留請求模塊520可接收另ー個物理空間預留請求,該請求可能與另ー個物理空間預留請求關聯(lián)或不關聯(lián)。如果物理空間預留請求與先前預留的物理存儲容量關聯(lián),則物理空間預留模塊522可増加預留的物理存儲容量。如果物理空間預留請求與先前預留的物理存儲容量不關聯(lián),則物理空間預留模塊522可単獨地預留物理存儲容量并單獨地追蹤附加存儲容量。本領域的技術人員將認識到請求和預留可用物理存儲容量且改變或取消預留的容量的其它方式。標準管理應包括用于管理物理存儲容量、向用戶提供指示需采取動作的指示符的某種閾值、觸發(fā)器、報警器等。通常,這可在管理系統(tǒng)中進行。然而,在滿足標準時(優(yōu)選),管理系統(tǒng)應將這些裝置組合以進行管理或所述裝置應當被配置/編程來中斷管理器。在另ー個實施方案中,設備500包括LID指定模塊528,LID指定模塊528響應于來自客戶端110或文件服務器114/文件系統(tǒng)的寫入數(shù)據(jù)的請求,將ー個或多個未指定的LID指定給所述數(shù)據(jù)并且將指定的LID發(fā)送至客戶端110或文件服務器114/文件系統(tǒng)。在一個實施方案中,LID指定模塊5可對LID進行動態(tài)分配和指定。在另ー個實施方案中,寫入數(shù)據(jù)的請求可為兩步進程。LID指定模塊5可在第一個步驟中向待寫入的數(shù)據(jù)分配LID,然后在第二個步驟中,可將所述數(shù)據(jù)與分配的LID—起寫入。在一個實施方案中,LID分配模塊402分配連續(xù)范圍中的LID。LID指定模塊5也可分配連續(xù)范圍中的LID。如果邏輯空間較大,則LID分配模塊402可能無需碎化分配的LID,但可能能夠選擇一系列連續(xù)的LID。在另ー個實施方案中,LID分配模塊402指定可能不連續(xù)的LID,并且可使用與其它分配的邏輯空間交替的邏輯空間。在另ー個實施方案中,設備500包括在直接存儲器存取(“DMA”)和/或遠程DMA(“RDMA”)操作中從客戶端110彈出數(shù)據(jù)的DMA模塊530。所述數(shù)據(jù)與LID分配模塊402指定的LID關聯(lián)。首先在存儲數(shù)據(jù)的請求(諸如寫入請求)中識別所述數(shù)據(jù),然后存儲控制器104再執(zhí)行DMA和/或RDMA以將數(shù)據(jù)從客戶端110拉動至存儲系統(tǒng)102中的存儲裝置106。在另ー個實施方案中,寫入請求未采用DMA或RDMA,但相反地寫入請求包括所述數(shù)據(jù)。此外,所述數(shù)據(jù)與LID分配模塊402指定的LID關聯(lián)。在一個實施方案中,設備500包括刪除模塊532。在一個實施方案中,響應于從數(shù)據(jù)存儲裝置刪除數(shù)據(jù)的請求,刪除模塊532移除存儲刪除數(shù)據(jù)的存儲空間與相應LID之間的映射。刪除模塊532也可將刪除數(shù)據(jù)的ー個或多個物理地址解除指定,并且也可將刪除數(shù)據(jù)的ー個或多個物理地址解除分配。流程圖圖6為示出了根據(jù)本發(fā)明的用于分配數(shù)據(jù)存儲空間的方法600的一個實施方案的示意性流程圖。方法600開始,然后分配請求模塊402從請求裝置,諸如客戶端110、文件服務器114/文件系統(tǒng)、主分配管理器IM等接收分配邏輯容量的分配請求602。在數(shù)據(jù)存儲裝置處接收分配請求。邏輯容量用于將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上。邏輯容量模塊404確定數(shù)據(jù)存儲裝置的邏輯空間是否具有足夠的未分配的邏輯空間來滿足分配請求604,其中所述確定包括捜索邏輯到物理映像。邏輯到物理映像包括邏輯空間中映射到ー個或多個物理位置的指定的LID,與所述指定的LID相對應的數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置上的所述ー個或多個物理位置處,并且指定的LID不同于映射到該指定的LID的ー個或多個物理地址。分配回復模塊406將回復傳送至請求裝置606,然后方法600圖7為示出了根據(jù)本發(fā)明的用于分配數(shù)據(jù)存儲空間的方法700的一個實施方案的示意性流程圖。方法700開始,然后物理容量請求模塊502從請求裝置接收物理容量請求702。在數(shù)據(jù)存儲裝置處接收物理容量請求。物理容量請求包括數(shù)據(jù)存儲裝置中的可用物理存儲容量的量的請求。物理容量請求例如可為具體物理容量的量,可來源于存儲數(shù)據(jù)的請求等。物理容量分配模塊504確定數(shù)據(jù)存儲裝置上的可用物理存儲容量的量704,其中可用物理存儲容量的量包括數(shù)據(jù)存儲裝置中未指定的存儲位置的物理存儲容量。物理容量回復模塊506響應于確定數(shù)據(jù)存儲裝置上的可用物理存儲容量的量的物理容量分配模塊504將回復傳送至請求裝置706,然后方法700結束。圖8為示出了根據(jù)本發(fā)明的用于預留物理存儲空間的方法800的一個實施方案的示意性流程圖。方法800開始,然后物理空間預留請求模塊520接收預留可用物理存儲空間的物理空間預留請求802。物理空間預留請求包括請求的物理存儲容量的量的指示。物理存儲容量的量的指示可采取多種形式,諸如多個字節(jié)或多個邏輯塊、存儲特定數(shù)據(jù)的請求或其它間接指示,其中物理存儲的量的指示來源于所述請求。物理空間預留模塊522確定數(shù)據(jù)存儲裝置是否具有滿足物理存儲空間請求的可用物理存儲容量804。如果物理空間預留模塊522確定804數(shù)據(jù)存儲裝置具有滿足物理存儲空間請求的可用物理存儲容量,則物理空間預留模塊522預留足以處理物理空間預留請求的物理存儲容量806,并且物理空間預留返回模塊524向請求客戶端110或文件服務器114/文件系統(tǒng)發(fā)送已預留請求的物理存儲空間的指示808。物理分配模塊404保留足夠的可用物理存儲容量以保留對物理存儲容量的預留,直到通過存儲與預留關聯(lián)的數(shù)據(jù)來使用預留或直到取消預留810時,然后方法800結束。如果物理空間預留模塊522確定804數(shù)據(jù)存儲裝置不具有滿足物理存儲空間請求的可用物理存儲容量,則物理空間預留返回模塊524向請求客戶端110或文件服務器114/文件系統(tǒng)發(fā)送未預留請求的物理存儲空間的指示或容量不足的指示812,然后方法800結束。圖9為示出了根據(jù)本發(fā)明的用于在數(shù)據(jù)存儲裝置中指定分配的邏輯標識符的方法900的一個實施方案的示意性流程圖。方法900開始,然后LID指定模塊5從客戶端110接收寫入請求901。在其它實施方案中,所述請求來源于文件服務器114/文件系統(tǒng)或系統(tǒng)100、101、103中的其它部件。寫入請求為將數(shù)據(jù)寫入存儲系統(tǒng)102中的一個或多個存儲裝置106的請求,其中未將數(shù)據(jù)指定給任何邏輯標識符或未針對數(shù)據(jù)分配邏輯標識符。可通過存儲系統(tǒng)102來接收所述請求,并且存儲控制器104或其它部件可認識到LID未被指定給寫入請求中的數(shù)據(jù)且所述請求被轉(zhuǎn)發(fā)至LID指定模塊528。LID指定模塊5將ー個或多個未指定的LID指定給數(shù)據(jù)904。存儲控制器104將數(shù)據(jù)存儲在存儲裝置106上,并且映射模塊518將存儲數(shù)據(jù)的ー個或多個物理地址映射到指定的LID908。如果將數(shù)據(jù)按順序存儲在存儲裝置106上,則在寫入請求之前,存儲數(shù)據(jù)的物理地址通常是未知的,但可在存儲該數(shù)據(jù)之后或之前不久確定。LID指定模塊5將指定的LID傳送910至客戶端110,然后方法900結束。通信可為已成功存儲數(shù)據(jù)的確認的一部分。圖10為示出了根據(jù)本發(fā)明的用于在數(shù)據(jù)存儲裝置106中指定分配的邏輯標識符的方法1000的另ー個實施方案的示意性流程圖方法1000開始,然后LID指定模塊5接收將LID指定給數(shù)據(jù)的請求1002,其中所述LID被分配給做出所述請求的客戶端110。在另ー個實施方案中,所述請求來源于文件服務器114/文件系統(tǒng)或系統(tǒng)100、101、103中的其它裝置。LID指定模塊5將LID指定給數(shù)據(jù)1004,所述數(shù)據(jù)被分配給做出所述請求的客戶端110。LID指定模塊528將指定的LID傳送1006至客戶端110。存儲系統(tǒng)102接收將數(shù)據(jù)寫入存儲系統(tǒng)102中的存儲裝置106的寫入請求1006,其中所述數(shù)據(jù)具有與其關聯(lián)的指定的LID。在其它實施方案中,寫入請求在于將數(shù)據(jù)存儲在存儲系統(tǒng)103中的不止ー個存儲裝置106上,例如存儲裝置106為RAID或?qū)?shù)據(jù)寫入主存儲裝置106和鏡像存儲裝置106的情況。存儲控制器104將數(shù)據(jù)存儲在存儲裝置106上1010,并且映射模塊518將存儲數(shù)據(jù)的ー個或多個物理地址映射到指定的LID1012。存儲控制器104或存儲系統(tǒng)102中的其它部件將寫入確認傳送1014至請求客戶端110,然后方法1000結束。圖11為示出了根據(jù)本發(fā)明的用于在存儲裝置處處理分配查詢的方法1100的ー個實施方案的示意性流程圖。分配查詢請求模塊510在數(shù)據(jù)存儲裝置處接收分配查詢1102。分配查詢確定模塊512識別滿足分配查詢中指定的標準的ー個或多個LID1104。識別的LID包括已指定的分配的LID、未指定的分配的LID和/或未分配的LID。分配查詢回復模塊514將分配查詢的結果傳送至請求裝置或其它指定裝置1106,然后方法1100結束。所述結果可包括識別的LID列表、已找到滿足標準的LID的確認、未找到滿足分配查詢中的標準的LID的確認等。圖12為將LID與非易失性存儲裝置(例如存儲裝置106)上的存儲位置關聯(lián)的示例性數(shù)據(jù)結構的示意性框圖。索引1204可包括樹(或其它數(shù)據(jù)結構),其包括多個存儲條目(例如條目1208、1214、1216等)。索引1204中的每個存儲條目可將LID(或LID范圍或集)與非易失性存儲裝置106的一個或多個存儲位置關聯(lián)。存儲位置可通過LID1217(例如條目1214中所示)、LID范圍、集等來識別的和/或索引。索引1204中的存儲條目可具有可變大小或長度,使得單個存儲條目(例如條目1214)可引用一組LID、LID范圍等。存儲條目的LID可為連續(xù)的(例如072-083)。其它條目如1218可包括一組不連續(xù)的LID(例如LID4M-477和535-598)。因此,索引1204可用于表示大小可變的存儲條目(例如與非易失性存儲裝置106的包括任意一組或一系列LID的數(shù)據(jù)的ー個或多個存儲位置相對應的存儲條目)。如圖12所示,存儲條目可通過LID(使用邊,諸如邊1210)來索引,這可能能夠?qū)崿F(xiàn)對存儲條目的快速有效的查找。包括LID“182”的存儲條目的示例性捜索可按如下進行??稍诟鎯l目處啟動捜索,該根存儲條目在圖12的實例中為存儲條目1208。在單個LID(或地址范圍)包括在特定存儲條目諸如根存儲條目1208中的情況下,如果搜索的LID("182")低于存儲條目1208的LID,則搜索可沿著定向邊1210向下繼續(xù)進行至存儲條目1208的左邊。如果搜索的LID(“182”)與當前存儲條目1208(例如位于存儲條目1208的范圍內(nèi))匹配,則成功終止搜索,同時識別當前存儲條目1208。。如果搜索的LID1206大于當當前條目1208的范圍,則搜索沿著定向邊定向邊1212向下繼續(xù)進行至當前存儲條目1208的右邊。如果存儲條目包括兩個LID或地址范圍(例如,如條目1218所示的不連續(xù)的一組)并且搜索的LID(“182”)介于列出的虛擬地址之間,則搜索沿著中心定向邊(未示出)向下繼續(xù)進行至具有介于當前條目1208的兩個LID之間的LID的條目。捜索沿著索引1204向下繼續(xù)進行,直到識別存儲條目或達到葉存儲條目,然后搜索失敗。在圖12的實例中,捜索成功終止于匹配的存儲條目1216(例如存儲條目1216包括捜索的LID(“182”)。雖雖然在圖12的實例中,索引1204采用由LID索引的B樹數(shù)據(jù)結構來實施,但在其它實施方案中,索引1204可采用內(nèi)容可尋址存儲器(“CAM”)、ニ叉樹、散列表或本領域中已知的其它數(shù)據(jù)結構來實施,并且可包括其它索引類型,諸如大小索引、存儲位置索引(例如在下述反向映像1222中)等。索引1204中的每個存儲條目可將ー個或多個LID與非易失性存儲裝置106的(多個)各個存儲位置關聯(lián)。例如,條目1214可將LID范圍072-083與存儲位置95-106關聯(lián)。在一些實施方案中,存儲位置可通過物理地址識別。本領域的技術人員將認識到,所述存儲位置的物理地址可存儲在索引1204中或可為固態(tài)存儲介質(zhì)的ー個或多個存儲結構中的偏移。如上所述,存儲條目1214的存儲位置可由于對基礎數(shù)據(jù)的修改(例如由于修改、恢復操作等)而改變。存儲條目還可包括和/或引用元數(shù)據(jù)1219,元數(shù)據(jù)1219可包括關于LID的元數(shù)據(jù),諸如存儲時間、大小、LID屬性(例如客戶端標識符、數(shù)據(jù)標識符、文件名、組標識符)等。因為元數(shù)據(jù)1219與通過LID(例如地址1215)來索引的存儲條目關聯(lián),所以元數(shù)據(jù)1219可與存儲條目1214關聯(lián),而與對非易失性存儲裝置106上的基礎存儲位置的位置的改變(例如對存儲位置1217的改變)無關。索引1204可用于有效地確定非易失性存儲裝置106是否包括客戶端請求中引用的存儲條目和/或識別數(shù)據(jù)在裝置106上的存儲位置。例如,非易失性存儲裝置106可接收客戶端請求1202來分配特定LID。請求1202可指定特定LID、LID和長度或偏移(例如例如從LID074開始,請求3個數(shù)據(jù)単元)、一組LID等。作為另外一種選擇或除此之外,客戶端請求1202可包括一組LID、LID范圍(連續(xù)或不連續(xù)的)等。非易失性存儲裝置106可采用搜索操作來確定與所請求的LID相對應的存儲條目是否可用于索引1204中,如上所述。如果包括所請求的LID的存儲條目存在于索引1204中,則與請求1202關聯(lián)的LID可識別為經(jīng)分配和指定。因此,對應于LID的數(shù)據(jù)可存儲在非易失性存儲裝置106上。如果LID不存在于索引1204中,則LID可識別為未指定(但可分配)。因為存儲條目可表示LID集和/或LID范圍,所以客戶端請求可導致部分分配。例如,分配068-073的請求可成功分配LID068至071,但可能無法分配072和073,因為這些包括在存儲條目1214中。就部分分配而言,整個分配請求可能失敗,可用LID可得以分配,并且其它LID可替代失效的LID等。在圖12所示的實例中,對應于存儲請求1202的存儲條目存在于索引1204(存儲條目1214)中,因此與請求1202關聯(lián)的LID被識別為經(jīng)分配和指定。因此,如果客戶端請求1202要在指定LID處讀取數(shù)據(jù);則可從存儲條目1214中識別的存儲位置1217讀取數(shù)據(jù)并且將該數(shù)據(jù)返回到始發(fā)者或所述請求。如果客戶端請求1202要分配所識別的LID,則分配請求可能失敗(和/或替代LID可按上述進行分配的)。如果新存儲條目添加至索引1204,則可進行合并操作。在合并操作中,現(xiàn)有存儲條目可與ー個或多個其它存儲條目“合井”。例如,LID084-088的新存儲條目可與條目1214合井。所述合并可包括修改存儲條目的LID1215以包括新地址(例如072-088)和/或引用存儲位置1217以包括其上存儲數(shù)據(jù)的存儲位置。雖然示出了索引1204中的存儲條目包括對存儲位置(例如地址1217)的引用,但本公開不限于該方面。在其它實施方案中,所述存儲條目包括對存儲位置的引用或與其的間接連接。例如,所述存儲條目可包括存儲位置標識符(或?qū)Ψ聪蛴诚?222的引用)。圖12示出包括反向映像1222的索引的另ー個實例,該索引可將非易失性存儲裝置106的存儲位置與邏輯地址空間中的LID關聯(lián)。反向映像1222還可將存儲位置與元數(shù)據(jù),諸如有效性指示符1230和/或其它元數(shù)據(jù)1236關聯(lián)(如下所述)。在一些實施方案中,存儲位置地址12和/或長度12可明確地包括在反向映像1222中?;蛘?,存儲位置地址12和/或數(shù)據(jù)長度12可可通過反向映像1222中條目的位置和/或布置來推斷,因此可省略地址12和/或數(shù)據(jù)長度12觀。在一些實施方案中,反向映像1222可包括對LID1234的引用。如上所述,反向映像1222可包括元數(shù)據(jù)1236,元數(shù)據(jù)1236可包與在存儲位置上進行的順序存儲操作有關的元數(shù)據(jù),諸如順序指示符(例如時間戳),以指示其中存儲數(shù)據(jù)的順序(例如以及存儲位置的“壽命”等)。所述元數(shù)據(jù)還1236可包括關于存儲介質(zhì)的元數(shù)據(jù),諸如耗損均衡性、可靠性、出錯率、干擾狀態(tài)等。元數(shù)據(jù)1236可用于識別可能減少非易失性存儲裝置106的物理存儲容量的不可靠和/或不可用的存儲位置。反向映像1222可根據(jù)非易失性存儲裝置106的存儲分區(qū)(例如擦除塊)來組織。在該實例中,對應于存儲條目1218的條目1220位于擦除塊η1238中。擦除塊η1238在擦除塊η-11240之后,而在擦除塊η+11242之前(未示出擦除塊η_1和η+1的內(nèi)容)。擦除塊可包括預定數(shù)量的存儲位置。擦除塊可指非易失性存儲裝置106中在存儲恢復操作中一起擦除的區(qū)域。有效性元數(shù)據(jù)1230可用于確定非易失性存儲裝置106的可用物理存儲容量(例如物理容量(或預算容量)與包括有效數(shù)據(jù)的存儲位置之間的差異)。反向映像1222可通過存儲分區(qū)(例如擦除塊)或擦除區(qū)域進行布置,以便能夠有效遍歷物理存儲空間(例如進行疏導操作、確定物理存儲容量等)。因此,在一些實施方案中,可通過遍歷反向映像1222中的存儲位置和/或擦除塊以識別可用物理存儲容量(和/或用于存儲有效數(shù)據(jù)),從而確定可用物理容量。作為另外一種選擇或除此之外,反向映像1222(或其它數(shù)據(jù)結構)可包括追蹤非易失性存儲裝置106的可用物理容量的指示符1238。可用物理容量指示符1238可初始化至存儲裝置106的物理存儲容量(或預算容量),并且可在進行存儲操作時更新。導致未對可用物理存儲容量指示符1238更新的存儲操作可包括但不限于將數(shù)據(jù)存儲在存儲裝置106上;預留存儲裝置106上的物理容量;取消物理容量預留;存儲與預留關聯(lián)的數(shù)據(jù)(其中存儲數(shù)據(jù)的大小不同于預留的大小);檢測不可靠和/或不可用的存儲位置和/或存儲分區(qū)(例如停用存儲位置)等。圖13示出用于管理非易失性存儲裝置的存儲分配的索引1304的另ー個實例。在圖13的實例中,索引1304可被修改以包括一個或多個分配條目(例如分配的條目1314)。分配條目可用于追蹤分配給客戶端但還未被指定(例如與存儲在非易失性存儲裝置106上的數(shù)據(jù)不關聯(lián))的LID。因此,與存儲條目(例如條目1308、1316和1318)不同,分配條目1314可能不不包括對存儲位置1317的引用;這些引用可設置為“不關聯(lián)的”、“空(NULL)“或可被省略。類似地,與分配條目1314關聯(lián)的元數(shù)據(jù)1319可指示條目未指定和/或與數(shù)據(jù)關聯(lián)。索引1304可用于確定可用邏輯地址空間的邏輯容量(例如通過遍歷索引1304)??捎眠壿嬋萘靠煽紤]指定的LID(使用存儲條目)以及分配的但還未指定的LID(使用分配條目,如1314)。如圖13所示,在一些實施方案中,分配條目1314可保留在具有存儲條目的索引1304中?;蛘?,分配條目可保留在獨立索引(或其它數(shù)據(jù)結構)中。當分配條目開始與非易失性存儲裝置106的數(shù)據(jù)關聯(lián)(例如與存儲位置關聯(lián))吋,分配條目可被修改和/或被存儲條目替換。在一些實施方案中,索引1304(或索引1204)可包括追蹤邏輯地址空間的可用邏輯容量的指示符1330??捎眠壿嬋萘靠筛鶕?jù)存儲裝置106呈現(xiàn)的邏輯地址空間初始化。對索引1304的改變可引起可用邏輯容量指示符1330進行更新。改變可包括但不限于添加新分配條目;移除分配條目;添加存儲條目;移除分配條目等。圖14示出可用于在非易失性存儲裝置中分配存儲的未分配的索引1444的實例的ー個實例。索引1444可包括可對應于上述LID索引1204和/或1304中的〃空洞(hole)“的整個1450。因此,可用索引1444中的條目1450可對應于可用(例如為分配或指定)的LID(和/或LID范圍、集等)。索引1444可用于響應于客戶端請求而快速確定邏輯存儲空間的邏輯存儲容量和/或識別要分配的LID。在圖14的實例中,所示索引1444中的條目通過LID索引。在一些實施方案中,然而,索引1444可以其它(或附加)方式索引。例如,未分配的索引1444可通過LID范圍(例如通過LID范圍的大小)以及LID來索引。此索引可用于識別根據(jù)客戶端請求設定的未分配的LID(例如以有效填充邏輯地址空間中的“空洞”)。圖15為用于分配存儲的方法1500的一個實施方案的流程圖。如上所述,方法1500的步驟可與特定機器部件相關和/或可采用存儲在非瞬時性機器可讀存儲介質(zhì)上的機器可讀指令來實施。在步驟1510中,可初始化非易失性存儲裝置以供使用。所述初始化可包括向非易失性存儲裝置(例如固態(tài)存儲裝置106),諸如通信接ロ(例如總線、網(wǎng)絡等)分配資源,分配易失性存儲器,訪問固態(tài)存儲介質(zhì)等。所述初始化還可包括呈現(xiàn)邏輯地址空間、初始化ー個或多個索引(例如上文結合圖12-14描述的索引)等。在步驟1520中,非易失性存儲裝置可向ー個或多個客戶端呈現(xiàn)邏輯空間。步驟1520可包括實施和/或提供一個或多個客戶端等可訪問的接ロ(例如API)。在步驟1530中,非易失性存儲裝置可保留與通過方法1500所進行的邏輯分配操作有關的元數(shù)據(jù)。所述邏輯分配操作可與在步驟1520呈現(xiàn)的邏輯地址空間中的操作有關,并且可包括但不限于分配邏輯容量;將邏輯容量指定給存儲位置等。元數(shù)據(jù)可包括但不限于將邏輯地址空間中的LID與非易失性存儲裝置上的存儲位置關聯(lián)的索引;將存儲位置與LID關聯(lián)的索引(例如圖12的索引1204);指示分配的LID不具有關聯(lián)的存儲位置的分配條目(例如圖13的索引1304);未分配的索引(例如圖14的索引1444);保留未分配邏輯地址空間的指示符(例如圖13的指示符1330)等。在步驟1540中,可接收與邏輯地址空間中的LID有關的客戶端請求。客戶端請求可包括確定特定LIDand/或邏輯容量是否可分配的查詢、分配LID和/或邏輯容量的請求、對非易失性存儲裝置上的存儲數(shù)據(jù)的請求等。在步驟1550中,可引用在步驟1530保留的元數(shù)據(jù)以確定是否可滿足客戶端請求。步驟1550可包括引用在步驟1530保留的元數(shù)據(jù)(例如索引和/或指示符),以確定邏輯地址空間的可用邏輯容量和/或識別可用LID(或LID范圍),如上所述。在步驟1560,方法1500可提供對客戶端請求的響應,如果請求不能滿足,則其可包括提供指示此情況的響應。如果可滿足客戶端請求,提供響應可包括以下一個或多個可滿足分配的指示符、分配滿足請求的LID、提供分配的滿足請求的LID、提供ー個或多個請求的LID和/或一個或多個附加LID(例如,如果可分配請求的一組LID的一部分)等。在步驟1560之后,流程可返回到步驟1530,其中方法1500可根據(jù)在步驟1560進行的分配操作(如果有的話)更新元數(shù)據(jù)(例如索引、指示符等)。圖16示出為用于分配存儲的方法1600的一個實施方案的流程圖。如上所述,方法1600的步驟可與特定機器部件相關和/或可采用存儲在非瞬時性機器可讀存儲介質(zhì)上的機器可讀指令來實施。在步驟1610、1620和1630,方法1600可初始化,向一個或多個客戶端呈現(xiàn)邏輯存儲空間,和/或維護與通過方法1600進行的邏輯操作有關的元數(shù)據(jù)。在步驟1632,方法1602可保留與通過方法1600進行的物理存儲操作有關的元數(shù)據(jù)。存儲操作可包括但不限于預留物理存儲容量;取消物理存儲容量預留;將數(shù)據(jù)存儲在非易失性存儲裝置上;解除分配物理存儲容量;疏導操作(例如無用單元收集、錯誤處理等)、物理存儲空間預算等。如上所述,在步驟1632保留的元數(shù)據(jù)可包括但不限于將邏輯地址空間中的LID與非易失性存儲裝置上的存儲位置關聯(lián)的索引;將存儲位置與LID關聯(lián)的索引(例如圖12的索引1204);指示分配的LID不具有關聯(lián)的存儲位置的分配條目(例如圖13的索引1304);未分配的索引(例如圖14的索引1444);保留未分配邏輯地址空間的指示符(例如圖13的指示符1330)等。在步驟1642,可接收與非易失性存儲裝置的物理存儲容量有關的客戶端請求??蛻舳苏埱罂砂ù_定物理存儲容量是否可用的查詢、預留物理存儲容量的請求、存儲數(shù)據(jù)的請求、解除分配數(shù)據(jù)的請求(例如TRIM)等。在步驟1650,可引用元數(shù)據(jù)維護在步驟1630和/或1632可以確定是否可滿足客戶端請求。步驟1650可包括引用元數(shù)據(jù)在步驟1630和/或1632,以確定非易失性存儲裝置的可用物理存儲容量和/或識別與特定LID關聯(lián)的存儲位置(例如在解除分配請求或TRIM中),如上所述。在步驟1660,方法1600可提供對客戶端請求的響應,如果請求不能滿足,則其可包括提供指示此情況的響應。如果可滿足客戶端請求,則提供響應可包括以下ー個或多個可滿足和/或已滿足客戶端請求的指示;預留用于客戶端的物理存儲容量;取消物理存儲容量預留;將數(shù)據(jù)存儲在非易失性存儲裝置上;解除分配物理存儲容量等。在不脫離本發(fā)明的精神和基本特性的情況下,可以其它特定形式實施本發(fā)明。所述實施方案在各個方面均應視為說明性的而非限制性的。因此,本發(fā)明的范圍由所附權利要求而非上述說明指示。所有落入權利要求等效范圍內(nèi)的變化均包括在本發(fā)明的范圍之內(nèi)。權利要求1.一種用于分配非易失性數(shù)據(jù)存儲的方法,其包括將包括多個邏輯標識符(LID)的邏輯地址空間呈現(xiàn)給存儲客戶端;保留將所述邏輯地址空間中的LID與所述非易失性存儲裝置上的各個存儲位置關聯(lián)的索引;引用所述索引來確定是否可滿足分配所述邏輯地址空間中的邏輯容量的客戶端請求;并且提供指示是否可滿足所述客戶端請求的響應。2.根據(jù)權利要求1所述的方法,其中所述客戶端請求識別所述邏輯地址空間中的一組LID,并且其中確定是否可滿足所述客戶端請求包括確定所述識別的一組LID中的一個或多個LID是否存在于所述索引中。3.根據(jù)權利要求1所述的方法,其中所述客戶端請求識別所述邏輯地址空間中的一組定序LID,并且其中確定是否可滿足所述客戶端請求包括確定所述識別的一組定序LID中的一個或多個LID是否存在于所述索引中。4.根據(jù)權利要求1所述的方法,其中確定是否可滿足所述客戶端請求包括確定所述邏輯地址空間中的未指定的邏輯容量;并且將所述未指定的邏輯容量與所述請求的邏輯容量比較。5.根據(jù)權利要求1所述的方法,還包括保留分配條目以指示對不具有關聯(lián)的存儲位置的LID的分配;并且使用所述分配索引來確定未分配的邏輯容量,其中確定是否可滿足所述客戶端請求包括將所述請求的邏輯容量與所述未分配的邏輯容量比較。6.根據(jù)權利要求5所述的方法,其中所述分配條目保留在所述索引中。7.根據(jù)權利要求1所述的方法,還包括保留未分配的索引,其包括所述邏輯地址空間中的未分配的LID,其中確定包括識別所述未分配的索引中的LID。8.根據(jù)權利要求1所述的方法,其中提供響應包括以下之一提供滿足所述客戶端請求的分配的LID;指示可滿足所述請求;指示不能滿足所述請求;并且指示已分配滿足所述客戶端請求的LID。9.根據(jù)權利要求1所述的方法,其中所述客戶端請求包括待分配的第一LID,并且其中提供所述響應包括響應于所述分配的第一LID提供不同的第二LID。10.根據(jù)權利要求1所述的方法,所述客戶端請求與待存儲在所述非易失性存儲裝置上的數(shù)據(jù)有關,所述方法還包括將與所述客戶端請求有關的所述數(shù)據(jù)存儲在所述非易失性存儲裝置的存儲位置;并且將所述存儲位置與所述索引中的LID關聯(lián)。11.根據(jù)權利要求1所述的方法,其中所述索引包括以下之一與所述非易失性存儲裝置的多個存儲位置關聯(lián)的LID;和與多個LID關聯(lián)的存儲位置。12.根據(jù)權利要求1所述的方法,其中所述邏輯地址空間超出所述非易失性存儲裝置的物理存儲容量。13.根據(jù)權利要求12所述的方法,還包括接收向未指定有所述非易失性存儲裝置上的存儲位置的分配的LID分配物理存儲容量的請求;確定所述非易失性存儲裝置的可用物理存儲容量;提供指示所述可用物理存儲容量是否滿足所述請求的響應。14.根據(jù)權利要求13所述的方法,響應于滿足所述請求將所述數(shù)據(jù)存儲在所述非易失性存儲裝置的存儲位置上;并且將所述存儲位置的物理地址指定給所述索引中所述請求的所述LID。15.一種用于管理非易失性存儲器中的物理容量的方法,其包括通過非易失性存儲裝置呈現(xiàn)包括多個邏輯標識符(LID)的邏輯地址空間,所述邏輯地址空間超出所述非易失性存儲裝置的物理存儲容量;保留將所述邏輯地址空間中的LID與所述非易失性存儲裝置的存儲位置關聯(lián)的索引;并且通過引用所述索引以確定所述固態(tài)存儲裝置的可用物理存儲容量來響應針對物理存儲容量的客戶端請求。16.根據(jù)權利要求15所述的方法,其中確定可用物理存儲容量包括識別所述非易失性存儲裝置中未指定給所述邏輯地址空間中的LID的存儲位置。17.根據(jù)權利要求15所述的方法,還包括響應于在所述非易失性存儲裝置上進行存儲操作,保留所述非易失性存儲裝置的所述可用物理存儲容量的指示符。18.根據(jù)權利要求17所述的方法,還包括響應于包括以下之一的存儲操作,更新所述非易失性存儲請求的所述可用物理存儲容量的所述指示符存儲與物理存儲容量預留關聯(lián)的數(shù)據(jù)的存儲操作,其中所述存儲無需所述關聯(lián)的物理存儲容量預留的一部分;取消物理存儲容量預留的存儲操作;和取消物理存儲容量預留的一部分的存儲操作。19.根據(jù)權利要求15所述的方法,還包括響應于以下之一,更新LID與所述非易失性存儲裝置上的存儲位置之間的關聯(lián)數(shù)據(jù)將存儲在所述存儲位置處的數(shù)據(jù)移動至所述非易失性存儲裝置的不同存儲位置;存儲在所述存儲位置處的所述數(shù)據(jù)與存儲在第二存儲位置處的數(shù)據(jù)相同,所述更新包括將所述LID與所述第二存儲位置關聯(lián);并且將與一個或多個LID關聯(lián)的一個或多個存儲位置重新映射到一個或多個不同的LID。20.根據(jù)權利要求15所述的方法,還包括保留對物理存儲容量的預留,其中確定可用物理存儲容量還包括訪問所述預留。21.根據(jù)權利要求15所述的方法,還包括響應于滿足所述客戶端請求,預留物理存儲容量;并且保留所述非易失性存儲裝置上的足夠的物理存儲容量來滿足所述預留。22.根據(jù)權利要求15所述的方法,其中所述客戶端請求與待存儲在所述非易失性存儲裝置上的數(shù)據(jù)有關,所述方法還包括以下之響應于滿足所述客戶端請求,將所述請求中引用的所述數(shù)據(jù)存儲在所述非易失性存儲裝置的存儲位置且將所述存儲位置與所述索引中的LID關聯(lián);并且在不能滿足所述請求時,通知所述客戶端。23.根據(jù)權利要求15所述的方法,其中所述客戶端請求包括以下之一所述邏輯地址空間中用于得到所述請求的物理存儲容量的邏輯容量的量;所述邏輯地址空間中用于得到所述請求的物理存儲容量的一個或多個LID;得到所述請求的物理存儲容量的存儲數(shù)據(jù)的請求;預留所述物理存儲容量的請求;和預留所述物理存儲容量且分配所述邏輯地址空間中的相應邏輯容量的請求。24.一種用于分配非易失性存儲的方法,其包括通過非易失性存儲裝置將包括多個邏輯標識符(LID)的邏輯地址空間呈現(xiàn)給客戶端,所述LID獨立于所述非易失性存儲裝置的存儲位置且超出所述非易失性存儲裝置的物理存儲容量;從所述客戶端接收針對存儲容量的請求;響應于所述請求,選擇所述邏輯地址空間中的LID以分配給所述客戶端;針對所述分配的LID預留所述非易失性存儲裝置上的物理存儲容量;并且將所述LID提供給所述客戶端。25.一種非瞬時性存儲介質(zhì),其包括被配置為為使機器進行一種用于分配非易失性存儲的方法的機器可讀指令,所述方法包括通過非易失性存儲裝置將包括多個邏輯標識符(LID)的邏輯地址空間呈現(xiàn)給客戶端,所述LID獨立于所述非易失性存儲裝置的存儲位置且超出所述非易失性存儲裝置的物理存儲容量;從所述客戶端接收將數(shù)據(jù)存儲在所述非易失性存儲裝置上的請求;響應于所述請求,選擇所述邏輯地址空間中的LID以分配給所述客戶端;將所述請求的數(shù)據(jù)存儲在所述非易失性存儲裝置的存儲位置;并且將分配給所述客戶端的所述LID與包括所述請求的所述數(shù)據(jù)的所述存儲位置關聯(lián)。26.一種用于分配固態(tài)存儲裝置的非易失性存儲的方法,所述方法包括保留與在固態(tài)存儲裝置上進行的分配操作和所述固態(tài)存儲裝置的存儲操作有關的索引;存取所述索引以管理所述固態(tài)存儲裝置的存儲操作;并且存取所述索引以管理所述固態(tài)存儲裝置支持的分配的邏輯容量。27.根據(jù)權利要求沈所述的方法,其中與分配操作有關的元數(shù)據(jù)和與存儲操作有關的所述元數(shù)據(jù)存儲在共享數(shù)據(jù)結構中。28.根據(jù)權利要求沈所述的方法,其中分配元數(shù)據(jù)包括識別所述邏輯容量中已分配的LID的分配指示符,所述方法還包括使用所述分配指示符來響應分配查詢。全文摘要本發(fā)明公開了一種用于分配非易失性存儲的設備、系統(tǒng)和方法。存儲裝置可呈現(xiàn)可超出該裝置的物理存儲容量的邏輯地址。存儲裝置可分配邏輯地址空間中的邏輯容量。當存在足夠的未指定和/或未分配的邏輯容量來滿足分配請求時,可允許該請求。通過請求物理存儲容量可將數(shù)據(jù)存儲在非易失性存儲裝置上。當存在足夠的可用物理存儲容量來滿足物理存儲請求,諸如存儲請求或物理存儲預留時,可允許該請求。該裝置可保留將邏輯地址空間中的邏輯標識符(LID)與存儲裝置上的存儲位置關聯(lián)的索引。這個索引可用于做出邏輯容量分配和/或管理物理存儲空間。文檔編號G06F21/22GK102598019SQ201080050430公開日2012年7月18日申請日期2010年9月9日優(yōu)先權日2009年9月9日發(fā)明者喬納森·希爾達,大衛(wèi)·弗林申請人:弗森-艾奧公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1