国产精品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>

      持久性數(shù)據(jù)存儲(chǔ)體中的前向參考記錄的方法和系統(tǒng)與流程

      文檔序號:12481391閱讀:195來源:國知局
      持久性數(shù)據(jù)存儲(chǔ)體中的前向參考記錄的方法和系統(tǒng)與流程

      所公開的實(shí)施例一般涉及存儲(chǔ)器系統(tǒng),特別涉及改進(jìn)存儲(chǔ)介質(zhì)(例如,包含諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的持久性數(shù)據(jù)存儲(chǔ)體(datastore))的可靠性和性能。



      背景技術(shù):

      一般地,當(dāng)數(shù)據(jù)被寫入到數(shù)據(jù)庫以持久存儲(chǔ)時(shí),啟動(dòng)兩個(gè)寫入到持久性存儲(chǔ),一個(gè)用于數(shù)據(jù)且另一個(gè)用于相應(yīng)的日志條目。日志條目用于恢復(fù)數(shù)據(jù),或用于再現(xiàn)相應(yīng)的寫入操作。進(jìn)行兩個(gè)單獨(dú)的寫入操作比單個(gè)寫入操作引入更多等待時(shí)間,但是將日志條目寫入到持久性存儲(chǔ)提供了不可通過其他方式獲得的恢復(fù)和數(shù)據(jù)庫復(fù)制能力。然而,減少與寫入日志條目相關(guān)聯(lián)的附加等待時(shí)間是可取的。



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

      所公開的方法和系統(tǒng)改善了持久性數(shù)據(jù)存儲(chǔ)體(例如,非易失性存儲(chǔ)器,諸如閃速存儲(chǔ)器)的可靠性和性能。利用單個(gè)寫入操作將包括寫入數(shù)據(jù)和日志條目的記錄寫入到持久性數(shù)據(jù)存儲(chǔ)體。

      附圖說明

      為了使得可以更詳細(xì)地理解本公開,通過參考各種實(shí)施例的特征可以具有更具體的描述,其中一些實(shí)施例在附圖中示出。然而,附圖僅僅說明了本公開的更相關(guān)的特征,因此不應(yīng)被認(rèn)為是限制性的,因?yàn)樵撁枋隹梢栽试S其它有效的特征。

      圖1是示出了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)方式的框圖。

      圖2A是示出了根據(jù)一些實(shí)施例的管理模塊的實(shí)現(xiàn)方式的框圖。

      圖2B是示出了根據(jù)一些實(shí)施例的計(jì)算機(jī)系統(tǒng)(例如主機(jī))的實(shí)現(xiàn)方式的框圖。

      圖3示出了根據(jù)一些實(shí)施例的多個(gè)相關(guān)數(shù)據(jù)結(jié)構(gòu)的框圖。

      圖4示出了根據(jù)一些實(shí)施例的生成圖3中的數(shù)據(jù)結(jié)構(gòu)的方法的流程圖表示。

      圖5示出了根據(jù)一些實(shí)施例的日志流的框圖。

      圖6示出了根據(jù)一些實(shí)施例的日志流的一部分的框圖。

      圖7示出了根據(jù)一些實(shí)施例的相關(guān)數(shù)據(jù)結(jié)構(gòu)的框圖。

      圖8A-8C示出了根據(jù)一些實(shí)施例的持久存儲(chǔ)(persist)數(shù)據(jù)的方法的流程圖表示。

      根據(jù)一般慣例,附圖中說明的各種特征可能不按比例繪制。因此,為了清楚,各種特征的尺寸可能任意擴(kuò)大或縮小。此外,附圖的一些可能未描述給定的系統(tǒng)、方法或設(shè)備的所有組件。最后,相同的附圖標(biāo)記可以用于表示說明書和附圖中的相同的特征。

      具體實(shí)施方式

      本文描述的各種實(shí)施例包括改善持久性數(shù)據(jù)存儲(chǔ)體(例如,非易失性存儲(chǔ)器(NVM),諸如閃速存儲(chǔ)器)的可靠性和性能的方法和/或系統(tǒng)。一些實(shí)施例包括用于有效地并可靠地持久存儲(chǔ)數(shù)據(jù)作為持久性數(shù)據(jù)存儲(chǔ)體的部分的方法和/或系統(tǒng)(或設(shè)備)。

      一些實(shí)施例包括持久存儲(chǔ)數(shù)據(jù)的方法。在一些實(shí)施例中,通過具有一個(gè)或多個(gè)處理器和與持久性數(shù)據(jù)存儲(chǔ)體操作地耦合的存儲(chǔ)器的電子系統(tǒng)(例如,圖1的計(jì)算機(jī)系統(tǒng)110,或圖1的存儲(chǔ)控制器120)來進(jìn)行該方法。例如,持久性數(shù)據(jù)存儲(chǔ)體包括非易失性存儲(chǔ)器,諸如一個(gè)或多個(gè)磁盤存儲(chǔ)器件、光盤存儲(chǔ)器件、閃速存儲(chǔ)器器件或其他非易失性固態(tài)存儲(chǔ)器件。該方法包括生成與第一寫入數(shù)據(jù)相關(guān)聯(lián)的日志條目。該方法還包括生成包含該日志條目、第一寫入數(shù)據(jù)以及指向與第一記錄不同的第二記錄的指針的第一記錄。該方法還包括進(jìn)行單個(gè)寫入操作,該單個(gè)寫入操作包括將第一記錄寫入到持久性數(shù)據(jù)存儲(chǔ)體。

      一些實(shí)施例包括電子系統(tǒng)(本文中有時(shí)稱為電子設(shè)備),其包括:一個(gè)或多個(gè)處理器;以及存儲(chǔ)器,存儲(chǔ)要由該一個(gè)或多個(gè)處理器來執(zhí)行的一個(gè)或多個(gè)程序,該一個(gè)或多個(gè)程序包括用于進(jìn)行本文描述的任何方法或控制進(jìn)行本文描述的任何方法的進(jìn)行的指令。一些實(shí)施例包括非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其存儲(chǔ)用于由電子系統(tǒng)或設(shè)備的一個(gè)或多個(gè)處理器執(zhí)行的一個(gè)或多個(gè)程序,該一個(gè)或多個(gè)程序包括用于進(jìn)行本文描述的任何方法的指令。一些實(shí)施例包括電子系統(tǒng)或設(shè)備,其包括:用于進(jìn)行本文描述的任何方法的操作的裝置。

      本文描述許多細(xì)節(jié)以便提供對在附圖中示出的示例的實(shí)施例的透徹理解。然而,一些實(shí)施例可以在沒有很多具體細(xì)節(jié)的情況下實(shí)踐,并且權(quán)利要求的范圍僅由在權(quán)利要求中具體記載的那些特征和方面來限制。此外,沒有描述公知的方法、組件和電路的詳盡細(xì)節(jié),以免不必要地模糊本文所描述的實(shí)施例的更相關(guān)的方面。

      圖1是根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)100的實(shí)現(xiàn)方式的圖。雖然一些示例的特征被示出,為了簡潔的目的以及為了不模糊這里公開的示例的實(shí)施例的更相關(guān)的方面,沒有示出各種其他特征。為此,作為非限制性示例,數(shù)據(jù)存儲(chǔ)系統(tǒng)100包含存儲(chǔ)控制器120以及存儲(chǔ)介質(zhì)130,并且數(shù)據(jù)存儲(chǔ)系統(tǒng)100與計(jì)算機(jī)系統(tǒng)110結(jié)合使用。在一些實(shí)施例中,存儲(chǔ)介質(zhì)130包括單個(gè)存儲(chǔ)器器件(例如,非易失性存儲(chǔ)器(NVM)器件,諸如閃速存儲(chǔ)器器件或磁盤驅(qū)動(dòng)器,有時(shí)被稱為硬盤驅(qū)動(dòng)器),而在其他實(shí)現(xiàn)方式中,存儲(chǔ)介質(zhì)130包括多個(gè)存儲(chǔ)器器件。在一些實(shí)施例中,存儲(chǔ)介質(zhì)130包括NAND類型閃速存儲(chǔ)器或者NOR類型閃速存儲(chǔ)器。此外,在一些實(shí)施例中,存儲(chǔ)控制器120是固態(tài)驅(qū)動(dòng)器(SSD)控制器。然而,根據(jù)各種實(shí)施例的方面,可以包含一個(gè)或多個(gè)其他類型的存儲(chǔ)介質(zhì)。

      計(jì)算機(jī)系統(tǒng)110通過數(shù)據(jù)連接101耦合至存儲(chǔ)控制器120。然而,在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110包括作為組件和/或子系統(tǒng)的存儲(chǔ)控制器120。計(jì)算機(jī)系統(tǒng)110可以是任何合適的計(jì)算機(jī)器件,比如計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板設(shè)備、筆記本、因特網(wǎng)信息站(kiosk)、個(gè)人數(shù)字助理、移動(dòng)電話、智能電話、游戲設(shè)備、計(jì)算機(jī)服務(wù)器、或任何其他計(jì)算設(shè)備。計(jì)算機(jī)系統(tǒng)110有時(shí)稱為主機(jī)或主機(jī)系統(tǒng)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110包含一個(gè)或多個(gè)處理器、一種或多種類型的存儲(chǔ)器、顯示器和/或其他用戶界面組件,諸如鍵盤、觸摸屏顯示器、鼠標(biāo)、跟蹤板、數(shù)字相機(jī)和/或任何數(shù)量的輔助設(shè)備以添加功能。

      存儲(chǔ)介質(zhì)130通過連接103耦合至存儲(chǔ)控制器120。連接103有時(shí)稱為數(shù)據(jù)連接,但是除了傳達(dá)數(shù)據(jù)之外通常還傳達(dá)命令,并且可選地除了傳達(dá)要存儲(chǔ)在存儲(chǔ)介質(zhì)130中的數(shù)據(jù)值和從存儲(chǔ)介質(zhì)130讀取的數(shù)據(jù)值之外還傳達(dá)元數(shù)據(jù)、錯(cuò)誤校正信息和/或其他信息。然而,在一些實(shí)施例中,存儲(chǔ)控制器120和存儲(chǔ)介質(zhì)130被包含在相同的設(shè)備中作為其組件。此外,在一些實(shí)現(xiàn)方式中,存儲(chǔ)控制器120和存儲(chǔ)介質(zhì)130嵌入在主機(jī)設(shè)備中,諸如移動(dòng)設(shè)備、平板機(jī)、其他計(jì)算機(jī)或計(jì)算機(jī)控制的設(shè)備,并且本文描述的方法由嵌入的存儲(chǔ)控制器來進(jìn)行。存儲(chǔ)介質(zhì)130可能包含任何數(shù)量(即,一個(gè)或多個(gè))的存儲(chǔ)器器件,存儲(chǔ)器器件包含但不限于非易失性半導(dǎo)體存儲(chǔ)器器件,諸如閃速存儲(chǔ)器。例如,閃速存儲(chǔ)器器件可以配置用于適于諸如云計(jì)算的應(yīng)用的企業(yè)存儲(chǔ),或者用于緩存存儲(chǔ)在(或要存儲(chǔ)在)諸如硬盤驅(qū)動(dòng)器的次級存儲(chǔ)中的數(shù)據(jù)。此外和/或可替代地,閃速存儲(chǔ)器也可以配置用于相對較小規(guī)模的應(yīng)用,比如個(gè)人閃速驅(qū)動(dòng)器或?qū)τ趥€(gè)人、膝上型和平板計(jì)算機(jī)的硬盤替代物。

      在一些實(shí)施例中,存儲(chǔ)介質(zhì)130是持久性數(shù)據(jù)存儲(chǔ)體(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器),并且存儲(chǔ)介質(zhì)130包括多個(gè)記錄132,每個(gè)記錄132包括寫入數(shù)據(jù)和相應(yīng)的日志條目。在一些實(shí)施例中,每個(gè)記錄對應(yīng)于針對持久性數(shù)據(jù)存儲(chǔ)體的業(yè)務(wù)(transaction)(例如,寫入操作)。在一些實(shí)施例中,存儲(chǔ)介質(zhì)130還包括日志流134,其包括多個(gè)日志流部分,其中每個(gè)日志流部分包括日志條目集合(例如,256個(gè)日志條目)。在一些實(shí)施例中,存儲(chǔ)介質(zhì)130還包括一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)快照136。在一些實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)快照136的每個(gè)對應(yīng)于在一個(gè)時(shí)間點(diǎn)的一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)表的狀態(tài),其中該一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)表使得主機(jī)能夠訪問存儲(chǔ)在永久數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù)。例如,每N個(gè)業(yè)務(wù)(例如,N=1000、10000等)生成一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)表的快照。

      在一些實(shí)施例中,存儲(chǔ)介質(zhì)130被分成若干可尋址且可單獨(dú)選擇的塊。在一些實(shí)施例中,可單獨(dú)選擇的塊是閃速存儲(chǔ)器器件中最小尺寸可擦除單元。換句話說,每個(gè)塊包含可被同時(shí)擦除的最小數(shù)量的存儲(chǔ)器單元。每個(gè)塊通常被進(jìn)一步分成多個(gè)頁和/或字線,其中每個(gè)頁或字線通常是塊中的最小單獨(dú)可訪問的(可讀取的)的部分的實(shí)例。然而,在一些實(shí)施例中(例如,使用一些類型的閃速存儲(chǔ)器),數(shù)據(jù)組的最小單獨(dú)可訪問的單元是扇區(qū),扇區(qū)是一頁的子單元。即,塊包含多個(gè)頁,每個(gè)頁包含多個(gè)扇區(qū),并且每個(gè)扇區(qū)是用于從閃速存儲(chǔ)器器件讀取數(shù)據(jù)的數(shù)據(jù)的最小單元。

      例如,一個(gè)塊包括任意數(shù)量的頁,例如,64個(gè)頁、128個(gè)頁、256個(gè)頁、或另一個(gè)合適的數(shù)量的頁。塊通常被分組為多個(gè)區(qū)域。每個(gè)塊在一定程度上可以獨(dú)立地管理,這增加了并行操作的并行化程度并且簡化了存儲(chǔ)介質(zhì)130的管理。

      在一些實(shí)施例中,存儲(chǔ)控制器120包括管理模塊121、輸入緩沖器123、輸出緩沖器124、錯(cuò)誤控制模塊125和存儲(chǔ)介質(zhì)接口(I/O)128。存儲(chǔ)控制器120可以包含各種附加的特征,為了簡潔的目的以及為了不模糊本文所公開的示例的實(shí)施例的更相關(guān)的特征,沒有示出這些附加的特征,并且特征的不同排列可以是可能的。輸入和輸出緩沖器123、124通過數(shù)據(jù)連接101提供與計(jì)算機(jī)系統(tǒng)110的接口。類似地,存儲(chǔ)介質(zhì)I/O 128通過數(shù)據(jù)連接103提供與存儲(chǔ)介質(zhì)130的接口。在一些實(shí)施例中,存儲(chǔ)介質(zhì)的I/O 128包含讀取和寫入電路,其包含能夠?qū)⒆x取信號提供給存儲(chǔ)介質(zhì)130(例如,用于NAND類型閃速存儲(chǔ)器的讀取閾值電壓)的電路。

      在一些實(shí)施例中,管理模塊121包含一個(gè)或多個(gè)處理單元(CPU,有時(shí)也稱為一個(gè)或多個(gè)處理器)122,處理單元122配置為執(zhí)行一個(gè)或多個(gè)程序中(例如,管理模塊121中)的指令。在一些實(shí)施例中,一個(gè)或多個(gè)CPU 122由存儲(chǔ)控制器120內(nèi)的一個(gè)或多個(gè)組件共享,并且在一些情況下超出存儲(chǔ)控制器120的功能。管理模塊121耦合至輸入緩沖器123、輸出緩沖器124(連接未示出)、錯(cuò)誤控制模塊125和存儲(chǔ)介質(zhì)I/O 128,以協(xié)調(diào)這些組件的操作。

      錯(cuò)誤控制模塊125耦合至存儲(chǔ)介質(zhì)I/O 128、輸入緩沖器123和輸出緩沖器124。提供錯(cuò)誤控制模塊125以限制無意中引入到數(shù)據(jù)中的不可校正的錯(cuò)誤的數(shù)量。在一些實(shí)施例中,錯(cuò)誤控制模塊125由管理模塊121的一個(gè)或多個(gè)CPU 122在軟件中執(zhí)行,并且,在其它實(shí)施例中,錯(cuò)誤控制模塊125整體地或者部分地使用專用電路進(jìn)行編碼和解碼功能來實(shí)現(xiàn)。為此,錯(cuò)誤控制模塊125包括編碼器126和解碼器127。編碼器126通過應(yīng)用錯(cuò)誤控制碼來編碼數(shù)據(jù)以產(chǎn)生碼字,該碼字隨后被存儲(chǔ)在存儲(chǔ)介質(zhì)130中。

      當(dāng)從存儲(chǔ)介質(zhì)130讀取所編碼的數(shù)據(jù)(例如,一個(gè)或多個(gè)碼字)時(shí),解碼器127對編碼的數(shù)據(jù)應(yīng)用解碼處理以恢復(fù)數(shù)據(jù),并且在錯(cuò)誤控制碼的錯(cuò)誤校正能力之內(nèi)校正恢復(fù)的數(shù)據(jù)中的錯(cuò)誤。本領(lǐng)域的技術(shù)人員將了解,各種錯(cuò)誤控制碼具有不同的誤差檢測和校正能力,并且由于超出本公開的范圍的理由,對各種應(yīng)用選擇具體的碼。這樣,在此不提供對各種類型的錯(cuò)誤控制碼的詳盡回顧。此外,本領(lǐng)域的技術(shù)人員將理解,每種類型或系列的錯(cuò)誤控制碼可以具有對于該類型或系列的錯(cuò)誤控制碼特定的編碼和解碼算法。另一方面,在多個(gè)不同類型或系列的錯(cuò)誤控制碼的解碼中可以至少在某種程度上利用一些算法。這樣,為了簡潔起見,在此不提供本領(lǐng)域的技術(shù)人員通常可得的和已知的各種類型的編碼和解碼算法的詳盡描述。

      在寫入操作期間,輸入緩沖器123從計(jì)算機(jī)系統(tǒng)110接收要存儲(chǔ)在存儲(chǔ)介質(zhì)130中的數(shù)據(jù)(例如,寫入數(shù)據(jù))。使得在輸入緩沖器123中保存的數(shù)據(jù)對編碼器126可用,編碼器126編碼該數(shù)據(jù)以產(chǎn)生一個(gè)或多個(gè)碼字。使得該一個(gè)或多個(gè)碼字對存儲(chǔ)介質(zhì)I/O 128可用,存儲(chǔ)介質(zhì)I/O 128以依賴于所利用的存儲(chǔ)介質(zhì)的類型的方式將該一個(gè)或多個(gè)碼字傳輸?shù)酱鎯?chǔ)介質(zhì)130。

      當(dāng)計(jì)算機(jī)系統(tǒng)(主機(jī))110將控制線111上的一個(gè)或多個(gè)主機(jī)讀取命令發(fā)送到從存儲(chǔ)介質(zhì)130請求數(shù)據(jù)的存儲(chǔ)控制器120時(shí),啟動(dòng)讀取操作。存儲(chǔ)控制器120將一個(gè)或多個(gè)讀取訪問命令經(jīng)由存儲(chǔ)介質(zhì)I/O 128發(fā)送到存儲(chǔ)介質(zhì)130,以根據(jù)由該一個(gè)或多個(gè)主機(jī)讀取命令指定的存儲(chǔ)器位置(地址)來獲得原始讀取數(shù)據(jù)。存儲(chǔ)介質(zhì)I/O 128將該原始讀取數(shù)據(jù)(例如,包括一個(gè)或多個(gè)碼字)提供給解碼器127中。如果解碼成功,則解碼的數(shù)據(jù)被提供給輸出緩沖器124,在那里使得解碼的數(shù)據(jù)對計(jì)算機(jī)系統(tǒng)110可用。在一些實(shí)施例中,如果解碼不成功,則存儲(chǔ)控制器120可以借助于多個(gè)補(bǔ)救動(dòng)作或提供不可解決的錯(cuò)誤條件的指示。

      圖2A是示出根據(jù)一些實(shí)施例的示例性管理模塊121的框圖。管理模塊121通常包括:一個(gè)或多個(gè)處理單元(CPU)122,用于執(zhí)行存儲(chǔ)在存儲(chǔ)器202中的模塊、程序和/或指令,并由此進(jìn)行處理操作;存儲(chǔ)器202;以及用于互連這些組件的一個(gè)或多個(gè)通信總線204。一個(gè)或多個(gè)通信總線204可選地包括互連系統(tǒng)組件和控制系統(tǒng)組件之間的通信的電路(有時(shí)稱為芯片組)。管理模塊121通過一個(gè)或多個(gè)通信總線204與緩沖器123、緩沖器124、錯(cuò)誤控制模塊125和存儲(chǔ)介質(zhì)130(例如,通過存儲(chǔ)介質(zhì)I/O 128)可操作地耦合。存儲(chǔ)器202包括高速隨機(jī)存取存儲(chǔ)器,諸如DRAM、SRAM、DDR RAM或其他隨機(jī)存取固態(tài)存儲(chǔ)器器件,并且可以包括非易失性存儲(chǔ)器,諸如一個(gè)或多個(gè)磁盤存儲(chǔ)器件、光盤存儲(chǔ)器件、閃速存儲(chǔ)器器件或其它非易失性固態(tài)存儲(chǔ)器件。存儲(chǔ)器202可選地包括位于遠(yuǎn)離一個(gè)或多個(gè)CPU 122的一個(gè)或多個(gè)存儲(chǔ)器件。存儲(chǔ)器202或者可替代地存儲(chǔ)器202內(nèi)的非易失性存儲(chǔ)器器件包括非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器202或者存儲(chǔ)器202的非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)以下程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:

      ·數(shù)據(jù)讀取模塊206,用于根據(jù)來自計(jì)算機(jī)系統(tǒng)110的讀取命令來進(jìn)行讀取操作以從存儲(chǔ)介質(zhì)130(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的持久性數(shù)據(jù)存儲(chǔ)體)讀取數(shù)據(jù);

      ·數(shù)據(jù)寫入模塊208,用于根據(jù)來自計(jì)算機(jī)系統(tǒng)110的寫入命令來進(jìn)行寫入操作以將數(shù)據(jù)(例如,包括寫入數(shù)據(jù)和日志條目的記錄)寫入到存儲(chǔ)介質(zhì)130;

      ·數(shù)據(jù)擦除模塊210,用于根據(jù)來自計(jì)算機(jī)系統(tǒng)110的擦除命令來進(jìn)行擦除操作以從存儲(chǔ)介質(zhì)130擦除數(shù)據(jù);

      ·日志條目模塊212,用于生成與相應(yīng)的寫入數(shù)據(jù)相關(guān)聯(lián)的日志條目;

      ·分配模塊214,用于為記錄分配存儲(chǔ)介質(zhì)130的一部分(例如,一組邏輯地址);

      ·參考生成模塊216,用于為記錄生成參考標(biāo)識符;

      ·記錄管理模塊218,用于通過用先前生成的值和獲得的數(shù)據(jù)填充(populate)記錄的多個(gè)字段來生成記錄;例如,記錄可以包括以下字段(或這些字段的子集):元數(shù)據(jù)、日志條目、用于該記錄的參考標(biāo)識符、用于下一個(gè)記錄的前向參考標(biāo)識符、與為下一個(gè)記錄分配的存儲(chǔ)介質(zhì)130的部分相關(guān)聯(lián)的前向參考地址、以及寫入數(shù)據(jù);在一些實(shí)施例中,先前生成的值和獲得的數(shù)據(jù)被臨時(shí)存儲(chǔ)在記錄緩沖器220中;

      ·日志流管理模塊222,用于將臨時(shí)存儲(chǔ)在日志流緩沖器224中的多個(gè)日志條目批處理(batch)為日志條目集合,并將日志流部分寫入到存儲(chǔ)介質(zhì)130中的日志流134;日志流部分包括日志條目集合和參考對(例如,包括前向參考標(biāo)識符和與下一個(gè)記錄相關(guān)聯(lián)的前向參考地址);在一些實(shí)施例中,日志流部分包括多于一個(gè)參考對,如下面更詳細(xì)地說明的;

      ·恢復(fù)模塊226,用于響應(yīng)于檢測到錯(cuò)誤條件或同步命令,進(jìn)行恢復(fù)處理,或致恢復(fù)處理被執(zhí)行;

      ·刪除模塊228,用于從存儲(chǔ)介質(zhì)130刪除記錄;以及

      ·邏輯到物理映射230,其將邏輯地址映射到存儲(chǔ)介質(zhì)130的各自部分的物理地址,并且可選地還將存儲(chǔ)介質(zhì)130的各自部分的物理地址映射到邏輯地址。

      上面標(biāo)識出的要素的每個(gè)可以存儲(chǔ)在先前提到的存儲(chǔ)器器件的一個(gè)或多個(gè)中,并且對應(yīng)于用于進(jìn)行上述功能的指令集。上述標(biāo)識出的模塊或程序(即,指令集)不必被實(shí)現(xiàn)為單獨(dú)的軟件程序、過程或模塊,因此這些模塊的各種子集可以被組合或以其他方式重新布置在各種實(shí)施例中。在一些實(shí)施例中,存儲(chǔ)器202存儲(chǔ)上述標(biāo)識出的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器202可以存儲(chǔ)上面沒有描述的附加的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器202中或存儲(chǔ)器202的非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)提供用于實(shí)現(xiàn)下面參照圖8A-8C所述的任何方法的指令。

      圖2B是示出了根據(jù)一些實(shí)施例的計(jì)算機(jī)系統(tǒng)100(例如主機(jī))的框圖。計(jì)算機(jī)系統(tǒng)110通常包括:一個(gè)或多個(gè)處理單元(CPU)252,用于執(zhí)行存儲(chǔ)在存儲(chǔ)器256中的模塊、程序和/或指令,并由此進(jìn)行處理操作;存儲(chǔ)器256;一個(gè)或多個(gè)網(wǎng)絡(luò)接口258;以及用于互連這些組件的一個(gè)或多個(gè)通信總線254。一個(gè)或多個(gè)通信總線254可選地包括互連系統(tǒng)組件并控制系統(tǒng)組件之間的通信的電路(有時(shí)稱為芯片組)。計(jì)算機(jī)系統(tǒng)110通過一個(gè)或多個(gè)通信總線254與數(shù)據(jù)存儲(chǔ)系統(tǒng)100可操作地耦合。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110還包括用戶接口260。用戶接口260包括一個(gè)或多個(gè)輸出設(shè)備262,該一個(gè)或多個(gè)輸出設(shè)備262使能呈現(xiàn)介質(zhì)內(nèi)容,其包括一個(gè)或多個(gè)揚(yáng)聲器和/或一個(gè)或多個(gè)視覺顯示器。用戶接口260還包括一個(gè)或多個(gè)輸入設(shè)備264,這包括促進(jìn)用戶輸入的用戶接口組件,諸如鍵盤、鼠標(biāo)、語音命令輸入單元或麥克風(fēng)、觸摸屏顯示器、觸敏輸入板、手勢捕捉相機(jī)或其它輸入按鈕或控制。存儲(chǔ)器256包括高速隨機(jī)存取存儲(chǔ)器,諸如DRAM、SRAM、DDR RAM或其他隨機(jī)存取固態(tài)存儲(chǔ)器器件,并且可以包括非易失性存儲(chǔ)器,諸如一個(gè)或多個(gè)磁盤存儲(chǔ)器件、光盤存儲(chǔ)器件、閃速存儲(chǔ)器器件或其它非易失性固態(tài)存儲(chǔ)器件。存儲(chǔ)器256可選地包括位于遠(yuǎn)離一個(gè)或多個(gè)CPU 252的一個(gè)或多個(gè)存儲(chǔ)器件。存儲(chǔ)器256或者可替代地存儲(chǔ)器256內(nèi)的非易失性存儲(chǔ)器器件包括非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器256或者存儲(chǔ)器256的非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)以下程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:

      ·操作系統(tǒng)266,包括用于處理各種基本系統(tǒng)服務(wù)和用于進(jìn)行依賴硬件的任務(wù)的程序;

      ·網(wǎng)絡(luò)通信模塊268,用于將計(jì)算機(jī)系統(tǒng)100連接到經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)接口258(有線或無線)與一個(gè)或多個(gè)網(wǎng)絡(luò)連接的數(shù)據(jù)存儲(chǔ)系統(tǒng)110;

      ·呈現(xiàn)模塊270,用于經(jīng)由與用戶接口260相關(guān)聯(lián)的一個(gè)或多個(gè)輸出設(shè)備262(例如,顯示器、揚(yáng)聲器等)使能在計(jì)算機(jī)系統(tǒng)110處呈現(xiàn)信息(例如,用于網(wǎng)頁或應(yīng)用程序的用戶接口、音頻和/或視頻內(nèi)容、文本等)的表示;

      ·輸入處理模塊272,用于檢測來自一個(gè)或多個(gè)輸入設(shè)備614的一個(gè)的一個(gè)或多個(gè)用戶輸入或交互并解釋所檢測的輸入或交互;

      ·存儲(chǔ)器命令模塊274,用于發(fā)出存儲(chǔ)器命令(例如,讀取、寫入和擦除命令)到存儲(chǔ)控制器120;以及

      ·管理模塊276,用于持久存儲(chǔ)數(shù)據(jù),該管理模塊276包括但不限于:

      °日志條目模塊278,用于生成與相應(yīng)的寫入數(shù)據(jù)相關(guān)聯(lián)的日志條目;

      °分配模塊280,用于為記錄分配存儲(chǔ)介質(zhì)130(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的持久性數(shù)據(jù)存儲(chǔ)體)的一部分(例如,一組邏輯地址);

      °參考生成模塊282,用于為記錄生成參考標(biāo)識符;

      °記錄管理模塊284,用于通過用先前生成的值和獲得的數(shù)據(jù)填充記錄的多個(gè)字段來生成記錄,例如包括元數(shù)據(jù)、日志條目、用于記錄的參考標(biāo)識符、用于下一個(gè)記錄的前向參考標(biāo)識符、與為下一個(gè)記錄分配的存儲(chǔ)介質(zhì)130的部分相關(guān)聯(lián)的前向參考地址、以及寫入數(shù)據(jù),其中,先前生成的值和獲得的數(shù)據(jù)被(臨時(shí))存儲(chǔ)在記錄緩沖器286中;

      °日志流管理模塊288,用于將(臨時(shí))存儲(chǔ)在日志流緩沖器290中的多個(gè)日志條目批處理為日志條目集合,并將日志流部分寫入到存儲(chǔ)介質(zhì)130中的日志流134,該日志流部分包括日志條目集合和參考對(例如,包括前向參考標(biāo)識符和與下一個(gè)記錄相關(guān)聯(lián)的前向參考地址);

      °恢復(fù)模塊292,用于響應(yīng)于檢測到錯(cuò)誤條件或同步命令,進(jìn)行恢復(fù)處理或致使恢復(fù)處理被執(zhí)行;

      °刪除模塊294,用于從存儲(chǔ)介質(zhì)130刪除記錄;

      °邏輯到物理映射296,將邏輯地址與存儲(chǔ)介質(zhì)130的各個(gè)部分的物理地址相關(guān)聯(lián);以及

      °一個(gè)或多個(gè)數(shù)據(jù)庫表298(例如,一組索引或目錄),用于定位存儲(chǔ)在存儲(chǔ)介質(zhì)130(例如,持久性數(shù)據(jù)存儲(chǔ)體)中的數(shù)據(jù)(例如,記錄132)。

      上面標(biāo)識出的要素的每個(gè)可以存儲(chǔ)在先前提到的存儲(chǔ)器器件的一個(gè)或多個(gè)中,并且對應(yīng)于用于進(jìn)行上述功能的指令集。上述標(biāo)識出的模塊或程序(即,指令集)不必被實(shí)現(xiàn)為單獨(dú)的軟件程序、過程或模塊,因此這些模塊的各種子集可以被組合或以其他方式重新布置在各種實(shí)施例中。在一些實(shí)施例中,存儲(chǔ)器256存儲(chǔ)上述標(biāo)識出的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器256可以存儲(chǔ)上面沒有描述的附加的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器256中或存儲(chǔ)器256的非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)提供用于實(shí)現(xiàn)下面參照圖8A-8C所述的任何方法的指令。

      雖然圖2A-圖2B分別示出了管理模塊121和計(jì)算機(jī)系統(tǒng)110,但是圖2A-圖2B更意在作為分別可以存在于管理模塊和計(jì)算機(jī)系統(tǒng)中的各種特征的功能描述,而不是作為本文所述的實(shí)施例的結(jié)構(gòu)示意。在實(shí)踐中,并且如本領(lǐng)域的普通技術(shù)人員所認(rèn)識到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,且某些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以分離。

      圖3示出了根據(jù)一些實(shí)施例的多個(gè)相關(guān)數(shù)據(jù)結(jié)構(gòu)(例如,記錄302)的框圖。圖3包括記錄302-1、302-2、302-3和302-4。在圖3中,在持久性數(shù)據(jù)存儲(chǔ)體(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的存儲(chǔ)介質(zhì)130)中的邏輯地址或一組邏輯地址已經(jīng)被分配給每個(gè)記錄302-1、302-2、302-3和302-4;然而,只有記錄302-1、302-2和302-3已經(jīng)被寫入到持久性數(shù)據(jù)存儲(chǔ)體。

      每個(gè)記錄302-1、302-2和302-3包括元數(shù)據(jù)304、日志條目306、參考標(biāo)識符308、前向參考標(biāo)識符310、前向參考地址312和寫入數(shù)據(jù)314。記錄302-3例如包括元數(shù)據(jù)304-3、日志條目306-3、參考標(biāo)識符308-3、前向參考標(biāo)識符310-3、前向參考地址312-3和寫入數(shù)據(jù)314-3。

      在一些實(shí)施例中,代表性元數(shù)據(jù)304-1包括與寫入數(shù)據(jù)314-1相關(guān)的信息。例如,元數(shù)據(jù)304-1包括與寫入數(shù)據(jù)314-1的提供者對應(yīng)的信息,諸如與提供寫入數(shù)據(jù)314-1一方或者寫入數(shù)據(jù)314-1的作者相關(guān)聯(lián)的唯一標(biāo)識符。在另一個(gè)示例中,元數(shù)據(jù)304-1包括與寫入數(shù)據(jù)314-1相關(guān)的信息,諸如指示記錄302-1的寫入操作的時(shí)間的時(shí)間戳、編碼和加密信息、冗余信息和/或其他這樣的信息。

      在一些實(shí)施例中,代表性日志條目306-1包括響應(yīng)于檢測到錯(cuò)誤條件(例如,電源故障、不可校正的位錯(cuò)誤率等)或同步命令而足以重放(replay)與寫入數(shù)據(jù)314-1相關(guān)聯(lián)的業(yè)務(wù)(例如,寫入操作)的信息。這樣,日志條目使得電子系統(tǒng)或設(shè)備(例如,計(jì)算機(jī)系統(tǒng)110,圖1,或存儲(chǔ)控制器120,圖1)能夠重放在最近的快照之后執(zhí)行的對持久性數(shù)據(jù)存儲(chǔ)體的業(yè)務(wù)。例如,日志條目306-1包括為寫入數(shù)據(jù)314-1分配的邏輯地址,或者可替代地包括記錄302-1的邏輯地址。在該示例中,包括在日志條目306-1中的信息使得電子系統(tǒng)或設(shè)備能夠確定在哪里寫入數(shù)據(jù)314-1符合持久性數(shù)據(jù)存儲(chǔ)體(例如,為寫入數(shù)據(jù)分配的邏輯地址或者一組邏輯地址)的情形。

      在一些實(shí)施例中,代表性參考標(biāo)識符308-1是用于記錄302-1的唯一標(biāo)識符。例如,參考標(biāo)識符308-1是隨機(jī)生成的N位數(shù)字。在另一個(gè)示例中,參考標(biāo)識符308-1包括在較高的N/2個(gè)位中的N/2位數(shù)字(其包含相應(yīng)的記錄302的寫入操作的以秒為單位的時(shí)間)和在參考標(biāo)識符308-1的較低的N/2個(gè)位中的隨機(jī)生成的N/2位數(shù)字。在圖3中,用于記錄302-1的參考標(biāo)識符308-1為0x6681。

      在一些實(shí)施例中,代表性前向參考標(biāo)識符310-1包括下一個(gè)記錄的參考標(biāo)識符。在圖3中,用于記錄302-1的前向參考標(biāo)識符310-1為0x3695,其對應(yīng)于記錄302-2的參考標(biāo)識符308-2。

      在一些實(shí)施例中,代表性前向參考地址312-1包括指向分配給下一個(gè)記錄的邏輯地址或者一組邏輯地址的指針。例如,記錄302-1中的前向參考地址312-1指示分配給記錄302-2(即下一個(gè)記錄)的第一個(gè)邏輯地址。

      在一些實(shí)施例中,代表性寫入數(shù)據(jù)314-1由主機(jī)(例如,計(jì)算機(jī)系統(tǒng)110)來提供。

      在一些實(shí)施例中,每個(gè)記錄302具有預(yù)定的大小或多個(gè)預(yù)定的大小中的一個(gè)(例如,4kB、64kB、1MB、16MB等)。在一些實(shí)施例中,每個(gè)記錄302具有取決于相應(yīng)的寫入數(shù)據(jù)314的大小的不同大小。

      圖4示出了根據(jù)一些實(shí)施例的生成圖3中的數(shù)據(jù)結(jié)構(gòu)(例如,記錄302)的方法400的流程圖表示。在一些實(shí)施例中,方法400由具有一個(gè)或多個(gè)處理器和存儲(chǔ)器的電子系統(tǒng)或設(shè)備來進(jìn)行,該存儲(chǔ)器可操作地與持久性數(shù)據(jù)存儲(chǔ)體(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器(NVM)的存儲(chǔ)介質(zhì)130)耦合。例如,方法400由存儲(chǔ)控制器120或者其一個(gè)或多個(gè)組件(例如,管理模塊121,圖1和圖2A)來進(jìn)行。在另一個(gè)示例中,方法400由計(jì)算機(jī)系統(tǒng)110或者其一個(gè)或多個(gè)組件(例如,管理模塊276,圖2B)來進(jìn)行。在一些實(shí)施例中,方法400由存儲(chǔ)在非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令支配,并且這些指令由電子系統(tǒng)或設(shè)備的一個(gè)或多個(gè)處理器執(zhí)行。例如,上述的一個(gè)或多個(gè)處理器是管理模塊121的一個(gè)或多個(gè)處理單元(CPU)122、或計(jì)算機(jī)系統(tǒng)110的一個(gè)或多個(gè)處理單元(CPU)252。

      電子系統(tǒng)或設(shè)備生成(402)與用于記錄A(例如,在圖3中的記錄302-1)的寫入數(shù)據(jù)相關(guān)聯(lián)的日志條目。在一些實(shí)施例中,日志條目包括足以重放與記錄A的寫入數(shù)據(jù)相關(guān)聯(lián)的業(yè)務(wù)(例如,寫入操作)的信息。

      電子系統(tǒng)或設(shè)備為下一記錄分配(404)持久性數(shù)據(jù)存儲(chǔ)體的一部分,該下一記錄在此稱為記錄B。在一些實(shí)施例中,一組邏輯地址被分配給記錄B,并且邏輯到物理映射230被更新以包括所分配的該組邏輯地址。

      電子系統(tǒng)或設(shè)備生成(406)用于記錄B的參考標(biāo)識符。在圖3中,例如,用于記錄302-2的參考標(biāo)識符308-2為0x3695。在一些實(shí)施例中,參考標(biāo)識符是標(biāo)識記錄的唯一數(shù)字。在一些實(shí)施例中,參考標(biāo)識符是單調(diào)增加且隨機(jī)生成的。

      電子系統(tǒng)或設(shè)備生成(408)記錄A。在一些實(shí)施例中,生成記錄A包括用存儲(chǔ)在記錄緩沖器220中的先前生成的值和獲得的數(shù)據(jù)填充記錄A的多個(gè)字段。在一些實(shí)施例中,記錄A包括:(ⅰ)在步驟402中生成的用于記錄A的日志條目;(ii)用于記錄A的參考標(biāo)識符(例如,先前生成的);(iii)用于記錄B的前向參考標(biāo)識符(例如,0x3695),該前向參考標(biāo)識符與在步驟406中為記錄B生成的參考標(biāo)識符相匹配;(iv)用于記錄B的前向參考地址,該前向參考地址對應(yīng)于在步驟404中為記錄B分配的一組邏輯地址或者該組邏輯地址中的第一邏輯地址;以及(v)用于記錄A的寫入數(shù)據(jù)(例如,從主機(jī)獲得的)。然而,在一些實(shí)施例中,記錄A包括這些字段的子集,并且可選地包括附加的字段。

      電子系統(tǒng)或設(shè)備進(jìn)行單個(gè)寫入操作以將記錄A寫入(410)到持久性數(shù)據(jù)存儲(chǔ)體。例如,數(shù)據(jù)寫入模塊208將記錄A寫入到為記錄A分配的一組邏輯地址。在一些實(shí)施例中,雖然記錄A被寫入到一組連續(xù)的邏輯地址,但是記錄A跨過持久性數(shù)據(jù)存儲(chǔ)體(例如,一個(gè)或多個(gè)閃速存儲(chǔ)器器件,一個(gè)或多個(gè)閃速存儲(chǔ)器塊,等等)的一個(gè)或多個(gè)物理部分而被打斷(strip)。

      接下來,電子系統(tǒng)或設(shè)備生成(412)與用于記錄B(例如,在圖3中的記錄302-2)的寫入數(shù)據(jù)相關(guān)聯(lián)的日志條目。

      電子系統(tǒng)或設(shè)備為下一個(gè)記錄分配(414)持久性數(shù)據(jù)存儲(chǔ)體的一部分,該下一記錄在此稱為記錄C。在一些實(shí)施例中,一組邏輯地址被分配給記錄C,并且邏輯到物理映射230被更新以包括所分配的該組邏輯地址。

      電子系統(tǒng)或設(shè)備生成(416)用于記錄C的參考標(biāo)識符。在圖3中,例如,用于記錄302-3的參考標(biāo)識符308-3為0x4231。

      電子系統(tǒng)或設(shè)備生成(418)記錄B。在一些實(shí)施例中,記錄B包括:(i)在步驟412中為記錄B生成的日志條目;(ii)在步驟406中為記錄B生成的參考標(biāo)識符;(iii)用于記錄C的前向參考標(biāo)識符(例如,0x4231),該前向參考標(biāo)識符與在步驟416中為記錄C生成的參考標(biāo)識符相匹配;(iv)用于記錄C的前向參考地址,該前向參考地址對應(yīng)于為記錄C分配的一組邏輯地址或者該組邏輯地址中的第一邏輯地址;以及(v)用于記錄B的寫入數(shù)據(jù)。然而,在一些實(shí)施例中,記錄B包括這些字段的子集,并且可選地包括附加的字段。

      電子系統(tǒng)或設(shè)備進(jìn)行單個(gè)寫入操作以將記錄B寫入(420)到持久性數(shù)據(jù)存儲(chǔ)體。例如,數(shù)據(jù)寫入模塊208將記錄B寫入到在步驟404中為記錄B分配的一組邏輯地址。

      電子系統(tǒng)或設(shè)備繼續(xù)將記錄寫入到持久存儲(chǔ)中,如上所述,并且在寫入每個(gè)這樣的記錄之前,為下一個(gè)記錄分配持久性數(shù)據(jù)存儲(chǔ)體的一部分,使得被寫入到持久性數(shù)據(jù)存儲(chǔ)體的每個(gè)記錄包括相對于正在被寫入的記錄的下一個(gè)記錄的前向參考地址和前向參考標(biāo)識符、以及日志條目和寫入數(shù)據(jù)。此外,每個(gè)這樣的記錄用單個(gè)寫入操作被寫入,如上所述。

      圖5示出了根據(jù)一些實(shí)施例的日志流134的框圖。日志流134存儲(chǔ)在持久性數(shù)據(jù)存儲(chǔ)體(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的存儲(chǔ)介質(zhì)130)中,并且日志流134包括多個(gè)日志流部分,這包含日志流部分504-1和504-2。

      在一些實(shí)施例中,在日志流134中的多個(gè)日志條目的每個(gè)包括足以重放與相應(yīng)的寫入數(shù)據(jù)相關(guān)聯(lián)的業(yè)務(wù)(例如,寫入操作)的信息。在一些實(shí)施例中,日志流134的各個(gè)日志流部分504對應(yīng)于日志條目集合(例如,256個(gè)日志條目)。在圖5中,日志流部分504-1對應(yīng)于包括日志條目0至255的日志條目集合,并且日志流部分504-2對應(yīng)于包括日志條目7324至7679的日志條目集合。

      在一些實(shí)施例中,電子系統(tǒng)或設(shè)備(例如,計(jì)算機(jī)系統(tǒng)110中,圖1,或存儲(chǔ)控制器120,圖1)或其組件(例如,日志流管理模塊222,圖2A,或日志流管理模塊288,圖2B)被配置成將多個(gè)日志條目批處理為日志條目集合,并且將日志流部分寫入到持久性數(shù)據(jù)存儲(chǔ)體中的日志流。日志流部分包括日志條目集合和參考對。在一些實(shí)施例中,日志條目集合中的最后的日志條目被包括在還包含參考對的記錄中。在一些實(shí)施例中,參考對包括與相應(yīng)的日志條目還沒有被寫入到日志流的下一個(gè)分配的記錄對應(yīng)的前向參考標(biāo)識符和前向參考地址。

      在圖5中,日志流部分504-1包括日志條目0至255(例如,日志條目集合),并且還包括前向參考標(biāo)識符506和前向參考地址508(例如,參考對)。前向參考標(biāo)識符506和前向參考地址508也被包括在對應(yīng)于日志條目255的記錄中。在圖5中,日志流部分504-2包括日志條目7324至7679(例如,日志條目集合),并且還包括前向參考標(biāo)識符510和前向參考地址512(例如,對應(yīng)于記錄302-1的參考對)。前向參考標(biāo)識符510和前向參考地址512被包括在對應(yīng)于日志條目7679的記錄中。例如,日志流部分504-1是日志流134的第一部分,并且日志流部分504-2是日志流134的最新的(或最新近被寫入的)部分。

      例如,電子系統(tǒng)或設(shè)備或其組件(例如,日志流管理模塊222,圖2A,或日志流管理模塊288,圖2B)在緩沖器(例如,日志流緩沖器224,圖2A,或日志流緩沖器290,圖2B)中緩存與記錄0相關(guān)聯(lián)的日志條目0和包括在記錄0中的前向參考標(biāo)識符的前向參考地址。然后,在該示例中,電子系統(tǒng)或設(shè)備或其組件(例如,日志流管理模塊222,圖2A,或日志流管理模塊288,圖2B)在緩沖器中緩存與記錄1相關(guān)聯(lián)的日志條目1,并且用包含在記錄1中的前向參考標(biāo)識符和前向參考地址替換被包含在記錄0中的前向參考標(biāo)識符和前向參考地址。繼續(xù)該示例,電子系統(tǒng)或設(shè)備或其組件(例如,日志流管理模塊222,圖2A,或日志流管理模塊288,圖2B)繼續(xù)緩存日志條目,并且用在與最新緩存的日志條目相關(guān)聯(lián)的記錄中的前向參考標(biāo)識符和前向參考地址替換已緩存的前向參考標(biāo)識符和前向參考地址,直到預(yù)定計(jì)數(shù)的日志條目(例如,256個(gè)日志條目)被緩存在緩沖器中。在一些可替代的實(shí)施例中,電子系統(tǒng)或設(shè)備或其組件緩存日志條目而不將前向參考標(biāo)識符和前向參考地址寫入到日志流緩沖器,直到預(yù)定計(jì)數(shù)的日志條目(例如,256個(gè)日志條目)被緩存在緩沖器中,此時(shí)該電子系統(tǒng)或設(shè)備或其組件在日志流緩沖器中存儲(chǔ)在與最新緩存的日志條目相關(guān)聯(lián)的記錄中的前向參考標(biāo)識符和前向參考地址。

      在一些實(shí)施例中,在電子系統(tǒng)或設(shè)備或其組件(例如,日志流管理模塊222,圖2A,或日志流管理模塊288,圖2B)已經(jīng)緩存了預(yù)定計(jì)數(shù)的日志條目之后,該電子系統(tǒng)或設(shè)備或其組件(例如,數(shù)據(jù)寫入模塊208,圖2A,或存儲(chǔ)器命令模塊274,圖2B)將緩沖器的內(nèi)容(例如,日志流部分)寫到或致使該內(nèi)容被寫到持久性數(shù)據(jù)存儲(chǔ)體中的日志流134,并且緩沖器被刷新(flush)。

      在一些實(shí)施例中,響應(yīng)于檢測到錯(cuò)誤條件,電子系統(tǒng)或設(shè)備或其組件(例如,恢復(fù)模塊226,圖2A,或恢復(fù)模塊292,圖2B)被配置為進(jìn)行恢復(fù)處理以恢復(fù)持久性數(shù)據(jù)存儲(chǔ)體。在一些實(shí)施例中,響應(yīng)于同步命令,電子系統(tǒng)或設(shè)備或其組件(例如,恢復(fù)模塊226,圖2A,或恢復(fù)模塊292,圖2B)被配置為進(jìn)行恢復(fù)處理以將目標(biāo)持久性數(shù)據(jù)存儲(chǔ)體與參考持久性數(shù)據(jù)存儲(chǔ)體同步。

      在一些實(shí)施例中,恢復(fù)處理包括利用單個(gè)讀取操作或一系列連續(xù)的讀取操作從日志流134讀取日志條目。在該示例中,在來自日志流134的日志條目已經(jīng)被讀取之后,電子系統(tǒng)或設(shè)備或其組件(例如,恢復(fù)模塊226,圖2A,或恢復(fù)模塊292,圖2B)被配置為利用這些日志條目來重放與每個(gè)日志條目相關(guān)聯(lián)的業(yè)務(wù)。因此,日志流134使得電子系統(tǒng)或設(shè)備能夠以最小數(shù)量的讀取操作來進(jìn)行恢復(fù)處理。

      在一些實(shí)施例中,恢復(fù)處理還包括跟隨(follow)被包括在最新的日志流部分(例如,日志流部分504-2)中的指向第一記錄(例如,記錄302-1)的指針(例如,前向參考地址512),該第一記錄的日志條目尚未被寫入到日志流。在圖5中,在日志流部分504-2中的前向參考地址512包括在為記錄302-1分配的一組邏輯地址中的第一邏輯地址。

      在一些實(shí)施例中,恢復(fù)處理還包括確定被包括在最新的日志流部分鐘的前向參考標(biāo)識符是否與第一記錄的參考標(biāo)識符相匹配。在圖5中,前向參考標(biāo)識符510(例如,0x6681)與被包括在記錄302-1中的參考標(biāo)識符(例如,0x6681)相匹配。根據(jù)前向參考標(biāo)識符510與記錄302-1參考標(biāo)識符相匹配的確定,恢復(fù)處理還包括利用與記錄302-1相關(guān)聯(lián)的日志條目7680來重放與記錄302-1的寫入數(shù)據(jù)相關(guān)聯(lián)的業(yè)務(wù)。

      在一些實(shí)施例中,恢復(fù)處理還包括跟隨第一記錄(例如,記錄302-1)中的到第二記錄(例如,記錄302-2)的前向參考地址,確定第一記錄中的前向參考標(biāo)識符是否與第二記錄中的參考標(biāo)識符相匹配,并且根據(jù)存在匹配的確定,重放與第二記錄的寫入數(shù)據(jù)相關(guān)聯(lián)的業(yè)務(wù)。重復(fù)該處理,直到被包括在記錄(例如,記錄302-3)中的前向參考標(biāo)識符未能與下一個(gè)記錄(例如,記錄302-4)中的參考標(biāo)識符相匹配。

      當(dāng)不能確定匹配時(shí),電子系統(tǒng)或設(shè)備或其組件(例如,恢復(fù)模塊226,圖2A,或恢復(fù)模塊292,圖2B)被配置為停止恢復(fù)處理。匹配失敗指示下一個(gè)記錄(例如,記錄302-4)已經(jīng)被分配但是沒有被寫入。因此,在檢測到錯(cuò)誤條件或同步命令之前,電子系統(tǒng)或設(shè)備已經(jīng)完成重放發(fā)生的所有業(yè)務(wù)(例如,已成功交付于持久性數(shù)據(jù)存儲(chǔ)體的所有業(yè)務(wù))。

      在另一個(gè)示例中,與圖5中所示的不同,日志流部分504-2中的前向參考地址512指向被分配但沒有被寫入到持久存儲(chǔ)的下一個(gè)記錄。因此,日志流部分504-2中的前向參考標(biāo)識符510與被分配但沒有被寫入的下一個(gè)記錄相關(guān)聯(lián)的參考標(biāo)識符不匹配,指示恢復(fù)處理完成。

      圖6示出了根據(jù)一些實(shí)施例的日志流部分602的框圖。在圖6中,日志流部分602是持久性數(shù)據(jù)存儲(chǔ)體(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的存儲(chǔ)介質(zhì)130)中的日志流134(圖1)的代表性部分。

      日志流部分602包括日志條目0至255和多個(gè)參考對。日志流部分602的每個(gè)參考對包括指向與多個(gè)預(yù)定記錄大小的一個(gè)相關(guān)聯(lián)的參考列表(或記錄組)中的下一個(gè)分配的記錄的第一邏輯地址的指針(例如,前向參考地址)。在一些實(shí)施例中,在日志流134中的最后的日志流部分602中,參考對包括與相應(yīng)的日志條目還沒有被寫入到日志流134的下一個(gè)分配的記錄對應(yīng)的前向參考標(biāo)識符和前向參考地址。

      在圖6中,前向參考標(biāo)識符604和前向參考地址606對應(yīng)于記錄652。在圖6中,日志流部分602中的前向參考標(biāo)識符604(例如,0x6477)與記錄652中的參考標(biāo)識符654(例如,0x6477)相匹配。前向參考地址606對應(yīng)于為記錄652分配的一組邏輯地址或者該組邏輯地址中的第一邏輯地址。記錄652為4kB參考列表650中的第一4kB記錄。4kB參考列表650鏈接具有4kB的記錄大小的記錄。

      在圖6中,前向參考標(biāo)識符608和前向參考地址610對應(yīng)于記錄622。在圖6中,日志流部分602中的前向參考標(biāo)識符608(例如,0x7614)與記錄622中的參考標(biāo)識符624(例如,0x7614)相匹配。前向參考地址610對應(yīng)于為記錄622分配的一組邏輯地址或者一組邏輯地址中的第一邏輯地址。記錄622為64kB參考列表620中的第一64kB記錄。64kB參考列表620鏈接具有64kB的記錄大小的記錄。

      在圖6中,前向參考標(biāo)識符612和前向參考地址614對應(yīng)于記錄632。在圖6中,日志流部分602中的前向參考標(biāo)識符612(例如,0x5468)與記錄632中的參考標(biāo)識符634(例如,0x5468)相匹配。前向參考地址614對應(yīng)于為記錄632分配的一組邏輯地址或者一組邏輯地址中的第一邏輯地址。記錄632為1MB參考列表630中的第一1MB記錄。1MB參考列表630鏈接具有1MB的記錄大小的記錄。在圖6中,日志條目256被包括在記錄632中;因此,記錄632在對應(yīng)于日志條目255的記錄之后被寫入到持久性數(shù)據(jù)存儲(chǔ)體。

      在圖6中,前向參考標(biāo)識符616和前向參考地址618對應(yīng)于記錄642。在圖6中,日志流部分602中的前向參考標(biāo)識符616(例如,0x9540)與記錄642中的參考標(biāo)識符644(例如,0x9540)相匹配。前向參考地址618對應(yīng)于為記錄642分配的一組邏輯地址或者一組邏輯地址中的第一邏輯地址。記錄642為16MB參考列表640中的第一16MB記錄。16MB參考列表640鏈接具有16MB的記錄大小的記錄。

      圖7示出了根據(jù)一些實(shí)施例的相關(guān)數(shù)據(jù)結(jié)構(gòu)(例如,記錄702和710)的框圖。

      在圖7中,記錄702存儲(chǔ)在持久性數(shù)據(jù)存儲(chǔ)體(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的存儲(chǔ)介質(zhì)130)中并且包括寫入數(shù)據(jù)704。響應(yīng)于刪除寫入數(shù)據(jù)704的命令,電子系統(tǒng)或設(shè)備(例如,計(jì)算機(jī)系統(tǒng)110,圖1,或存儲(chǔ)控制器120,圖1)或其組件(例如,刪除模塊228,圖2A,或刪除模塊294,圖2B)被配置為生成記錄710,該記錄710包括指示記錄710表示記錄702的刪除的日志條目712和對應(yīng)于寫入數(shù)據(jù)704的墓碑(tombstone)714。然后,電子系統(tǒng)或設(shè)備或其組件(例如,數(shù)據(jù)寫入模塊208,圖2A,或存儲(chǔ)器命令模塊274,圖2B)被配置為通過單個(gè)寫入操作將記錄710寫入到持久性數(shù)據(jù)存儲(chǔ)體。在一些實(shí)施例中,記錄710被寫入到為記錄702分配的一組邏輯地址。

      圖8A-8B示出了根據(jù)一些實(shí)施例的持久存儲(chǔ)數(shù)據(jù)的方法800的流程圖表示。在一些實(shí)施例中,方法800由具有一個(gè)或多個(gè)處理器和存儲(chǔ)器的電子系統(tǒng)或設(shè)備來進(jìn)行,該存儲(chǔ)器與持久性數(shù)據(jù)存儲(chǔ)體(例如,包括諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器的存儲(chǔ)介質(zhì)130)可操作地耦合。例如,方法800由存儲(chǔ)控制器120或者其一個(gè)或多個(gè)組件(例如,管理模塊121,圖1和圖2A)來進(jìn)行。在另一個(gè)示例中,方法800由計(jì)算機(jī)系統(tǒng)110或者其一個(gè)或多個(gè)組件(例如,管理模塊276,圖2B)來進(jìn)行。在一些實(shí)施例中,方法800由存儲(chǔ)在非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令和由電子系統(tǒng)或設(shè)備的一個(gè)或多個(gè)處理器執(zhí)行的指令來管控。

      電子系統(tǒng)或設(shè)備生成(802)與對應(yīng)于第一記錄的第一寫入數(shù)據(jù)相關(guān)聯(lián)的日志條目。參照圖3,例如,電子系統(tǒng)或設(shè)備或其組件(例如,日志條目模塊212,圖2A,或日志條目模塊278,圖2B)基于寫入數(shù)據(jù)314-1生成用于記錄302-1的日志條目306-1。在一些實(shí)施例中,在生成記錄302-1之前,日志條目306-1隨后被緩存在緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中。

      在一些實(shí)施例中,日志條目包括(804)對應(yīng)于與第一寫入數(shù)據(jù)對應(yīng)的持久性數(shù)據(jù)存儲(chǔ)體的更新(例如,業(yè)務(wù)或存儲(chǔ)器操作)的信息。

      在一些實(shí)施例中,電子系統(tǒng)或設(shè)備生成(806)用于第一記錄的參考標(biāo)識符。參照圖3,例如,電子系統(tǒng)或設(shè)備或其組件(例如,參考生成模塊216,圖2A,或參考生成模塊282,圖2B)生成用于記錄302-1的參考標(biāo)識符308-1(例如,0x6681)。在一些實(shí)施例中,在生成記錄302-1之前,參考標(biāo)識符308-1隨后被緩存在緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中。

      在一些實(shí)施例中,在進(jìn)行(808)對應(yīng)于第一記錄的寫入操作之前,電子系統(tǒng)或設(shè)備為第二記錄分配(810)持久性數(shù)據(jù)存儲(chǔ)體的一部分。參照圖3,例如,在將記錄302-1寫入到持久性數(shù)據(jù)存儲(chǔ)體之前,電子系統(tǒng)或設(shè)備或其組件(例如,分配模塊214,圖2A,或分配模塊280,圖2B)為記錄302-2分配在持久性數(shù)據(jù)存儲(chǔ)體中的邏輯地址或一組邏輯地址。在一些實(shí)施例中,在生成記錄302-2之前,為記錄302-2分配的第一邏輯地址隨后作為前向參考地址被緩存在緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中。

      在一些實(shí)施例中,在進(jìn)行(808)對應(yīng)于第一記錄的寫入操作之前,電子系統(tǒng)或設(shè)備生成(812)用于第二記錄的參考標(biāo)識符,其中與第一記錄相關(guān)聯(lián)的前向參考標(biāo)識符與用于第二記錄的參考標(biāo)識符相匹配。參照圖3,例如,在將記錄302-1寫入到持久性數(shù)據(jù)存儲(chǔ)體之前,電子系統(tǒng)或設(shè)備或其組件(例如,參考生成模塊216,圖2A,或參考生成模塊282,圖2B)生成用于記錄302-2的參考標(biāo)識符308-2。在圖3中,例如,在記錄302-1中的前向參考標(biāo)識符310-1與用于記錄302-2的參考標(biāo)識符308-2(例如,0x3695)相匹配。在一些實(shí)施例中,在生成記錄302-2之前,參考標(biāo)識符308-1隨后被緩存在緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中。

      電子系統(tǒng)或設(shè)備生成(814)第一記錄,該第一記錄包含日志條目、第一寫入數(shù)據(jù)以及指向與第一記錄不同的第二記錄的指針。參照圖3,例如,電子系統(tǒng)或設(shè)備或其組件(例如,記錄管理模塊218,圖2A,或記錄管理模塊284,圖2B)通過用在相關(guān)聯(lián)的緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中緩存的先前生成的值和獲得的數(shù)據(jù)填充記錄302-2的多個(gè)字段來生成記錄302-2。例如,對于記錄302-2,日志條目字段用與寫入數(shù)據(jù)314-2相關(guān)聯(lián)的日志條目306-2來填充,寫入數(shù)據(jù)字段用從主機(jī)(例如,計(jì)算機(jī)系統(tǒng)110,圖1)接收的寫入數(shù)據(jù)314-2來填充,并且指針字段(例如,前向參考地址312-2)用分配給記錄302-3的一組邏輯地址或者在該一組邏輯地址中的第一邏輯地址來填充。

      在一些實(shí)施例中,指向第二記錄的指針是(816)對應(yīng)于分配給第二記錄的持久性數(shù)據(jù)存儲(chǔ)體的部分的前向參考地址。在圖3中,例如,記錄302-1的前向參考地址字段用前向參考地址312-1來填充,前向參考地址312-1包括在持久性數(shù)據(jù)存儲(chǔ)體中為記錄302-2分配的一組邏輯地址中的第一邏輯地址。因此,在該示例中,前向參考地址312-1指向記錄302-2。例如,為記錄302-2分配的一組邏輯地址被緩存在緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中。

      在一些實(shí)施例中,第一記錄還包括(818)與用于第二記錄的參考標(biāo)識符相匹配的前向參考標(biāo)識符。參照圖3,例如,記錄302-1的前向參考標(biāo)識符字段用與記錄302-2中的參考標(biāo)識符308-2(例如,0x3695)相匹配的前向參考標(biāo)識符310-1(例如,0x3695)來填充。例如,參考標(biāo)識符308-2被緩存在緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中。

      在一些實(shí)施例中,第一記錄還包括(820)用于第一記錄的參考標(biāo)識符。參照圖3,例如,記錄302-1的參考標(biāo)識符字段用參考標(biāo)識符308-1(例如,0x6681)來填充。例如,參考標(biāo)識符308-1被緩存在緩沖器(例如,記錄緩沖器220,圖2A,或記錄緩沖器286,圖2B)中。

      電子系統(tǒng)或設(shè)備進(jìn)行(822)單個(gè)寫入操作,該單個(gè)寫入操作包括將第一記錄寫入到持久性數(shù)據(jù)存儲(chǔ)體。參照圖3,例如,記錄302-2被寫入到持久性數(shù)據(jù)存儲(chǔ)體中的邏輯地址或者一組連續(xù)的邏輯地址。在一些實(shí)施例中,從主機(jī)(例如,計(jì)算機(jī)系統(tǒng)110)的角度,“寫入第一記錄”意味著將單個(gè)寫入命令發(fā)送到存儲(chǔ)控制器120以將第一記錄寫入到持久性數(shù)據(jù)存儲(chǔ)體(即,使得進(jìn)行寫入操作)。

      在一些實(shí)施例中,電子系統(tǒng)或設(shè)備將多個(gè)日志條目批處理(824)為日志條目集合,該日志條目集合包括與最后的記錄相關(guān)聯(lián)的最后相應(yīng)的日志條目。在一些實(shí)施例中,日志條目被緩存在緩沖器(例如,日志流緩沖器224,圖2A,或日志流緩沖器290,圖2B)中。參照圖5,例如,在已經(jīng)緩存預(yù)定計(jì)數(shù)的日志條目(例如,256個(gè)日志條目)之后,電子系統(tǒng)或設(shè)備或其組件(例如,日志流管理模塊222,圖2A,或日志流管理模塊288,圖2B)將緩存在緩沖器中的日志條目批處理為日志條目集合。在圖5中,例如,日志流部分504-2中的日志條目集合包括日志條目7324至7679。在圖5中,例如,日志條目7679是在日志流部分504-2中的日志條目集合的最后的日志條目。

      在一些實(shí)施例中,在進(jìn)行批處理之后,電子系統(tǒng)或設(shè)備進(jìn)行(826)第二寫入操作,該第二寫入操作包括將日志流部分寫入到持久性數(shù)據(jù)存儲(chǔ)體中的日志流,日志流部分包括日志條目集合和指向跟隨最后的記錄的下一個(gè)記錄的指針。參照圖5,例如,在將日志條目批處理為日志條目集合之后,電子系統(tǒng)或設(shè)備或其組件(例如,數(shù)據(jù)寫入模塊208,圖2A,或存儲(chǔ)器命令模塊274,圖2B)將日志流部分504-2寫入到持久性數(shù)據(jù)存儲(chǔ)體中的日志流134。在圖5中,例如,日志流部分504-2包括日志條目7324至7679(例如,日志條目集合),并且還包括前向參考標(biāo)識符510和前向參考地址512(例如,指向跟隨與日志條目7679相關(guān)聯(lián)的記錄的下一個(gè)記錄的指針)。在圖5中,在日志流部分504-2中的前向參考地址512包括在為記錄302-1分配的一組邏輯地址中的第一邏輯地址。

      在一些實(shí)施例中,日志條目集合中的多個(gè)日志條目被順序地寫入(828)到持久性數(shù)據(jù)存儲(chǔ)體中的日志流。例如,日志條目集合中的日志條目被按,在它們的對應(yīng)的記錄被寫入到持久性數(shù)據(jù)存儲(chǔ)體的順序而布置。參照圖5,例如,日志條目0對應(yīng)于寫入到持久性數(shù)據(jù)存儲(chǔ)體的第一記錄,且日志條目1對應(yīng)于寫入到持久性數(shù)據(jù)存儲(chǔ)體的第二記錄。為了保留該順序,日志條目順序地排列在日志條目集合中并且被順序地寫入到日志流134。

      在一些實(shí)施例中,在進(jìn)行批處理之后,電子系統(tǒng)或設(shè)備進(jìn)行(830)第二寫入操作,該第二寫入操作包括將日志流部分寫入到持久性數(shù)據(jù)存儲(chǔ)體中的日志流,日志流部分包括日志條目集合和多個(gè)指針,其中:該多個(gè)指針的每個(gè)與多個(gè)記錄組的一個(gè)相關(guān)聯(lián),其中每個(gè)記錄組對應(yīng)于不同的記錄大小;并且多個(gè)指針的一個(gè)與跟隨最后的記錄的下一個(gè)記錄相關(guān)聯(lián)。參照圖6,例如,日志數(shù)據(jù)流部分602被寫入到持久性數(shù)據(jù)存儲(chǔ)體中的日志流134。在圖6中,例如,日志流部分602包括日志條目0至255和多個(gè)參考對。在圖6中,例如,每個(gè)參考對包括指向與多個(gè)預(yù)定的記錄大小(例如,分別為4kB、64kB、1MB、16MB)的一個(gè)相關(guān)聯(lián)的參考列表(或記錄組)(例如,參考列表620、630、640、650)中下一個(gè)分配的記錄的第一邏輯地址的指針(例如,前向參考地址606、610、614、618)。在圖6中,前向參考地址614指向包括日志條目256的記錄632,該日志條目256是跟隨日志流部分602中的日志條目255的下一個(gè)日志條目。

      在一些實(shí)施例中,日志條目集合中的每個(gè)日志條目對應(yīng)于(832)多個(gè)不同的記錄大小的一個(gè)。在圖6中,例如,包括日志流部分602中的日志條目集合的日志條目0至255的每個(gè)與多個(gè)記錄大小(例如,4kB、64kB、1MB、16MB等等)的一個(gè)相關(guān)聯(lián)。

      在一些實(shí)施例中,電子系統(tǒng)或設(shè)備生成(834)第三記錄,該第三記錄包括指示該第三記錄表示第一寫入數(shù)據(jù)的刪除的日志條目、對應(yīng)于第一寫入數(shù)據(jù)的墓碑、以及與第四記錄相關(guān)聯(lián)的前向參考標(biāo)識符。參照圖7,例如,電子系統(tǒng)或設(shè)備或其組件(例如,刪除模塊228,圖2A,或刪除模塊294,圖2B)生成記錄710。在圖7中,例如,記錄710包括指示記錄710表示記錄702的刪除的日志條目712、對應(yīng)于記錄702中的寫入數(shù)據(jù)704的墓碑714、以及包括分配給下一個(gè)記錄的一組邏輯地址中的第一邏輯地址的前向參考地址716。

      在一些實(shí)施例中,在生成第三記錄之后,電子系統(tǒng)或設(shè)備進(jìn)行(836)第三寫入操作,該第三寫入操作包括將第三記錄寫入到持久性數(shù)據(jù)存儲(chǔ)體。參照圖7,例如,電子系統(tǒng)或設(shè)備或其組件(例如,數(shù)據(jù)寫入模塊208,圖2A,或存儲(chǔ)器命令模塊274,圖2B)將記錄710寫入到持久性數(shù)據(jù)存儲(chǔ)體。

      將理解,雖然術(shù)語“第一”、“第二”等在此可以用于描述各個(gè)要素,但這些要素不應(yīng)受限于這些術(shù)語。這些術(shù)語僅用于將要素彼此區(qū)分。例如,只要“第一記錄”的所有出現(xiàn)一致地更名并且“第二記錄”的所有出現(xiàn)一致地更名,第一記錄可以稱為第二記錄,并且類似地,第二記錄可以稱為第一記錄,不改變描述的意義。第一記錄和第二記錄都是記錄,但它們不是同一記錄。

      在此所使用的術(shù)語僅用于描述特定實(shí)施例的目的,而并非意圖限制權(quán)利要求。如在具體實(shí)施方式和所附權(quán)利要求中所使用的那樣,單數(shù)形式“一(a)”、“一個(gè)(an)”以及“該”意圖同樣包括復(fù)數(shù)形式,除非上下文另外清楚指明。還應(yīng)理解,在此所使用的術(shù)語“和/或”指代并且包括關(guān)聯(lián)列出的項(xiàng)中的一個(gè)或多個(gè)的任何以及所有可能組合。還應(yīng)理解,術(shù)語“包括”和/或“包含”當(dāng)在本說明書中使用時(shí)指定所陳述的特征、整體、步驟、操作、要素和/或組件的存在,但不排除一個(gè)或多個(gè)其它特征、整體、步驟、操作、要素、組件或其群組的存在或添加。

      如在此使用的那樣,取決于上下文,術(shù)語“如果”可以理解為意味著“當(dāng)所陳述的條件前提成立時(shí)”或“在所陳述的條件前提成立時(shí)”或“響應(yīng)于確定所陳述的條件前提成立”或“根據(jù)確定所陳述的條件前提成立”或“響應(yīng)于檢測到所陳述的條件前提成立”。類似地,取決于上下文,短語“如果確定[所陳述的條件前提成立]”或“如果[所陳述的條件前提成立]”或“當(dāng)[所陳述的條件前提成立]時(shí)”可以理解為表示“在確定所陳述的條件前提成立時(shí)”或“響應(yīng)于確定所陳述的條件前提成立”或“根據(jù)確定所陳述的條件前提成立”或“在檢測到所陳述的條件前提成立時(shí)”或“響應(yīng)于檢測所陳述的條件前提成立”。

      為了說明的目的,已經(jīng)參照具體實(shí)施例描述了前面的描述。然而,以上說明性討論并非意圖是窮盡的或?qū)?quán)利要求限制為所公開的精確形式。根據(jù)以上教導(dǎo),很多修改和變化是可能的。選取并且描述實(shí)施例以最佳地解釋操作原理和實(shí)際應(yīng)用,以由此啟發(fā)本領(lǐng)域技術(shù)人員。

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