本發(fā)明的示例性實(shí)施例涉及一種檢測(cè)數(shù)據(jù)的無(wú)記載損壞(silent corruption)的方法和系統(tǒng)。
背景技術(shù):
諸如閃存型SSD的傳統(tǒng)SSD(固態(tài)驅(qū)動(dòng)器、裝置或盤(pán))在塊中存儲(chǔ)數(shù)據(jù)。每個(gè)塊包括一定數(shù)量的頁(yè)。SSD使用邏輯塊地址(LBA)線性編址。映射表將邏輯地址或虛擬地址映射到物理地址。映射表將對(duì)數(shù)據(jù)的請(qǐng)求中指定的地址有效地翻譯成SSD上所述數(shù)據(jù)的正確的物理位置。
當(dāng)存儲(chǔ)在SSD的塊中的數(shù)據(jù)的現(xiàn)有版本被更新時(shí),數(shù)據(jù)的新的(更新的)版本被寫(xiě)入到不同的塊,數(shù)據(jù)的舊的(現(xiàn)有的)版本在第一塊中保留不變。映射表在存儲(chǔ)數(shù)據(jù)的新的版本時(shí)更新,使得數(shù)據(jù)的當(dāng)前的(最近的)版本的合適的位置可以正確地被識(shí)別。直到第一塊中的數(shù)據(jù)被其它新數(shù)據(jù)擦除和/或取代(這在一段時(shí)間內(nèi)不會(huì)發(fā)生)否則它將保留在第一塊中。
使用各種技術(shù)在SSD中維持?jǐn)?shù)據(jù)完整性。糾錯(cuò)碼(ECC)防止由于硬件錯(cuò)誤造成的讀取錯(cuò)誤。循環(huán)冗余校驗(yàn)(CRC)確保返回的數(shù)據(jù)在從SSD讀取時(shí)與被寫(xiě)入到SSD的數(shù)據(jù)一樣。
其它的技術(shù)嘗試確保從正確位置檢索到數(shù)據(jù)并且確保數(shù)據(jù)的當(dāng)前版本被檢索,即,在上面的示例中,采用技術(shù)來(lái)幫助確保從第二塊檢索到數(shù)據(jù)的當(dāng)前版本而不是第一塊中的數(shù)據(jù)的舊版本。這些技術(shù)對(duì)于大部分情況是有效的但是不能檢測(cè)被稱(chēng)為“無(wú)記載損壞”的一種類(lèi)型的數(shù)據(jù)損壞。在存在無(wú)記載損壞的情況下,可能不能檢測(cè)到數(shù)據(jù)完整性的損失,所以數(shù)據(jù)可能看起開(kāi)是有效的而實(shí)際上不是。
更具體地,可能存在被稱(chēng)為軟錯(cuò)誤或單粒子翻轉(zhuǎn)(SEU)的稀少事件,這些稀少事件會(huì)在存儲(chǔ)新版本的數(shù)據(jù)時(shí)防止映射表正確地更新。例如,SEU可以是中斷或干擾更新處理的宇宙事件或宇宙射線的結(jié)果。
如果映射表沒(méi)有正確地更新,它可能錯(cuò)誤地指向一組數(shù)據(jù)的先前的版本或現(xiàn)在過(guò)時(shí)的版本,或者它可以指向已經(jīng)被擦除的位置或包含與先前存儲(chǔ)在該位置處的數(shù)據(jù)無(wú)關(guān)的不同的數(shù)據(jù)的位置。因此,對(duì)特定組的數(shù)據(jù)的請(qǐng)求將被映射到不正確的位置,將讀取并返回在所述位置處的數(shù)據(jù)而不是實(shí)際上需要的數(shù)據(jù)。類(lèi)似CRC的技術(shù)將不能檢測(cè)到不正確的數(shù)據(jù)正在被返回,因?yàn)镃RC將指示返回的數(shù)據(jù)是正確的而將不能指示返回的數(shù)據(jù)不是實(shí)際想要的數(shù)據(jù)。因此,用戶(hù)(例如,主機(jī)或應(yīng)用程序)將使用返回的數(shù)據(jù),不能意識(shí)到數(shù)據(jù)不是想要的數(shù)據(jù)。這是上面被稱(chēng)為無(wú)記載損壞的所述類(lèi)型的數(shù)據(jù)損壞。
例如,可以在每次數(shù)據(jù)被更新時(shí)通過(guò)產(chǎn)生感興趣的數(shù)據(jù)的冗余組(例如。多達(dá)三組)來(lái)檢測(cè)無(wú)記載損壞。當(dāng)將使用數(shù)據(jù)時(shí),可以讀取并比較兩組數(shù)據(jù);如果它們不匹配,那么可以使用第三組來(lái)確定所述其它兩組數(shù)據(jù)中的哪組是當(dāng)前的。然而,這樣的方法極大地增加存儲(chǔ)數(shù)據(jù)所需要的存儲(chǔ)器資源,數(shù)據(jù)的組的額外的讀寫(xiě)以及比較增加處理資源和帶寬的負(fù)擔(dān),尤其是考慮到作為數(shù)據(jù)收集和存儲(chǔ)的發(fā)展中的副產(chǎn)品正在變得更加常見(jiàn)的大量事務(wù)和非常大的數(shù)據(jù)組(有時(shí)被稱(chēng)為“大數(shù)據(jù)”)。
技術(shù)實(shí)現(xiàn)要素:
在根據(jù)本發(fā)明的實(shí)施例中,接收包括第一數(shù)據(jù)以及使用第一數(shù)據(jù)而導(dǎo)出的第二數(shù)據(jù)的編碼信息。第一數(shù)據(jù)是感興趣的數(shù)據(jù)(需要保護(hù)并維持其準(zhǔn)確性和完整性的數(shù)據(jù))。第二數(shù)據(jù)可以用來(lái)確定第一數(shù)據(jù)的準(zhǔn)確性或有效性。第一數(shù)據(jù)可以在下文中僅被稱(chēng)為“數(shù)據(jù)”,第二數(shù)據(jù)可以在下文中被稱(chēng)為“摘要”(digest)以將其與感興趣的數(shù)據(jù)區(qū)分開(kāi)。在實(shí)施例中,摘要是附加到數(shù)據(jù)并包括可用來(lái)驗(yàn)證數(shù)據(jù)的有效性的監(jiān)視值(guard value)的數(shù)據(jù)完整性擴(kuò)展。
數(shù)據(jù)存儲(chǔ)在具有第一地址的第一存儲(chǔ)器位置中,與所述數(shù)據(jù)有關(guān)的摘要存儲(chǔ)在具有第二地址的第二存儲(chǔ)器位置中。在實(shí)施例中,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置在單個(gè)物理裝置(例如,同一個(gè)SSD)上。在另一個(gè)實(shí)施例中,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置在不同的物理裝置(例如,不同的SSD)上。在后者的實(shí)施例中,不同的物理裝置可以是同一計(jì)算機(jī)系統(tǒng)的組件,或者它們可以是不同的計(jì)算機(jī)系統(tǒng)的組件。
產(chǎn)生并存儲(chǔ)用來(lái)確定第一地址/存儲(chǔ)器位置的第一信息,產(chǎn)生并存儲(chǔ)用來(lái)確定第二地址/存儲(chǔ)器位置的第二信息。在實(shí)施例中,第一信息包括映射表中的第一入口,第二信息包括同一映射表中的第二入口。在另一個(gè)實(shí)施例中,第一信息包括第一映射表中的入口,第二信息包括第二映射表中的入口??梢允褂貌煌牟僮骱?或在不同的時(shí)刻產(chǎn)生第一信息和第二信息以實(shí)際上消除單粒子翻轉(zhuǎn)(single event upset)或軟錯(cuò)誤(soft error)將影響兩條信息的可能性。在實(shí)施例中,第一信息與第二信息之間有確定的關(guān)系,使用第一信息(例如,第一入口)存取數(shù)據(jù)也造成使用第二信息(例如,第二入口)存取與所述數(shù)據(jù)有關(guān)的摘要。
因此,數(shù)據(jù)以及與所述數(shù)據(jù)有關(guān)的摘要存儲(chǔ)在不同的物理存儲(chǔ)器位置(在同一存儲(chǔ)裝置上或在不同存儲(chǔ)裝置上)中,使用各自的信息條(例如,使用一個(gè)映射表中用于數(shù)據(jù)的入口以及同一映射表中或不同的映射表中用于摘要的入口)來(lái)定位數(shù)據(jù)及其摘要。如上所述,可以分別產(chǎn)生(存儲(chǔ))用來(lái)定位數(shù)據(jù)的信息以及用來(lái)定位與數(shù)據(jù)有關(guān)的摘要的信息,所以單粒子翻轉(zhuǎn)或軟錯(cuò)誤影響兩條信息的可能性如果不是零的話是很小的。無(wú)論如何,如果一條信息或另一條信息不正確(例如,如果一個(gè)入口或另一個(gè)入口沒(méi)有正確地加入映射表),將防止無(wú)記載損壞。例如,如果沒(méi)有更新用于數(shù)據(jù)的映射入口但更新了用于與數(shù)據(jù)有關(guān)的摘要的映射入口,那么可以讀取數(shù)據(jù)的過(guò)時(shí)的版本,但是將讀取摘要的當(dāng)前版本。在這種情況下,數(shù)據(jù)及其摘要將不匹配,所以將不使用數(shù)據(jù)。
因此根據(jù)本發(fā)明的實(shí)施例可以例如用來(lái)解決諸如但不限于SSD的裝置中的無(wú)記載損壞的問(wèn)題。通過(guò)使用用于感興趣的數(shù)據(jù)及其摘要的各自的位置信息(例如,映射入口)來(lái)分別存儲(chǔ)感興趣的數(shù)據(jù)及其摘要,有效且優(yōu)雅地實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例并且不必增加額外的存儲(chǔ)裝置以及基本不對(duì)現(xiàn)有存儲(chǔ)器、處理和帶寬資源增加負(fù)擔(dān)。例如,根據(jù)本發(fā)明的實(shí)施例不依賴(lài)于存儲(chǔ)和比較數(shù)據(jù)的多個(gè)備份或其摘要以檢測(cè)無(wú)記載損壞。這反過(guò)來(lái)可以降低功耗和操作成本。
在讀了下面在各種附圖中示出的實(shí)施例的詳細(xì)的描述之后,本領(lǐng)域的普通技術(shù)人員將意識(shí)到本發(fā)明的各種實(shí)施例的這些和其它的目標(biāo)及優(yōu)勢(shì)。
附圖說(shuō)明
附圖示出了本公開(kāi)的實(shí)施例并且與具體實(shí)施方式一起用來(lái)解釋本公開(kāi)的原理,附圖并入且形成本說(shuō)明書(shū)的一部分并且在附圖中同樣的標(biāo)號(hào)描述同樣的元件。
圖1是根據(jù)其可實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)裝置的示例的框圖。
圖2是由根據(jù)本發(fā)明的實(shí)施例中的存儲(chǔ)裝置接收的編碼數(shù)據(jù)的示例。
圖3是根據(jù)其可實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的設(shè)備的框圖。
圖4是根據(jù)其可實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)或網(wǎng)絡(luò)的框圖。
圖5是示出在根據(jù)本發(fā)明的實(shí)施例中用來(lái)存儲(chǔ)數(shù)據(jù)的方法的示例的框圖。
圖6是示出在根據(jù)本發(fā)明的實(shí)施例中用來(lái)存儲(chǔ)數(shù)據(jù)的另一種方法的示例的框圖。
圖7A和圖7B示出在根據(jù)本發(fā)明的實(shí)施例中的映射表的使用的示例。
圖8A和圖8B示出在根據(jù)本發(fā)明的實(shí)施例中兩個(gè)映射表的使用的示例。
圖9和圖10是在根據(jù)本發(fā)明的實(shí)施例中用來(lái)存儲(chǔ)并存取數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)方法的示例的流程圖。
具體實(shí)施方式
現(xiàn)在將詳細(xì)參照本公開(kāi)的各種實(shí)施例,在附圖中示出了本公開(kāi)的示例。當(dāng)結(jié)合這些實(shí)施例描述時(shí),將理解的是,它們不意圖將本公開(kāi)限制于這些實(shí)施例。相反,本公開(kāi)意圖覆蓋可以包括在如由權(quán)利要求所限定的本公開(kāi)的精神和范圍內(nèi)的替代物、修改和等同物。此外,在本公開(kāi)的下面詳細(xì)的描述中,闡述了許多具體的細(xì)節(jié)以提供對(duì)本公開(kāi)的徹底的理解。然而,將理解的是,可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐本公開(kāi)。在其它實(shí)例中,沒(méi)有詳細(xì)地描述公知的方法、程序、組件和電路以免不必要地模糊本公開(kāi)的方面。
下面的具體實(shí)施方式的一些部分呈現(xiàn)在計(jì)算機(jī)存儲(chǔ)器內(nèi)對(duì)數(shù)據(jù)比特進(jìn)行操作的程序、邏輯塊、處理和其他符號(hào)表示方面。這些描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員使用以向該領(lǐng)域的其他技術(shù)人員有效地傳達(dá)他們工作的實(shí)質(zhì)的手段。在本應(yīng)用中,程序、邏輯塊或進(jìn)程等被設(shè)計(jì)為導(dǎo)致期望的結(jié)果的步驟或指令的自洽序列。步驟是利用關(guān)于物理量的物理操作的那些步驟。通常,雖然不是必須的,但是這些量采用能夠在計(jì)算機(jī)系統(tǒng)中存儲(chǔ)、傳輸、組合、比較以及另外操縱的電信號(hào)或磁信號(hào)的形式。主要出于普遍使用的原因,已經(jīng)證明有時(shí)將這些信號(hào)稱(chēng)為事務(wù)、比特、值、要素、符號(hào)、字符、樣品或像素等是方便的。
然而,應(yīng)該記住的是,所有的這些術(shù)語(yǔ)和相似的術(shù)語(yǔ)與適當(dāng)?shù)奈锢砹坑嘘P(guān),并且僅是應(yīng)用于這些量的方便的標(biāo)簽。除非如通過(guò)下面的討論明顯的另外特別指出,否則理解的是,在整個(gè)本公開(kāi)中,利用諸如“接收”、“存儲(chǔ)”、“讀取”、“寫(xiě)入”、“索引”、“映射”、“存取”、“使用”、“確定”或“生成”等的術(shù)語(yǔ)的討論指設(shè)備或計(jì)算機(jī)系統(tǒng)或類(lèi)似的電子計(jì)算裝置或處理器的動(dòng)作和進(jìn)程(例如,圖9的流程圖900和圖10的流程圖1000)。計(jì)算機(jī)系統(tǒng)或類(lèi)似電子計(jì)算裝置操縱并轉(zhuǎn)換表示為在存儲(chǔ)器、寄存器或其它這種信息存儲(chǔ)、傳輸或顯示裝置內(nèi)的物理(電子)量的數(shù)據(jù)。
可以在由一個(gè)或更多個(gè)計(jì)算機(jī)或其它裝置執(zhí)行的以諸如程序模塊的計(jì)算機(jī)可讀存儲(chǔ)媒介的形式存在的計(jì)算機(jī)可執(zhí)行指令的一般情況下討論這里描述的實(shí)施例。以示例的方式,而非限制性的,計(jì)算機(jī)可讀存儲(chǔ)媒介可以包括非瞬時(shí)性計(jì)算機(jī)存儲(chǔ)媒介和通信媒介。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。根據(jù)在各種實(shí)施例中的需要,可以組合或分散程序模塊的功能。
計(jì)算機(jī)存儲(chǔ)媒介包括在用于諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的信息的存儲(chǔ)的以任意方法或技術(shù)實(shí)現(xiàn)的易失性媒介和非易失性媒介、可移動(dòng)媒介和非可移動(dòng)媒介。計(jì)算機(jī)存儲(chǔ)媒介包括但不限于隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程ROM(EEPROM)、閃存或其它存儲(chǔ)器技術(shù)、光盤(pán)ROM(CD-ROM)、數(shù)字通用光盤(pán)(DVD)或其它光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè)備,或者可以用來(lái)存儲(chǔ)期望的信息以及可訪問(wèn)以檢索該信息的任何其它媒介。
通信媒介可以實(shí)現(xiàn)計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)和程序模塊,并包括任何信息傳遞媒介。以示例的方式,而非限制性的,通信媒介包括諸如有線網(wǎng)絡(luò)或直接線連接的有線媒介以及諸如聲學(xué)、射頻(RF)、紅外線和其它無(wú)線媒介的無(wú)線媒介。上述的任意的組合也可以包括在計(jì)算機(jī)可讀媒介的范圍之內(nèi)。
圖1是根據(jù)其可以實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)裝置100的示例的框圖。在實(shí)施例中,存儲(chǔ)裝置100是固態(tài)裝置、固態(tài)盤(pán)或固態(tài)驅(qū)動(dòng)器(SSD)。在圖1的示例中,由緩沖器110從與主機(jī)裝置(未示出)的接口來(lái)接收編碼數(shù)據(jù)50。主機(jī)接口可以是例如NVMe(非易失性存儲(chǔ)器快速)接口??蛇x擇的是,主機(jī)接口可以是例如串行或并行ATA(高級(jí)技術(shù)附件)接口、PCI(外圍組件互連)快速接口(PCIe)或者串行或并行SCSI(小型計(jì)算機(jī)系統(tǒng)接口)的接口。然而,本發(fā)明不限于這些示例。
在圖1實(shí)施例中,易失性存儲(chǔ)器125可以用來(lái)存儲(chǔ)將主機(jī)使用的虛擬地址或邏輯地址映射到存儲(chǔ)裝置100上的物理地址(具體地,用于非易失性存儲(chǔ)器130中的物理位置的地址)的映射表。在實(shí)施例中,非易失性存儲(chǔ)器130實(shí)現(xiàn)為NAND類(lèi)閃存,盡管它可以替代地實(shí)現(xiàn)為NOR類(lèi)閃存或其它非易失性媒介。通常,非易失性存儲(chǔ)器130持久地存儲(chǔ)數(shù)據(jù)。
控制器120廣義上包括能夠執(zhí)行諸如與結(jié)合圖9和圖10描述的操作有關(guān)的指令的計(jì)算機(jī)可讀指令的任意處理裝置??刂破?20可以是例如實(shí)現(xiàn)為ASIC(應(yīng)用型專(zhuān)用集成電路)的精簡(jiǎn)指令集處理器??刂破?20運(yùn)行代碼(例如,固件)以執(zhí)行診斷、緩存以及安全功能、尋址非易失性存儲(chǔ)器130、管理映射表,并且執(zhí)行下面描述的或者本領(lǐng)域已知的其它功能。在實(shí)施例中,控制器120是NVMe控制器。
圖1的存儲(chǔ)裝置100可以包括除了這些示出并描述的元件之外的其它元件,剛描述的元件可以執(zhí)行除了這里描述的功能之外的其它功能。
圖2是在通過(guò)根據(jù)本發(fā)明的實(shí)施例中的圖1的存儲(chǔ)裝置100接收的編碼數(shù)據(jù)50的示例。數(shù)據(jù)50包括第一數(shù)據(jù)210(將要被存儲(chǔ)的感興趣的數(shù)據(jù);將要保護(hù)并維持其準(zhǔn)確性和完整性的數(shù)據(jù))。在實(shí)施例中,數(shù)據(jù)210包括多達(dá)512字節(jié)的信息;然而,本發(fā)明不限于此。支持許多不同大小的數(shù)據(jù),例如,包括但不限于4096和8192字節(jié)的信息。
數(shù)據(jù)50也包括第二數(shù)據(jù)220,第二數(shù)據(jù)220可以被稱(chēng)為摘要或被稱(chēng)為保護(hù)信息。摘要220源于或使用數(shù)據(jù)210并且可以用來(lái)校驗(yàn)數(shù)據(jù)210的有效性。摘要220連接或附加到數(shù)據(jù)210。在實(shí)施例中,摘要220包括多達(dá)八字節(jié)的信息。
在實(shí)施例中,摘要220包括長(zhǎng)度上可多達(dá)兩個(gè)字節(jié)的監(jiān)視值(guard value)。如上所述,監(jiān)視值源于或使用數(shù)據(jù)210并且可以用于確定所述數(shù)據(jù)的有效性。例如,監(jiān)視值可以是循環(huán)冗余校驗(yàn)(CRC)值或校驗(yàn)和。在實(shí)施例中,摘要220是數(shù)據(jù)完整性擴(kuò)展(DIX);在這樣的實(shí)施例中,摘要包括諸如四字節(jié)參考值和兩字節(jié)應(yīng)用值的其它信息。
圖3是根據(jù)其可以實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的設(shè)備或計(jì)算機(jī)系統(tǒng)300的框圖。計(jì)算機(jī)系統(tǒng)300廣義上包括能夠執(zhí)行諸如與結(jié)合圖9和圖10描述的操作有關(guān)的指令的計(jì)算機(jī)可讀指令的任意單處理器或多處理器計(jì)算裝置或系統(tǒng)。在它的最基礎(chǔ)的配置中,計(jì)算機(jī)系統(tǒng)300可以包括至少一個(gè)處理電路(例如,處理器310)和至少一個(gè)存儲(chǔ)器(例如,存儲(chǔ)器320)。
圖3的處理器310通常表示能夠處理數(shù)據(jù)或解譯并執(zhí)行指令的任意類(lèi)型或形式的處理單元或電路。存儲(chǔ)器320通常表示能夠存儲(chǔ)數(shù)據(jù)和/或其它計(jì)算機(jī)可讀指令的任意類(lèi)型或形式的易失性存儲(chǔ)裝置或非易失性存儲(chǔ)裝置。存儲(chǔ)器320的示例包括但不限制RAM、ROM、閃存或任意其它適當(dāng)?shù)拇鎯?chǔ)器裝置。
計(jì)算機(jī)系統(tǒng)300也可以包括除了處理器310和系統(tǒng)存儲(chǔ)器320之外的組件或元件。例如,計(jì)算機(jī)系統(tǒng)300可以包括輸入/輸出(I/O)裝置(未示出)通信接口330。通信接口330廣義上表示能夠促進(jìn)計(jì)算機(jī)系統(tǒng)300通過(guò)諸如因特網(wǎng)的網(wǎng)絡(luò)與一個(gè)或多個(gè)其它裝置的通信的任意類(lèi)型或形式的有線或無(wú)線通信裝置或適配器。
在圖3的示例中,計(jì)算機(jī)系統(tǒng)300包括至少兩個(gè)存儲(chǔ)裝置331和332。在實(shí)施例中,存儲(chǔ)裝置331和332是諸如圖1的存儲(chǔ)裝置100的SSD。
圖4是根據(jù)其可以實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的設(shè)備(計(jì)算機(jī)系統(tǒng))的系統(tǒng)或網(wǎng)絡(luò)450的框圖。在圖4的示例中,網(wǎng)絡(luò)450包括計(jì)算機(jī)系統(tǒng)300和另一個(gè)計(jì)算機(jī)系統(tǒng)400。網(wǎng)絡(luò)450通常表示包括但不限于例如內(nèi)部網(wǎng)、廣域網(wǎng)絡(luò)(WAN)、局域網(wǎng)網(wǎng)絡(luò)(LAN)、個(gè)人區(qū)域網(wǎng)絡(luò)(PAN)、存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)、PCIe交換器和裝置的網(wǎng)或因特網(wǎng)的任意有線(包括光纖)或無(wú)線電信或計(jì)算機(jī)網(wǎng)絡(luò)。網(wǎng)絡(luò)450可以包括附加的計(jì)算機(jī)系統(tǒng)以及諸如路由器和交換器的其它類(lèi)型的裝置。
在它的最基本配置中,計(jì)算機(jī)系統(tǒng)400可以包括與上面描述的計(jì)算機(jī)系統(tǒng)300中的對(duì)應(yīng)的元件類(lèi)似的至少一個(gè)處理電路(例如,處理器410)、至少一個(gè)存儲(chǔ)器(例如,存儲(chǔ)器420)和通信接口430。計(jì)算機(jī)系統(tǒng)400也可以包括除了示出并描述的這些組件或元件之外的組件或元件。在圖4的示例中,計(jì)算機(jī)系統(tǒng)400包括至少一個(gè)存儲(chǔ)裝置431。在實(shí)施例中,存儲(chǔ)裝置431是諸如圖1的存儲(chǔ)裝置100的SSD。
網(wǎng)絡(luò)450可以包括分布式或共享式存儲(chǔ)系統(tǒng)(例如,網(wǎng)絡(luò)附接存儲(chǔ)(network-attached storage)(NAS)系統(tǒng)或集群)或者是它們的一部分,分布式或共享式存儲(chǔ)系統(tǒng)包括將文件類(lèi)數(shù)據(jù)存儲(chǔ)服務(wù)提供到網(wǎng)絡(luò)中的其它裝置(諸如應(yīng)用服務(wù)器的客戶(hù)端)的許多NAS裝置(例如,計(jì)算機(jī)系統(tǒng)300和400或者存儲(chǔ)裝置331、332和431)。這些存儲(chǔ)服務(wù)可以包括通常被稱(chēng)為“大數(shù)據(jù)”的非常大的數(shù)據(jù)集的存儲(chǔ)、管理和保持。
例如,網(wǎng)絡(luò)450可以包括通常存儲(chǔ)并維持事務(wù)數(shù)據(jù)的數(shù)據(jù)庫(kù)的聯(lián)機(jī)事務(wù)處理(OLTP)系統(tǒng)或是它的一部分,例如,在這種情況下,圖2的數(shù)據(jù)210可以是銀行、航空業(yè)、保險(xiǎn)公司、醫(yī)療服務(wù)提供者和零售商所使用的事務(wù)相關(guān)數(shù)據(jù)。數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)或分布式DBMS(DDBMS)可以穿過(guò)OLTP系統(tǒng)中的存儲(chǔ)裝置(例如,存儲(chǔ)裝置331、332和431)或計(jì)算機(jī)系統(tǒng)(例如,計(jì)算機(jī)系統(tǒng)300和400)的集群對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)。
通常,在根據(jù)本發(fā)明的實(shí)施例中,數(shù)據(jù)210(圖2)存儲(chǔ)在具有第一地址的第一存儲(chǔ)器位置中,摘要220存儲(chǔ)在具有第二地址的第二存儲(chǔ)器位置中。在實(shí)施例中,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置在單個(gè)物理裝置(例如,同一SSD)上。在另一個(gè)實(shí)施例中,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置在不同的物理裝置(例如,不同的SSD)上。在后面的實(shí)施例中,不同的物理裝置可以是同一設(shè)備或計(jì)算機(jī)系統(tǒng)的組件,或者它們可以是不同設(shè)備或計(jì)算機(jī)系統(tǒng)的組件。
圖5是示出在根據(jù)本發(fā)明的實(shí)施例中用于存儲(chǔ)數(shù)據(jù)210和摘要220的方法的示例的框圖。如上述,數(shù)據(jù)210是將要被保護(hù)或維持的數(shù)據(jù),摘要220與數(shù)據(jù)210有關(guān)。
在圖5的示例中,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置在不同的物理存儲(chǔ)裝置上;數(shù)據(jù)210存儲(chǔ)在第一存儲(chǔ)裝置501中,摘要220存儲(chǔ)在第二存儲(chǔ)裝置502中。第一存儲(chǔ)裝置501和第二存儲(chǔ)裝置502可以在同一設(shè)備或計(jì)算機(jī)系統(tǒng)上或者在不同的設(shè)備或計(jì)算機(jī)系統(tǒng)上。在圖5的示例中,第一存儲(chǔ)裝置501可以是存儲(chǔ)裝置331并且第二存儲(chǔ)裝置502可以是圖3的存儲(chǔ)裝置332,或者第一存儲(chǔ)裝置501可以是存儲(chǔ)裝置331并且第二存儲(chǔ)裝置502可以是圖4的存儲(chǔ)裝置431。
圖6是示出在根據(jù)本發(fā)明的實(shí)施例中用于存儲(chǔ)數(shù)據(jù)210和摘要220(圖2)另一種的方法的示例的框圖。在圖6的示例中,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置在同一物理存儲(chǔ)裝置(例如,存儲(chǔ)裝置331)上。即,在該示例中,數(shù)據(jù)210和摘要220存儲(chǔ)在同一存儲(chǔ)裝置中。在實(shí)施例中,數(shù)據(jù)210和摘要220存儲(chǔ)在存儲(chǔ)裝置上的鄰近的位置中。
通常,在根據(jù)本發(fā)明的實(shí)施例中,產(chǎn)生并存儲(chǔ)用來(lái)確定第一存儲(chǔ)器位置(確定用于第一存儲(chǔ)器位置的第一地址)的第一信息,產(chǎn)生并存儲(chǔ)用來(lái)確定第二存儲(chǔ)器位置(確定用于第二存儲(chǔ)器位置的第二地址)的第二信息。在實(shí)施例中,第一信息包括映射表中的第一入口,第二信息包括同一映射表中的第二入口。在另一個(gè)實(shí)施例中,第一信息包括第一映射表中的入口,第二信息包括第二映射表中的入口。
第一信息和第二信息(例如,映射表或表中的入口)可以位于存儲(chǔ)裝置本身(例如,圖1的存儲(chǔ)裝置100)上并被其管理,或者被包括存儲(chǔ)裝置的設(shè)備(例如,圖3和圖4的計(jì)算機(jī)系統(tǒng)300或400)管理。
圖7A和圖7B示出在根據(jù)本發(fā)明的實(shí)施例中的映射表700的使用的示例。映射表700包括將邏輯地址或虛擬地址映射到一個(gè)存儲(chǔ)裝置或多個(gè)存儲(chǔ)裝置中物理地址的一些數(shù)量N的入口。在圖7A的示例中,數(shù)據(jù)210和摘要220被示出為被存儲(chǔ)在同一存儲(chǔ)裝置(例如,存儲(chǔ)裝置331)中。然而,如上所述,數(shù)據(jù)210和摘要220可以存儲(chǔ)在如圖7B中示出的不同的存儲(chǔ)裝置上,在這種情況下,如圖3的示例中示出的,第二存儲(chǔ)裝置(例如,存儲(chǔ)裝置332)可以在與存儲(chǔ)裝置331相同的計(jì)算機(jī)系統(tǒng)上,或者如圖4的示例中示出的,第二存儲(chǔ)裝置(例如,存儲(chǔ)裝置431)可以在不同的計(jì)算機(jī)系統(tǒng)上。
在根據(jù)本發(fā)明的實(shí)施例中,映射表700包括用于數(shù)據(jù)210的第一入口702以及用于摘要220的第二入口704(這里,術(shù)語(yǔ)“第一”和“第二”用作兩個(gè)入口的描述符并不一定表示所述入口是映射表中的實(shí)際的第一入口和第二入口)。因此,在圖7A和圖7B的示例中,針對(duì)數(shù)據(jù)210和摘要220的入口在同一映射表中,但在映射表中的不同位置處。
在實(shí)施例中,在映射表700中的第一入口702的位置與映射表中的第二入口704的位置之間有固定的關(guān)系或穩(wěn)定的關(guān)系。例如,如圖7A中示出的,如果第一入口702是映射表的上半部中的第一實(shí)際入口,那么第二入口704可以是映射表的下半部中的第一實(shí)際入口??蛇x擇地,如圖7B中示出的,用于摘要220的入口可以跟隨(鄰近于)用于數(shù)據(jù)210的入口。所述兩個(gè)入口之間的其它關(guān)系是可能的。在實(shí)施例中,使用第一入口702存取數(shù)據(jù)210自動(dòng)地造成摘要220也將使用第二入口704來(lái)被存取。例如,圖1的控制器120(或圖3的處理器310或圖4的處理器410)可以通過(guò)使用第一入口702來(lái)找到用于數(shù)據(jù)的地址并使用第一入口702與第二入口704之間的固定的關(guān)系來(lái)找到第二入口以及因此用于摘要的地址,獲得感興趣的數(shù)據(jù)(數(shù)據(jù)210)以及與所述數(shù)據(jù)對(duì)應(yīng)的摘要(數(shù)據(jù)220)。
圖8A和圖8B示出在根據(jù)本發(fā)明的實(shí)施例中的兩個(gè)映射表800和801的使用的示例。映射表800和801中的每個(gè)包括將邏輯地址或虛擬地址映射到一個(gè)存儲(chǔ)裝置或多個(gè)存儲(chǔ)裝置中的物理地址的一些數(shù)量的入口。在圖8A的示例中,數(shù)據(jù)210和摘要220被示出為被存儲(chǔ)在同一存儲(chǔ)裝置(例如,存儲(chǔ)裝置331)中。然而,如上所述,數(shù)據(jù)210和摘要220可以存儲(chǔ)在如圖8B中示出的不同的存儲(chǔ)裝置上,在這種情況下,如圖3的示例中示出的,第二存儲(chǔ)裝置(例如,存儲(chǔ)裝置332)可以在與存儲(chǔ)裝置331相同的計(jì)算機(jī)系統(tǒng)上,或者如圖4的示例中示出的,第二存儲(chǔ)裝置(例如,存儲(chǔ)裝置431)可以在不同的計(jì)算機(jī)系統(tǒng)上。
在根據(jù)本發(fā)明的實(shí)施例中,映射表800包括用于數(shù)據(jù)210的第一入口802,映射表801包括用于摘要220的第二入口804。即,用于數(shù)據(jù)210的入口和用于摘要220的入口在不同的映射表中。在實(shí)施例中,如上所述,在映射表800中的入口802的位置與映射表801中的入口804的位置之間有固定的關(guān)系或穩(wěn)定的關(guān)系。例如,如圖8A和圖8B中示出的,如果入口802是映射表800中的第一實(shí)際入口,那么入口804可以是映射表801中的第一實(shí)際入口。所述兩個(gè)入口之間的其它關(guān)系是可能的。在實(shí)施例中,如上述,使用第一入口802存取數(shù)據(jù)210自動(dòng)地造成摘要220也將使用第二入口804來(lái)被存取。
在圖7A、圖7B、圖8A和圖8B的示例中,用于數(shù)據(jù)210和摘要220的映射表入口702和704或802和804可以使用不同的操作和/或在不同的時(shí)刻來(lái)產(chǎn)生以實(shí)質(zhì)上消除單粒子翻轉(zhuǎn)或軟錯(cuò)誤將影響兩個(gè)入口的可能性。
圖9和圖10分別是在根據(jù)本發(fā)明的實(shí)施例中的用于存儲(chǔ)和存取數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)方法的示例的流程圖900和1000。流程圖900和1000可以實(shí)現(xiàn)為計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令以非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)媒介的形式存在并且在使用諸如圖1的控制器120、圖3的處理器310或圖4的處理器410的處理裝置或電路的設(shè)備或計(jì)算機(jī)系統(tǒng)中被執(zhí)行。
在圖9的塊902中,也參照?qǐng)D2,接收包括第一數(shù)據(jù)(數(shù)據(jù)210)以及使用第一數(shù)據(jù)而導(dǎo)出的第二數(shù)據(jù)(摘要220)的編碼信息。
在圖9的塊904中,在具有第一地址的第一存儲(chǔ)器位置中存儲(chǔ)第一數(shù)據(jù)。
在塊906中,在具有第二地址的第二存儲(chǔ)器位置中存儲(chǔ)第二數(shù)據(jù)。
如上面介紹的,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置可以在單個(gè)物理裝置上(如圖6、圖7A和圖8A的示例中),或者第一存儲(chǔ)器位置和第二存儲(chǔ)器位置可以分別在第一物理裝置和第二物理裝置上(如圖5、圖7B和圖8B的示例中)。在后者的示例中,第一物理裝置和第二物理裝置可以是同一計(jì)算機(jī)系統(tǒng)的組件(如圖3的示例中),或者第一物理裝置可以是第一計(jì)算機(jī)系統(tǒng)的組件,第二物理裝置可以是第二計(jì)算機(jī)系統(tǒng)的組件,第一計(jì)算機(jī)系統(tǒng)和第二計(jì)算機(jī)系統(tǒng)可以是網(wǎng)絡(luò)的組件(如圖4的示例中)。
在圖9的塊908中,存儲(chǔ)用于確定第一地址的第一信息。
在塊910中,存儲(chǔ)用于確定第二地址的第二信息。在實(shí)施例中,使用第一信息存取第一數(shù)據(jù)也造成使用第二信息存取第二數(shù)據(jù)。
如上面介紹的,在實(shí)施例中,第一信息是或者包括映射表中的第一入口,第二信息是或者包括同一映射表中的第二入口(如在圖7A和圖7B的示例中),或者第一信息是或者包括第一映射表中的入口,第二信息是或者包括第二映射表中的入口(如在圖8A和圖8B的示例中)。在這樣的實(shí)施例中,映射表或表更新至包括來(lái)自塊908和塊910的第一信息(入口)和第二信息(入口)。
在圖10的塊1002中,從第一存儲(chǔ)器位置讀取第一數(shù)據(jù)(圖2的數(shù)據(jù)210)。
在圖10的塊1004中,從第二存儲(chǔ)器位置讀取第二數(shù)據(jù)(圖2的摘要220)。如上所述,在實(shí)施例中,第一存儲(chǔ)器位置和第二存儲(chǔ)器位置通過(guò)映射表中的分開(kāi)的入口或通過(guò)各個(gè)映射表中的入口來(lái)確定,在映射表中所述入口以某種方式相關(guān)。因此,在這樣的實(shí)施例中,(使用第一入口)讀取第一數(shù)據(jù)自動(dòng)地造成(使用第二入口)讀取第二數(shù)據(jù)。
在圖10的塊1006中,使用第二數(shù)據(jù)確定第一數(shù)據(jù)的有效性。例如,可以通過(guò)存儲(chǔ)裝置、通過(guò)控制存儲(chǔ)裝置的計(jì)算機(jī)系統(tǒng)或者通過(guò)請(qǐng)求數(shù)據(jù)的應(yīng)用來(lái)執(zhí)行塊1006的有效性檢查。
總之,例如,可以使用根據(jù)本發(fā)明的實(shí)施例來(lái)解決諸如但不限于SSD的裝置中的無(wú)記載損壞的問(wèn)題。結(jié)果,數(shù)據(jù)存儲(chǔ)裝置和系統(tǒng)更加可靠,存儲(chǔ)的數(shù)據(jù)的整體可信度提高。利用感興趣的數(shù)據(jù)和所述數(shù)據(jù)的摘要的各個(gè)映射入口,通過(guò)分別存儲(chǔ)感興趣的數(shù)據(jù)以及所述數(shù)據(jù)的摘要,有效且優(yōu)雅地實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例,而不必增加額外的存儲(chǔ)裝置且基本不會(huì)對(duì)現(xiàn)有的存儲(chǔ)器或處理資源或帶寬增加負(fù)擔(dān)。例如,根據(jù)本發(fā)明的實(shí)施例不依賴(lài)于存儲(chǔ)、檢索以及比較數(shù)據(jù)的備份副本來(lái)檢測(cè)無(wú)記載損壞。
盡管以上公開(kāi)使用具體框圖、流程圖和示例闡述了各種實(shí)施例,但是可以單獨(dú)和/或共同使用許多各種不同的硬件、軟件或固件(或它們的任意組合)配置來(lái)實(shí)現(xiàn)這里描述和/或示出的每個(gè)框圖組件、流程步驟、操作和/或組件。另外,對(duì)包含在其它組件內(nèi)的組件的任意公開(kāi)應(yīng)該被認(rèn)為成示例,因?yàn)榭梢詫?shí)現(xiàn)許多其它的架構(gòu)以得到相同的功能。
這里描述和/或示出的步驟的工藝參數(shù)和順序僅通過(guò)示例的方式給出并且可以根據(jù)需要改變。例如,盡管這里示出和/或描述的步驟可以以特定順序來(lái)示出或討論,但是這些步驟不一定需要以示出或討論的順序來(lái)執(zhí)行。這里描述和/或示出的各種示例方法也可以省略這里描述或示出的步驟中的一個(gè)或多個(gè)步驟或者包括除了公開(kāi)的這些步驟之外的附加的步驟。
盡管這里已經(jīng)在全功能計(jì)算系統(tǒng)的情況下描述和/或示出了各種實(shí)施例,但是這些示例實(shí)施例中的一個(gè)或多個(gè)可以被分配為各種形式的程序產(chǎn)品,而不管用于實(shí)際執(zhí)行分配的計(jì)算機(jī)可讀媒介的具體類(lèi)型。這里公開(kāi)的實(shí)施例也可以使用執(zhí)行特定任務(wù)的軟件模塊來(lái)實(shí)現(xiàn)。這些軟件模塊可以包括可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)媒介上或在計(jì)算系統(tǒng)中的腳本、批處理或其它可執(zhí)行文件。這些軟件模塊可以構(gòu)造計(jì)算系統(tǒng)以執(zhí)行這里公開(kāi)的示例實(shí)施例中的一個(gè)或更多個(gè)。這里公開(kāi)的軟件模塊中的一個(gè)或更多個(gè)可以在云計(jì)算環(huán)境中實(shí)現(xiàn)。云計(jì)算環(huán)境可以通過(guò)因特網(wǎng)提供各種服務(wù)和應(yīng)用。這些基于云的服務(wù)(例如,軟件即服務(wù)、平臺(tái)即服務(wù)、基礎(chǔ)設(shè)施即服務(wù)等)可通過(guò)Web瀏覽器或其他遠(yuǎn)程接口來(lái)訪問(wèn)。這里描述的各種功能可以通過(guò)遠(yuǎn)程桌面環(huán)境或者任何其它基于云的計(jì)算環(huán)境來(lái)提供。
雖然本主題已經(jīng)以具體到結(jié)構(gòu)特征和/或方法動(dòng)作的語(yǔ)言進(jìn)行了描述,但是將理解的是,在本公開(kāi)中限定的主題不必限于上述具體特征或動(dòng)作。相反,上述具體特征和動(dòng)作被公開(kāi)為實(shí)現(xiàn)本公開(kāi)的示例形式。
因此描述了根據(jù)本發(fā)明的實(shí)施例。盡管已經(jīng)在具體的實(shí)施例中描述了本公開(kāi),但是應(yīng)該理解的是,本發(fā)明不應(yīng)該被解釋為受這樣的實(shí)施例限制,而應(yīng)該根據(jù)權(quán)利要求來(lái)解釋。