專利名稱:具有多個固態(tài)盤的存儲設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及固態(tài)存儲設(shè)備(Solid Storage Device, SSD),更具體地,本發(fā)明涉及用于同時訪問多個固態(tài)盤的存儲設(shè)備。
背景技術(shù):
同機械式硬盤相類似,固態(tài)存儲設(shè)備也是用于計算機系統(tǒng)的大容量、非易失性存儲設(shè)備。固態(tài)存儲設(shè)備一般以閃存(Flash)作為存儲介質(zhì)。高性能的固態(tài)存儲設(shè)備被用于高性能計算機。存儲器目標(Target)是NAND閃存封裝內(nèi)的共享芯片使能(CE,Chip Enable)信號的一個或多個邏輯單元(Logic Unit)。每個邏輯單元具有邏輯單元號(LUN, Logic UnitNumber)0 NAND閃存封裝內(nèi)可包括一個或多個管芯(Die)。典型地,邏輯單元對應(yīng)于單一的管芯。邏輯單元可包括多個平面(Plane)。邏輯單元內(nèi)的多個平面可以并行存取,而NAND閃存芯片內(nèi)的多個邏輯單元可以彼此獨立地執(zhí)行命令和報告狀態(tài)。在可從http://www.micron, com/ /media/Documents/Products/0ther%20Documents/0NFI3_0Gold.ashx 獲得的 “Open NAND Flash Interface Specification (Revision3.0)” 中,提供了關(guān)于目標(target)、邏輯單元、LUN、平面(Plane)的含義,其為現(xiàn)有技術(shù)的一部分。固態(tài)存儲設(shè)備可具有擴展卡形狀,可安裝到主板上的PCIE或者類似的接口。固態(tài)存儲設(shè)備還可具有3.5、2.5或1.8英寸驅(qū)動器形狀,可安裝到機架或盤陣設(shè)備中,其一般被稱為固態(tài)盤(Solid State Disk)。公開號為CN102656567A的中國專利申請公開了固態(tài)存儲器件內(nèi)的數(shù)據(jù)管理。參看圖1,固態(tài)存儲器件的一組頁被稱為“步距(stride)”,每個步距包括來自每個通道的一組頁,其中每個通道的一組頁被稱為“條”(strip)。對于標識了 LBA(Logic Block Address,邏輯塊地址)的寫入請求,實施在步距內(nèi)的從LBA到PBA (Physical Block Address,物理塊地址)的映射,并填充步距內(nèi)的每個條(圖1中的id分別為31、52、44、67的條)。對步距內(nèi)多個條的填充可以是連續(xù)或并行的。這樣,將RAID (Redundant Array of IndependentDisks,獨立磁盤冗余陣列)模式引入到固態(tài)存儲設(shè)備中,提高了固態(tài)存儲設(shè)備的性能與可靠性。然而,存儲設(shè)備中可能多個固態(tài)盤或多個存儲卡,每個固態(tài)盤或存儲卡可能具有不同的容量和性能,隨著時間的流逝,各個固態(tài)盤或存儲卡也會表現(xiàn)出不同的特性。在寫入數(shù)據(jù)時,考慮各個固態(tài)盤或存儲卡的特定性能將有助于提高存儲設(shè)備的性能。以及,寫入請求中所攜帶的數(shù)據(jù)量可能與“步距”的數(shù)據(jù)容量不同。需要提供相應(yīng)的手段來匹配來自客戶端的訪問請求與存儲設(shè)備的存儲單元的容量。
發(fā)明內(nèi)容
本發(fā)明解決了固態(tài)盤形成的RAID存儲設(shè)備中寫放大問題,延長了存儲設(shè)備的使用壽命。
根據(jù)本發(fā)明的第一方面,提供了一種用于訪問存儲設(shè)備的多個驅(qū)動器的方法,所述方法包括:接收將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址的請求;為所述第一邏輯地址生成第一物理地址;生成寫入命令,其指示將所述第一數(shù)據(jù)寫入所述第一物理地址;確定是否生成校驗數(shù)據(jù);若是,基于所述第一數(shù)據(jù)生成第一校驗數(shù)據(jù),并將所述第一校驗數(shù)據(jù)寫入第二物理地址。根據(jù)本發(fā)明的第一方面的方法,還包括:在所述多個驅(qū)動器中的一個或多個上存儲元數(shù)據(jù),所述元數(shù)據(jù)指示所述第一物理地址、所述第二物理地址具有關(guān)聯(lián)關(guān)系。根據(jù)本發(fā)明的第一方面的方法,其中通過選擇所述多個驅(qū)動器中的第一驅(qū)動器來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所述第一驅(qū)動器中的存儲位置。根據(jù)本發(fā)明的第一方面的方法,其中為每個驅(qū)動器提供寫指針,寫指針指示寫入數(shù)據(jù)的物理地址,基于所選擇的第一驅(qū)動器的寫指針生成所述第一物理地址,并使所述第一驅(qū)動器的寫指針遞增。根據(jù)本發(fā)明的第一方面的方法,其中響應(yīng)于接收將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址的請求,分配存儲單元組,所述存儲組包括多個存儲單元,所述多個存儲單元中的每個位于所述多個驅(qū)動器之一。根據(jù)本發(fā)明的第一方面的方法,其中所述存儲單元為一個或多個頁。根據(jù)本發(fā)明的第一方面的方法,其中為存儲單元組提供寫指針,寫指針指示所述存儲單元組中的一個存儲單元,基于所分配的存儲單元組的寫指針生成所述第一物理地址,并使所分配的存儲單元組的寫指針指示所述存儲單元組中的另一個存儲單元。根據(jù)本發(fā)明的第一方面的方法,其中響應(yīng)于分配存儲單元組,基于所述存儲單元組的各個存儲單元所在的多個驅(qū)動器的狀態(tài),從所述存儲單元組中選擇一個存儲單元來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所選擇的存儲單元。根據(jù)本發(fā)明的第一方面的方法,其中為所述多個驅(qū)動器中的每個驅(qū)動器提供寫隊列,用于在將寫入命令發(fā)送給驅(qū)動器之前存儲寫入命令。根據(jù)本發(fā)明的第一方面的方法,其中如果已經(jīng)收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則確定生成校驗數(shù)據(jù),N是自然數(shù)。根據(jù)本發(fā)明的第一方面的方法,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),填充預定數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第一方面的方法,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),通過執(zhí)行垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第一方面的方法,其中在所述請求中指示生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第一方面的方法,其中所述請求中指示所述N的值。根據(jù)本發(fā)明的第一方面的方法,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且所述請求中指示生成校驗數(shù)據(jù),填充數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第一方面的方法,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且強制計算校驗數(shù)據(jù)的事件發(fā)生,填充數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。
根據(jù)本發(fā)明的第一方面的方法,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且所述請求中指示生成校驗數(shù)據(jù),執(zhí)行垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第一方面的方法,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且強制計算校驗數(shù)據(jù)的事件發(fā)生,執(zhí)行垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第二方面,提供了一種用于訪問存儲設(shè)備的多個驅(qū)動器的裝置,所述裝置包括:用于接收將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址的請求的模塊;用于為所述第一邏輯地址生成第一物理地址的模塊;用于生成寫入命令的模塊,所述寫入命令指示將所述第一數(shù)據(jù)寫入所述第一物理地址;用于確定是否生成校驗數(shù)據(jù)的模塊;用于在確定生成校驗數(shù)據(jù)的情況下基于所述第一數(shù)據(jù)生成第一校驗數(shù)據(jù),并將所述第一校驗數(shù)據(jù)寫入第二物理地址的模塊。根據(jù)本發(fā)明的第三方面,提供了一種存儲設(shè)備,包括網(wǎng)絡(luò)適配器、控制器以及耦合到所述控制器的多個驅(qū)動器;所述網(wǎng)絡(luò)適配器將所述存儲設(shè)備耦合到網(wǎng)絡(luò),并接收來自客戶端的訪問請求,所述訪問請求指示將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址;所述控制器為所述第一邏輯地址生成第一物理地址,并生成寫入命令發(fā)送給所述多個驅(qū)動器之一,其指示將所述第一數(shù)據(jù)寫入所述第一物理地址;所述控制器還確定是否生成校驗數(shù)據(jù),若是,基于所述第一數(shù)據(jù)生成第一校驗數(shù)據(jù),并生成第二寫入命令發(fā)送給所述多個驅(qū)動器之一,其指示將所述第一校驗數(shù)據(jù)寫入第二物理地址。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,還包括:所述控制器將元數(shù)據(jù)存儲于所述多個驅(qū)動器中的一個或多個,所述元數(shù)據(jù)指示所述第一物理地址、所述第二物理地址具有關(guān)聯(lián)關(guān)系。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中所述控制器通過選擇所述多個驅(qū)動器中的第一驅(qū)動器來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所述第一驅(qū)動器中的存儲位置。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中在所述控制器中為每個驅(qū)動器維護寫指針,寫指針指示寫入數(shù)據(jù)的物理地址;所述控制器還基于所選擇的第一驅(qū)動器的寫指針生成所述第一物理地址,并使所述第一驅(qū)動器的寫指針遞增。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中所述控制器響應(yīng)于接收將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址的請求,分配存儲單元組,所述存儲組包括多個存儲單元,所述多個存儲單元中的每個位于所述多個驅(qū)動器之一。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中所述控制器為存儲單元組維護寫指針,寫指針指示所述存儲單元組中的一個存儲單元,所述控制器基于所分配的存儲單元組的寫指針生成所述第一物理地址,并使所分配的存儲單元組的寫指針指示所述存儲單元組中的另一個存儲單元。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中響應(yīng)于分配存儲單元組,所述控制器查詢所述存儲單元組的各個存儲單元所在的多個驅(qū)動器的狀態(tài),并基于所述狀態(tài)從所述存儲單元組中選擇一個存儲單元來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所選擇的存儲單元。
根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中所述控制器為所述多個驅(qū)動器中的每個驅(qū)動器提供寫隊列,所述寫隊列用于在將寫入命令發(fā)送給驅(qū)動器之前存儲寫入命令。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中如果所述存儲設(shè)備已經(jīng)收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述控制器確定生成校驗數(shù)據(jù),N是自然數(shù)。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中如果所述存儲設(shè)備尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述控制器填充預定數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中如果所述存儲設(shè)備尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述控制器發(fā)起用于所述多個驅(qū)動器的一個或多個的垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中所述請求中指示所述N的值。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中在所述請求中指示生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中所述請求中指示所述N的值。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且所述請求中指示生成校驗數(shù)據(jù),填充數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且強制計算校驗數(shù)據(jù)的事件發(fā)生,填充數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且所述請求中指示生成校驗數(shù)據(jù),執(zhí)行垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第三方面的存儲設(shè)備,其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且強制計算校驗數(shù)據(jù)的事件發(fā)生,執(zhí)行垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第四方面,提供了一種計算機系統(tǒng),包括主板、布置于主板上的擴展卡、CPU以及耦合到所述擴展卡的多個驅(qū)動器;所述CPU把將第一數(shù)據(jù)寫入第一邏輯地址的請求發(fā)送給所述擴展卡;所述擴展卡為所述第一邏輯地址生成第一物理地址,并生成寫入命令發(fā)送給所述多個驅(qū)動器之一,所述寫入命令指示將所述第一數(shù)據(jù)寫入所述第一物理地址;所述擴展卡還確定是否生成校驗數(shù)據(jù),若是,基于所述第一數(shù)據(jù)生成第一校驗數(shù)據(jù),并生成第二寫入命令發(fā)送給所述多個驅(qū)動器之一,所述第二寫入命令指示將所述第一校驗數(shù)據(jù)寫入第二物理地址。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),還包括:所述擴展卡將元數(shù)據(jù)存儲于所述多個驅(qū)動器中的一個或多個,所述元數(shù)據(jù)指示所述第一物理地址、所述第二物理地址具有關(guān)聯(lián)關(guān)系。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中所述擴展卡通過選擇所述多個驅(qū)動器中的第一驅(qū)動器來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所述第一驅(qū)動器中的存儲位置。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中在所述擴展卡中為每個驅(qū)動器維護寫指針,寫指針指示寫入數(shù)據(jù)的物理地址;所述擴展卡還基于所選擇的第一驅(qū)動器的寫指針生成所述第一物理地址,并使所述第一驅(qū)動器的寫指針遞增。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中所述擴展卡響應(yīng)于接收將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址的請求,分配存儲單元組,所述存儲組包括多個存儲單元,所述多個存儲單元中的每個位于所述多個驅(qū)動器之一。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中所述擴展卡為存儲單元組維護寫指針,寫指針指示所述存儲單元組中的一個存儲單元,所述擴展卡基于所分配的存儲單元組的寫指針生成所述第一物理地址,并使所分配的存儲單元組的寫指針指示所述存儲單元組中的另一個存儲單元。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中響應(yīng)于分配存儲單元組,所述擴展卡查詢所述存儲單元組的各個存儲單元所在的多個驅(qū)動器的狀態(tài),并基于所述狀態(tài)從所述存儲單元組中選擇一個存儲單元來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所選擇的存儲單元。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中所述擴展卡為所述多個驅(qū)動器中的每個驅(qū)動器提供寫隊列,所述寫隊列用于在將寫入命令發(fā)送給驅(qū)動器之前存儲寫入命令。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中如果所述擴展卡已經(jīng)收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則確定生成校驗數(shù)據(jù),N是自然數(shù)。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中如果所述擴展卡尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述擴展卡填充預定數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中如果所述擴展卡尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述擴展卡發(fā)起用于所述多個驅(qū)動器的一個或多個的垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中所述請求中指示所述N的值。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中所述請求中指示所述N的值。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中在所述請求中指示生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中所述請求中指示所述N的值。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且所述請求中指示生成校驗數(shù)據(jù),填充數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且強制計算校驗數(shù)據(jù)的事件發(fā)生,填充數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且所述請求中指示生成校驗數(shù)據(jù),執(zhí)行垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。根據(jù)本發(fā)明的第四方面的計算機系統(tǒng),其中如果尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),且強制計算校驗數(shù)據(jù)的事件發(fā)生,執(zhí)行垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并生成校驗數(shù)據(jù)。
當連同附圖閱讀時,通過參考后面對示出性的實施例的詳細描述,將最佳地理解本發(fā)明以及優(yōu)選的使用模式和其進一步的目的和優(yōu)點,其中附圖包括:圖1展示了現(xiàn)有技術(shù)中的固態(tài)硬盤的數(shù)據(jù)組織;圖2是根據(jù)本發(fā)明的實施例的存儲設(shè)備的數(shù)據(jù)組織;圖3是根據(jù)本發(fā)明實施例的計算機系統(tǒng)的框圖;圖4是根據(jù)本發(fā)明實施例的訪問多個驅(qū)動器的方法的流程圖;圖5是根據(jù)本發(fā)明進一步實施例的訪問多個驅(qū)動器的方法的流程圖;圖6是根據(jù)本發(fā)明依然進一步實施例的訪問多個驅(qū)動器的方法的流程圖;以及圖7是根據(jù)本發(fā)明實施例的存儲設(shè)備的框圖。
具體實施例方式圖2是根據(jù)本發(fā)明的實施例的存儲設(shè)備的數(shù)據(jù)組織。存儲設(shè)備包括固態(tài)盤200、固
態(tài)盤220......固態(tài)盤260。每個固態(tài)盤可以是具有標準尺寸的3.5,2.5或1.8英寸驅(qū)動器。
固態(tài)盤200可包括閃存芯片201與閃存芯片202。固態(tài)盤220包括閃存芯片221,而固態(tài)盤260包括閃存芯片261。固態(tài)盤200也可包括不同數(shù)量的閃存芯片。以及固態(tài)盤200、固態(tài)盤220與固態(tài)盤260可分別包括不同數(shù)量和/或不同容量的閃存芯片。固態(tài)盤中的閃存芯片可組織為多個通道,以在所使用的接口引腳數(shù)量和多個閃存芯片的并行訪問之間進行取舍。例如,在申請?zhí)枮?01210448894.1、201210449387.X的中國專利申請中提供了多種將閃存芯片組織為通道的方式。作為舉例,閃存芯片201包括多個塊,例如塊O、塊1、塊2和塊3。閃存芯片中也可以包括其他數(shù)量的塊。在每個塊中包括多個頁。對于NAND閃存,以頁為單位進行讀、寫操作,而以塊為單位實施擦除操作,這是由NAND閃存的物理結(jié)構(gòu)決定的。作為舉例,閃存芯片201還包括平面0與平面I。平面0包括塊0與塊2,而平面I包括塊I與塊3。平面0與平面I各自具有頁寄存器,使得位于平面0的塊與位于平面I的塊可以并行操作。閃存芯片可以具有不同數(shù)量的頁。閃存芯片還可以包括一個或多個管芯。根據(jù)本發(fā)明的實施例,固態(tài)盤200的頁211、固態(tài)盤220的頁231與固態(tài)盤260的頁261被分組在一起,組成存儲單元組。在申請?zhí)枮?01310003789.1與201310003898.3的中國專利申請中提供了將來自主機的邏輯地址映射到存儲單元組的方式。存儲單元組中的各個頁被一起操作,其中可以存儲用戶數(shù)據(jù)以及由用戶數(shù)據(jù)產(chǎn)生的校驗數(shù)據(jù)。當存儲單元組中的一個或多個頁損壞時,可基于存儲單元組中的其他頁來恢復損壞的數(shù)據(jù)。例如,存儲單元組可包括N+P個頁,其中N個頁用于存儲用戶數(shù)據(jù),而P個頁用于存儲校驗數(shù)據(jù)。優(yōu)選地,分配存儲單元組,使得當移除固態(tài)盤200、220與260中的一個或多個時,可利用剩余的固態(tài)盤恢復所移除固態(tài)盤中存儲的數(shù)據(jù)。在一個例子中,頁211、頁231與頁261分別在固態(tài)盤200、固態(tài)盤220與固態(tài)盤260中具有相同的物理地址,這樣可以容易地確定組成存儲單元組的各個頁,而無須附加的元數(shù)據(jù)。以這種方式,盤200的芯片201的塊0的頁1、盤220的芯片221的塊0的頁I與盤260的芯片261的塊0的頁I組成另一個存儲單元組。雖然在圖2的實施例中示出了存儲單元組包括3個頁,可以理解,存儲單元組可以具有其他不同數(shù)量的頁。在一個實施例中,存儲單元組中包括來個多個固態(tài)盤(200、220與260)的每一個的頁。在另一個實施例中,存儲單元組中包括來自多個固態(tài)盤的一個或多個的頁。存儲單元組中也可以包括來自一個固態(tài)盤的多個頁。繼續(xù)參照圖2,在一個實施例中,頁215、頁235與頁265組成存儲單元組。頁215、頁235與頁265可具有相同或不同的物理地址,因而需要提供附加的元數(shù)據(jù)來指示頁215、頁235與頁265組成了存儲單元組??梢栽陧?15、頁235與頁265的帶外(Out-Of-Band)數(shù)據(jù)中存儲元數(shù)據(jù),還可以在頁215、頁235與頁265的用戶數(shù)據(jù)區(qū)中存儲元數(shù)據(jù)(相應(yīng)地降低用戶數(shù)據(jù)的存儲容量),還可以在其他頁中存儲元數(shù)據(jù)。由于閃存中的頁可能損壞,利用元數(shù)據(jù)指示組成存儲單元組的多個頁,可以有效地將損壞的頁排除,并利用具有相同或不同物理地址的頁組成存儲單元組,從而提高存儲空間的利用率。圖3是根據(jù)本發(fā)明實施例的計算機系統(tǒng)的框圖。計算機300包括主板310。主板310上布置有中央處理單元(CPU, Central Processing Unit) 312以及擴展卡314。主板310上還可布置有芯片組、存儲器等部件。擴展卡314用于將多個存儲盤耦合到計算機300。擴展卡 314 可通過諸如 PCIE (Peripheral Component Interconnect Express,快速外圍組件互連)、PCI (Peripheral Component Interconnect,外圍組件互連)等多種接口稱合到主板310。擴展卡314可通過多種接口耦合存儲盤,多種接口包括但不限于SATA (SerialAdvanced Technology Attachment,串行高級技術(shù)附件)、USB (Universal Serial Bus,通用串行總線)、PCIE、SCSI (Small Computer Systemlnterface,小型計算機系統(tǒng)接口)、IDE(Integrated Drive Electronics,集成驅(qū)動器電子)等。多個存儲盤包括盤320、322、324和326。擴展卡314可耦合不同數(shù)量的存儲盤。擴展卡314中可包括閃存轉(zhuǎn)換層(FlashTranslation Layer, FTL)部件,用以將基于邏輯地址的存儲盤訪問請求轉(zhuǎn)換為基于物理地址的存儲盤訪問請求。存儲盤可以是固態(tài)盤,固態(tài)盤以閃存芯片作為存儲介質(zhì),固態(tài)盤也適用于其他類型的存儲芯片,例如,相變存儲器、電阻存儲器、鐵電存儲器等。在一個實施例中,主板310中可以不包括擴展卡314,而通過設(shè)置在主板310上的諸如PCIE、IDE、SCS1、和/或SATA等接口,將盤320、322、324和326耦合到主板310。以及,在計算機300的操作系統(tǒng)或應(yīng)用程序中提供閃存轉(zhuǎn)換層軟件,用以將基于邏輯地址的存儲盤訪問請求轉(zhuǎn)換為基于物理地址的存儲盤訪問請求。還可以將閃存轉(zhuǎn)換層部件設(shè)置在CPU、芯片組或其他集成電路中。擴展卡314上可布置有控制電路,用以實施將在圖4-圖6中描述的各操作來控制對盤 320、322、324、326 的訪問??刂齐娐房梢允?FPGA(Field-programmable gate array,現(xiàn)場可編程門陣列)、ASIC (Application Specific Integrated Circuit,應(yīng)用專用集成電路)或者其組合的形式??刂齐娐芬部梢园ㄒ粋€或多個處理器或者控制器。閃存轉(zhuǎn)換層部件可在FPGA、ASIC中以硬件電路形式實現(xiàn),也可采用運行在處理器或控制器中的軟件形式實現(xiàn)。圖4是根據(jù)本發(fā)明實施例的訪問多個驅(qū)動器的方法的流程圖。在步驟400,接收寫請求。寫請求可以來自計算機300的CPU312。寫請求可由運行在計算機300上的操作系統(tǒng)或者應(yīng)用軟件發(fā)出,并指示將數(shù)據(jù)寫入到諸如固態(tài)盤的存儲設(shè)備中。寫請求中可以攜帶或者指示邏輯地址,邏輯地址指示存儲設(shè)備所展現(xiàn)的邏輯地址空間。
在步驟410,獲取物理地址?;趯懻埱螳@得邏輯地址,例如可以從寫請求中提取邏輯地址,也可以基于寫請求中的指示(例如,對存儲邏輯地址的存儲空間的指示,或相對于前一邏輯地址的偏移)來間接提取邏輯地址。接著,通過映射表將邏輯地址轉(zhuǎn)換為物理地址。在進一步的實施例中,多個固態(tài)盤中的多個頁被分組在一起,組成存儲單元組。通過映射表或順序映射方式將邏輯地址轉(zhuǎn)換為用于存儲單元組的地址。對于連續(xù)接收到的寫請求,將其邏輯地址轉(zhuǎn)換為相同的存儲單元組地址,直到填充了存儲單元組中的N個數(shù)據(jù)頁。進而基于存儲單元組的地址獲得物理地址。所得到的物理地址指示了該存儲單元組中的存儲單元。而寫請求或者邏輯地址可以無需維護存儲單元組結(jié)構(gòu)。在步驟420,基于物理地址,將寫請求所指示的數(shù)據(jù)寫入存儲設(shè)備。在一個實施例中,為每個固態(tài)盤提供寫隊列,以先進先出的方式基于物理地址將數(shù)據(jù)寫入存儲設(shè)備。在另一個實施例中,為多個或所有固態(tài)盤提供共享的寫隊列。在進一步的實施例中,存儲單元組中包括多個頁,而寫入請求對對應(yīng)的數(shù)據(jù)少于存儲單元組的容量。則還緩存寫入數(shù)據(jù),用以為對應(yīng)的存儲單元組生成校驗數(shù)據(jù)。在一個實施例中,還向存儲設(shè)備寫入指示存儲單元組信息的元數(shù)據(jù)。在步驟430,判斷是否生成校驗數(shù)據(jù)。若否,則返回步驟400以接收其他的寫請求。若是,則在步驟440計算校驗數(shù)據(jù)?;贜個頁的用戶數(shù)據(jù)計算得到P個頁的校驗數(shù)據(jù)。例如,可采用奇偶校驗計算校驗數(shù)據(jù),也可以采用所有領(lǐng)域慣用的其他校驗數(shù)據(jù)生成方式。在一個實施例中,計算校驗數(shù)據(jù)之前,臨時存儲對應(yīng)于一個存儲單元組的用戶數(shù)據(jù),而在計算校驗數(shù)據(jù)后,可釋放臨時存儲用戶數(shù)據(jù)的存儲區(qū)。還基于存儲單元組地址,確定用于存儲P個頁的校驗數(shù)據(jù)的物理地址。在步驟450,基于物理地址,將校驗數(shù)據(jù)寫入存儲設(shè)備??商峁戧犃?,以先進先出方式將校驗數(shù)據(jù)寫入存儲設(shè)備。在一個實施例中,還向存儲設(shè)備寫入指示存儲單元組信息的元數(shù)據(jù)。圖5是根據(jù)本發(fā)明進一步實施例的訪問多個驅(qū)動器的方法的流程圖。圖5中所示出的流程圖,相對于圖4中的流程圖,進一步展示了基于寫請求所對應(yīng)的邏輯地址獲取物理地址的多種方式。在步驟500,接收寫請求。通過步驟511與步驟512,展示了一種獲取物理地址的方式。在步驟511,分配多個固態(tài)盤之一??赏ㄟ^多種方式分配固態(tài)盤。例如,可通過輪轉(zhuǎn)方式分配固態(tài)盤;可通過查詢固態(tài)盤的狀態(tài),并選擇處于空閑狀態(tài)的固態(tài)盤的方式分配固態(tài)盤;還可通過比較對應(yīng)于固態(tài)盤的寫入隊列的長度,選擇寫入隊列較短的固態(tài)盤的方式分配固態(tài)盤。在步驟512,針對選定的固態(tài)盤,將邏輯地址映射到指示該固態(tài)盤的物理地址。物理地址可指示該固態(tài)盤的頁的物理位置。在一個實施例中,為連續(xù)的多個寫請求分配的來自一個或多個固態(tài)盤的多個頁組成存儲單元組。存儲單元組的N個頁可來自N個固態(tài)盤的每一個,N個頁可位于各固態(tài)盤的相同位置或不同位置。存儲單元組的N個頁也可以來自一個或少于N個固態(tài)盤。通過步驟513與步驟514,展示了又一種獲取物理地址的方式。在步驟513,分配多個固態(tài)盤之一??赏ㄟ^多種方式分配固態(tài)盤。例如,可通過輪轉(zhuǎn)方式分配固態(tài)盤;可通過查詢固態(tài)盤的狀態(tài),并選擇處于空閑狀態(tài)的固態(tài)盤的方式分配固態(tài)盤;還可通過比較對應(yīng)于固態(tài)盤的寫入隊列的長度,選擇寫入隊列較短的固態(tài)盤的方式分配固態(tài)盤。在步驟514,針對選定的固態(tài)盤,將該固態(tài)盤的寫指針作為要寫入數(shù)據(jù)的物理地址,并遞增該寫指針。以此方式,每個固態(tài)盤具有用于其自身的寫指針,寫指針指示了要寫入數(shù)據(jù)的位置,使得在一個固態(tài)盤上的連續(xù)的寫操作可在該固態(tài)盤的連續(xù)的物理地址上進行,進而可降低在擦除均衡過程中所引起的寫放大效應(yīng),從而提高存儲設(shè)備的使用壽命。物理地址可指示該固態(tài)盤的頁的物理位置。在一個實施例中,為連續(xù)的多個寫請求分配的來自一個或多個固態(tài)盤的多個頁組成存儲單元組。存儲單元組的N個頁可來自N個固態(tài)盤的每一個,N個頁可位于各固態(tài)盤的相同位置或不同位置。存儲單元組的N個頁也可以來自一個或少于N個固態(tài)盤。通過步驟515與步驟516,展示了又一種獲取物理地址的方式。在步驟515,分配存儲單元組。存儲單元組包括多個頁。構(gòu)成存儲單元在的多個頁來自多個固態(tài)盤。例如,存儲單元組可包括N+P個頁,N個頁用于存儲用戶數(shù)據(jù),而P個頁用于存儲校驗數(shù)據(jù)。N+P個頁來自N+P個固態(tài)盤,每個固態(tài)盤提供一個頁。在另一個實施例中,N+P個頁來自少于N+P個固態(tài)盤。在一個實施例中,包括多個固態(tài)盤的存儲設(shè)備初始化期間,確定存儲單元組的數(shù)量以及存儲單元組到物理頁的映射方式。存儲單元組的多個頁可位于多個固態(tài)盤的相同位置或不同位置。優(yōu)選地,分配存儲單元組,使得在一個固態(tài)盤上的連續(xù)的寫操作可在該固態(tài)盤的連續(xù)的物理地址上進行。例如,若當前分配的存儲單元組的一個頁具有物理地址P(i),當分配下一存儲單元組時,選擇物理地址P(i+1)所對應(yīng)的存儲單元組。在另一個例子中,存儲單元組K的N+P個頁來自N+P個固態(tài)盤的每一個,且該N+P個頁具有相同的物理地址P(K),而存儲單元組K+1的每個頁具有相同的物理地址P (K+1);則在分配存儲單元K之后,分配存儲單元組K+1。在步驟516,針對分配的存儲單元組,將該存儲單元組的寫指針作為要寫入數(shù)據(jù)的物理地址,并遞增該寫指針。以此方式,當前存儲單元組具有用于其自身的寫指針,寫指針指示了要寫入數(shù)據(jù)的位置。通過步驟517與步驟518,展示了又一種獲取物理地址的方式。在步驟517,分配存儲單元組。在步驟518,針對分配的存儲單元組,選擇存儲單元組中尚未被分配的物理頁,將該物理頁的地址作為所分配的物理地址??赏ㄟ^多種方式選擇物理單元組中的尚未被分配物理頁。例如,可基于物理單元組中尚未被分配的多個物理頁所對應(yīng)的多個磁盤的空閑狀態(tài)來選擇物理頁;還可以基于存儲單元組中尚未被分配的多個物理頁所對應(yīng)的多個磁盤的寫隊列長度來選擇物理頁。在步驟520,基于物理地址,將寫請求所指示的數(shù)據(jù)寫入存儲設(shè)備。在步驟530,判斷是否生成校驗數(shù)據(jù)。若否,則返回步驟500以接收其他的寫請求。若是,則在步驟540計算校驗數(shù)據(jù)。還為校驗數(shù)據(jù)確定物理地址。例如,對于存儲單元組中的用戶數(shù)據(jù),為相對應(yīng)的校驗數(shù)據(jù)分配屬于該存儲單元組的P個頁的物理地址,該P個頁用于存儲校驗數(shù)據(jù)。又例如,對于用戶數(shù)據(jù)和基于用戶數(shù)據(jù)所生成的校驗數(shù)據(jù),分配物理地址,并使得該用戶數(shù)據(jù)與校驗數(shù)據(jù)存儲于同一存儲單元組。在步驟550,基于物理地址,將校驗數(shù)據(jù)寫入存儲設(shè)備。圖6是根據(jù)本發(fā)明依然進一步實施例的訪問多個驅(qū)動器的方法的流程圖。圖6中所示出的流程圖,相對于圖4中的流程圖,進一步展示了確定是否生成校驗數(shù)據(jù)的多種方式。一般而言,當接收到一個存儲單元組的全部用戶數(shù)據(jù)后,基于這些用戶數(shù)據(jù)生成校驗數(shù)據(jù)。在諸如關(guān)機或掉電等其他一些情況下,也需要生成校驗數(shù)據(jù)。在步驟600,接收寫請求。在步驟610,獲取物理地址。在步驟620,基于物理地址,將寫請求所指示的數(shù)據(jù)寫入存儲設(shè)備。步驟632展示了一種獲取確定是否生成校驗數(shù)據(jù)的方式。在步驟632,確定是否已經(jīng)接收到用于一個存儲單元組的全部用戶數(shù)據(jù)。若否,則返回步驟600以接收其他的寫請求。若是,則在步驟640計算校驗數(shù)據(jù)。一個存儲單元組的全部用戶數(shù)據(jù)可以是例如將存儲在該存儲單元組中的N個頁。在一個實施例中,在順序接收的多個寫請求所對應(yīng)的數(shù)據(jù)達到N個頁的大小時,確定已經(jīng)接收到用于一個存儲單元組的全部用戶數(shù)據(jù)。在另一個實施例中,存儲單元組中的N個頁已經(jīng)被分配時,確定已經(jīng)接收到用于一個存儲單元組的全部用戶數(shù)據(jù)。步驟634展示了另一種獲取確定是否生成校驗數(shù)據(jù)的方式。在步驟634,判斷是否已經(jīng)接收了 m (〈N)頁數(shù)據(jù),尚未接收到用于一個存儲單元組的全部用戶數(shù)據(jù);但是出現(xiàn)了要求強制計算校驗數(shù)據(jù)的事件。強制計算校驗數(shù)據(jù)可能是由于計算機掉電、關(guān)機等意外情況,還可以是接收到操作系統(tǒng)或應(yīng)用程序發(fā)出的沖刷緩沖區(qū)請求或者m頁數(shù)據(jù)已經(jīng)緩存了太長時間。如不計算校驗數(shù)據(jù),所臨時存儲的m頁數(shù)據(jù)將丟失,在存儲設(shè)備上也無法得到完成的存儲單元組。若步驟634的判斷為否,則返回步驟600以接收其他的寫請求;若為是,則在步驟640計算校驗數(shù)據(jù)。以及為計算校驗數(shù)據(jù),還使用預定數(shù)據(jù)值(例如,O、I或者其他預定值)填充Ν-m頁數(shù)據(jù),使得接收到的m頁數(shù)據(jù)和填充的N-m頁數(shù)據(jù)構(gòu)成了 N頁數(shù)據(jù),并可在步驟640中計算P頁校驗數(shù)據(jù)。還可以在存儲設(shè)備或固態(tài)盤上執(zhí)行垃圾回收操作,使用垃圾回收操作中產(chǎn)生的寫請求填充N-m頁數(shù)據(jù)。在另一個實施例中,接收的數(shù)據(jù)可能不是按頁邊界對齊的,相應(yīng)地,所填充的數(shù)據(jù)也可以不是按頁邊界對齊的。步驟636展示了另一種獲取確定是否生成校驗數(shù)據(jù)的方式。在步驟636,判斷是否已經(jīng)接收了 m (〈N)頁數(shù)據(jù),尚未接收到用于一個存儲單元組的全部用戶數(shù)據(jù);但是在寫請求中指示了要寫入的數(shù)據(jù)只有m頁。在寫請求中指示了要寫入的數(shù)據(jù)只有m頁,意味著在來自操作系統(tǒng)或應(yīng)用程序的寫入操作已經(jīng)完成,并暗示著在將來一段時間內(nèi)可能沒有后續(xù)的寫請求;也可以意味著操作系統(tǒng)或應(yīng)用程序預測在將來一段時間不大可能出現(xiàn)寫請求。在此情況下,繼續(xù)臨時存儲m頁數(shù)據(jù)會增加耗電,并因存儲空間被占用而降低存儲設(shè)備的性能。若步驟636的判斷為否,則返回步驟600以接收其他的寫請求;若為是,則在步驟640計算校驗數(shù)據(jù)。以及為計算校驗數(shù)據(jù),還使用預定數(shù)據(jù)值(例如,0、1或者其他預定值)填充N-m頁數(shù)據(jù),使得接收到的m頁數(shù)據(jù)和填充的N-m頁數(shù)據(jù)構(gòu)成了 N頁數(shù)據(jù),并可在步驟640中計算P頁校驗數(shù)據(jù)。還可以在存儲設(shè)備或固態(tài)盤上執(zhí)行垃圾回收操作,使用垃圾回收操作中產(chǎn)生的寫請求填充N-m頁數(shù)據(jù)。在另一個實施例中,接收的數(shù)據(jù)可能不是按頁邊界對齊的,相應(yīng)地,所填充的數(shù)據(jù)也可以不是按頁邊界對齊的。步驟638展示了另一種獲取確定是否生成校驗數(shù)據(jù)的方式。在步驟638,判斷是否已經(jīng)接收了 m (〈N)頁數(shù)據(jù),尚未接收到用于一個存儲單元組的全部用戶數(shù)據(jù);但是要在存儲設(shè)備上執(zhí)行垃圾回收操作。若否,則返回步驟600以接收其他的寫請求;若是,則使用垃圾回收操作中產(chǎn)生的寫請求填充N-m頁數(shù)據(jù),并在步驟640中計算P頁校驗數(shù)據(jù)。在另一個實施例中,接收的數(shù)據(jù)可能不是按頁邊界對齊的,相應(yīng)地,所填充的數(shù)據(jù)也可以不是按頁邊界對齊的。在步驟650,基于物理地址,將校驗數(shù)據(jù)寫入存儲設(shè)備。通過上面描述的本發(fā)明的實施例,可將將數(shù)據(jù)同時寫入到存儲設(shè)備的多個固態(tài)盤,提高了寫操作的并行度。并且,通過存儲單元組提供對數(shù)據(jù)額外的保護,提高了存儲設(shè)備的可靠性。圖7是根據(jù)本發(fā)明實施例的存儲設(shè)備的框圖。上面在圖3中已經(jīng)公開了根據(jù)本發(fā)明實施例的計算機系統(tǒng)的框圖。而圖7的實施例為通過網(wǎng)絡(luò)提供存儲服務(wù)的存儲設(shè)備。存儲設(shè)備700包括背板710。背板710上布置有控制器714。背板710上還可布置有芯片組、存儲器等部件。控制器714用于將多個存儲盤耦合到存儲設(shè)備700??刂破?14可通過多種接口耦合存儲盤,多種接口包括但不限于SATA7、USB7、PC1、PCIE、SCSI7、IDE7等。控制器714還可通過芯片組或者擴展卡間接耦合到存儲盤。多個存儲盤包括盤720、722、724和726??刂破?14可耦合不同數(shù)量的存儲盤??刂破?14中可包括閃存轉(zhuǎn)換層(FlashTranslation Layer, FTL)部件,用以將基于邏輯地址的存儲盤訪問請求轉(zhuǎn)換為基于物理地址的存儲盤訪問請求。存儲盤可以是固態(tài)盤,固態(tài)盤以閃存芯片作為存儲介質(zhì),固態(tài)盤也適用于其他類型的存儲芯片,例如,相變存儲器、電阻存儲器、鐵電存儲器等。在一個實施例中,在存儲設(shè)備700的操作系統(tǒng)或其他程序中提供閃存轉(zhuǎn)換層軟件,用以將基于邏輯地址的存儲盤訪問請求轉(zhuǎn)換為基于物理地址的存儲盤訪問請求。還可以將閃存轉(zhuǎn)換層部件設(shè)置在CPU、芯片組或其他集成電路中??刂破?14,可用以實施上面在圖4-圖6中描述的各操作來控制對盤720、722、724、726的訪問??刂破?14可以是FPGA、ASIC或者其組合的形式??刂破?14也可以包括一個或多個處理器或者控制器。閃存轉(zhuǎn)換層部件可在FPGA、ASIC中以硬件電路形式實現(xiàn),也可采用運行在處理器或控制器中的軟件形式實現(xiàn)。背板710上還布置有網(wǎng)絡(luò)適配器730、732。提供兩個網(wǎng)絡(luò)適配器,以提高存儲設(shè)備的可靠性。也可以提供一個或其他數(shù)量的網(wǎng)絡(luò)適配器。通過網(wǎng)絡(luò)適配器730、732,存儲設(shè)備700耦合到網(wǎng)絡(luò)734。網(wǎng)絡(luò)734可以是以太網(wǎng)、PCIE網(wǎng)或光纖通道網(wǎng)絡(luò)??蛻舳?40、742也耦合到網(wǎng)絡(luò)734,并通過網(wǎng)絡(luò)734訪問存儲設(shè)備700。在其他實施例中,客戶端740、742可不經(jīng)由網(wǎng)絡(luò)734而直接耦合到網(wǎng)絡(luò)適配器730和/或732。已經(jīng)為了示出和描述的目的而展現(xiàn)了對本發(fā)明的描述,并且不旨在以所公開的形式窮盡或限制本發(fā)明。對所屬領(lǐng)域技術(shù)人員,許多調(diào)整和變化是顯而易見的。
權(quán)利要求
1.一種存儲設(shè)備,包括網(wǎng)絡(luò)適配器、控制器以及耦合到所述控制器的多個驅(qū)動器; 所述網(wǎng)絡(luò)適配器將所述存儲設(shè)備耦合到網(wǎng)絡(luò),并接收來自客戶端的訪問請求, 所述訪問請求指示將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址; 所述控制器為所述第一邏輯地址生成第一物理地址,并生成寫入命令發(fā)送給所述多個驅(qū)動器之一,其指示將所述第一數(shù)據(jù)寫入所述第一物理地址所指示的存儲位置; 所述控制器還確定是否生成校驗數(shù)據(jù),若是,基于所述第一數(shù)據(jù)生成第一校驗數(shù)據(jù),并生成第二寫入命令發(fā)送給所述多個驅(qū)動器之一,其指示將所述第一校驗數(shù)據(jù)寫入第二物理地址所指示的存儲位置。
2.根據(jù)權(quán)利要求1所述的存儲設(shè)備,還包括: 所述控制器將元數(shù)據(jù)存儲于所述多個驅(qū)動器中的一個或多個,所述元數(shù)據(jù)指示所述第一物理地址、所述第二物理地址具有關(guān)聯(lián)關(guān)系。
3.根據(jù)權(quán)利要求1所述的存儲設(shè)備,其中所述控制器通過選擇所述多個驅(qū)動器中的第一驅(qū)動器來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所述第一驅(qū)動器中的存儲位置。
4.根據(jù)權(quán)利要求3所述的存儲設(shè)備,其中在所述控制器中為每個驅(qū)動器維護寫指針,寫指針指示寫入數(shù)據(jù)的物理地址;所述控制器還基于所選擇的第一驅(qū)動器的寫指針生成所述第一物理地址,并使所述第一驅(qū)動器的寫指針遞增。
5.根據(jù)權(quán)利要求1所述的存儲設(shè)備,其中所述控制器響應(yīng)于接收將第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址的請求,分配存儲單元組,所述存儲組包括多個存儲單元,所述多個存儲單元中的每個位于所述多個驅(qū)動器之一。
6.根據(jù)權(quán)利要求5所述的存儲設(shè)備,其中所述控制器為存儲單元組維護寫指針,寫指針指示所述存儲單元組中的一個存儲單元,所述控制器基于所分配的存儲單元組的寫指針生成所述第一物理地址,并使所分配的存儲單元組的寫指針指示所述存儲單元組中的另一個存儲單元。
7.根據(jù)權(quán)利要求5所述的存儲設(shè)備,其中響應(yīng)于分配存儲單元組,所述控制器查詢所述存儲單元組的各個存儲單元所在的多個驅(qū)動器的狀態(tài),并基于所述狀態(tài)從所述存儲單元組中選擇一個存儲單元來為所述第一邏輯地址生成第一物理地址,所述第一物理地址指示所選擇的存儲單元。
8.根據(jù)權(quán)利要求1所述的存儲設(shè)備,其中如果所述存儲設(shè)備已經(jīng)收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述控制器確定生成校驗數(shù)據(jù),N是自然數(shù)。
9.根據(jù)權(quán)利要求1或8所述的存儲設(shè)備,其中如果所述存儲設(shè)備尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述控制器填充預定數(shù)據(jù)來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。
10.根據(jù)權(quán)利要求1或8所述的存儲設(shè)備,其中如果所述存儲設(shè)備尚未收到用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),則所述控制器發(fā)起用于所述多個驅(qū)動器的一個或多個的垃圾回收操作來形成用于生成校驗數(shù)據(jù)的N個數(shù)據(jù),并確定生成校驗數(shù)據(jù)。
全文摘要
提供了具有多個固態(tài)盤的存儲設(shè)備。該存儲設(shè)備包括網(wǎng)絡(luò)適配器、控制器以及耦合到所述控制器的多個驅(qū)動器;所述網(wǎng)絡(luò)適配器將所述存儲設(shè)備耦合到網(wǎng)絡(luò),并接收來自客戶端的訪問請求,所述訪問請求指示第一數(shù)據(jù)寫入用于所述存儲設(shè)備的第一邏輯地址;所述控制器為所述第一邏輯地址生成第一物理地址,并生成寫入命令發(fā)送給所述多個驅(qū)動器之一,其指示將所述第一數(shù)據(jù)寫入所述第一物理地址;所述控制器還確定是否生成校驗數(shù)據(jù),若是,基于所述第一數(shù)據(jù)生成第一校驗數(shù)據(jù),并生成第二寫入命令發(fā)送給所述多個驅(qū)動器之一,其指示將所述第一校驗數(shù)據(jù)寫入第二物理地址。本發(fā)明解決了固態(tài)盤形成的RAID存儲設(shè)備中寫放大問題,延長了存儲設(shè)備的使用壽命。
文檔編號G06F11/10GK103176858SQ20131007707
公開日2013年6月26日 申請日期2013年3月11日 優(yōu)先權(quán)日2013年3月11日
發(fā)明者殷雪冰, 路向峰 申請人:北京憶恒創(chuàng)源科技有限公司