用于進(jìn)行帶有注釋的原子寫入操作的方法和裝置的制造方法
【專利說明】
[0001 ] 背景
技術(shù)領(lǐng)域
[0002]本披露總體上涉及在物理記錄介質(zhì)上存儲(chǔ)數(shù)據(jù),并且更具體地涉及原子地存儲(chǔ)數(shù)據(jù)。
【背景技術(shù)】
[0003]在某些情形下,將數(shù)據(jù)寫入到存儲(chǔ)裝置可以被中斷,從而使得無法成功地將數(shù)據(jù)完整地寫入存儲(chǔ)裝置。這種類型的故障可能響應(yīng)于以下情況而發(fā)生:例如,存儲(chǔ)裝置的電力損耗、存儲(chǔ)裝置的機(jī)械故障、操作系統(tǒng)崩潰、被切斷的將存儲(chǔ)裝置聯(lián)接到計(jì)算機(jī)系統(tǒng)的連接、對(duì)到網(wǎng)絡(luò)附接存儲(chǔ)(NAS)或存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)的網(wǎng)絡(luò)連通性的丟失等。
[0004]已經(jīng)做出了各種嘗試來解決存儲(chǔ)故障。例如,一些存儲(chǔ)裝置使用電池支持的高速緩存以便在寫入到存儲(chǔ)裝置時(shí)存儲(chǔ)數(shù)據(jù)。如果發(fā)生電源故障,一旦恢復(fù)了電源,就可以使用所緩存的數(shù)據(jù)來完成寫入。再如,一些文件系統(tǒng)維護(hù)日志以跟蹤對(duì)存儲(chǔ)裝置所作的修改。如果出現(xiàn)故障,可以檢查日志以便將驅(qū)動(dòng)器恢復(fù)到先前的有效狀態(tài)。這類文件系統(tǒng)的示例包括新技術(shù)文件系統(tǒng)(NTFS)、日志文件系統(tǒng)(JFS)、第三代擴(kuò)展文件系統(tǒng)(ext3)等。一些應(yīng)用程序(如云計(jì)算環(huán)境中的分布式應(yīng)用程序)可以對(duì)數(shù)據(jù)進(jìn)行維護(hù),直到可以證實(shí)該數(shù)據(jù)已經(jīng)被成功地提交給存儲(chǔ)器。
【發(fā)明內(nèi)容】
[0005]本披露描述了跨多個(gè)存儲(chǔ)裝置原子地寫入數(shù)據(jù)的實(shí)施例。在各個(gè)實(shí)施例中,結(jié)合跨多個(gè)存儲(chǔ)裝置執(zhí)行原子寫入來存儲(chǔ)注釋。該注釋可以存儲(chǔ)在該多個(gè)存儲(chǔ)裝置中的至少一個(gè)存儲(chǔ)裝置內(nèi)的專用位置處,并且包括可用于確定原子寫入是否成功完成的元數(shù)據(jù)。例如,在一個(gè)實(shí)施例中,注釋可以用于標(biāo)識(shí)在存儲(chǔ)裝置的熱插拔之后數(shù)據(jù)的一部分未成功地寫入到這些存儲(chǔ)裝置之一。在一些實(shí)施例中,注釋可進(jìn)一步用于回滾原子寫入以便將存儲(chǔ)裝置恢復(fù)至先前的有效狀態(tài)。
[0006]在一個(gè)實(shí)施例中,披露了一種方法,該方法包括接收針對(duì)數(shù)據(jù)集執(zhí)行原子寫入的請(qǐng)求。該方法進(jìn)一步包括,響應(yīng)于該請(qǐng)求跨多個(gè)存儲(chǔ)單元寫入該數(shù)據(jù)集,包括在該多個(gè)存儲(chǔ)單元中的至少一個(gè)存儲(chǔ)單元內(nèi)的專用位置處存儲(chǔ)元數(shù)據(jù)。該元數(shù)據(jù)可用于確定該寫入是否成功完成。
[0007]在另一個(gè)實(shí)施例中,披露了一種設(shè)備,該設(shè)備包括向量存儲(chǔ)模塊和回滾模塊。該向量存儲(chǔ)模塊被配置為用于在多個(gè)存儲(chǔ)裝置上執(zhí)行針對(duì)數(shù)據(jù)集的一組存儲(chǔ)操作,包括存儲(chǔ)獨(dú)立于該數(shù)據(jù)集的元數(shù)據(jù)。在這種實(shí)施例中,元數(shù)據(jù)指示該組存儲(chǔ)操作?;貪L模塊被配置為用于基于該存儲(chǔ)的元數(shù)據(jù)回滾該組存儲(chǔ)操作。
[0008]在又一個(gè)實(shí)施例中,披露了一種設(shè)備,該設(shè)備包括存儲(chǔ)模塊和錯(cuò)誤檢測(cè)模塊。該存儲(chǔ)模塊被配置為用于針對(duì)數(shù)據(jù)集嘗試進(jìn)行到與一組存儲(chǔ)裝置相關(guān)聯(lián)的地址范圍的原子寫入。該存儲(chǔ)模塊還被配置為用于在具有在該地址范圍外部的地址的存儲(chǔ)塊中存儲(chǔ)元數(shù)據(jù),從而使得該元數(shù)據(jù)指示寫該數(shù)據(jù)集。該錯(cuò)誤檢測(cè)模塊被配置為用于基于該元數(shù)據(jù)確定該原子寫入是否成功完成。
[0009]在又一個(gè)實(shí)施例中,披露了一種設(shè)備,該設(shè)備包括第一裝置和第二裝置。該第一裝置用于利用日志結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),其中,該第一裝置包括多個(gè)存儲(chǔ)塊。該第二裝置用于將數(shù)據(jù)原子地寫入該多個(gè)存儲(chǔ)塊的子集并且將元數(shù)據(jù)寫入不在該子集內(nèi)的存儲(chǔ)塊,其中,該元數(shù)據(jù)可用于回滾該數(shù)據(jù)的寫入。
[0010]在另一個(gè)實(shí)施例中,披露了一種方法。該方法包括一種應(yīng)用程序,該應(yīng)用程序發(fā)出進(jìn)行原子寫入操作的請(qǐng)求。在這種實(shí)施例中,該原子寫入操作包括跨多個(gè)存儲(chǔ)單元寫入數(shù)據(jù)集并且在該多個(gè)存儲(chǔ)單元中的至少一個(gè)存儲(chǔ)單元內(nèi)的專用位置處寫入元數(shù)據(jù)。該方法進(jìn)一步包括該應(yīng)用程序基于讀取該元數(shù)據(jù)的嘗試來確定原子寫入操作是否完成。
[0011]附圖簡(jiǎn)要說明
[0012]圖1是展示計(jì)算系統(tǒng)的一個(gè)實(shí)施例的方框圖,該計(jì)算系統(tǒng)被配置為用于將數(shù)據(jù)原子地寫入到多個(gè)存儲(chǔ)裝置。
[0013]圖2是展示用于存儲(chǔ)裝置的驅(qū)動(dòng)器的一個(gè)實(shí)施例的方框圖,該存儲(chǔ)裝置可執(zhí)行用于進(jìn)行原子寫入操作。
[0014]圖3A-3C是展示邏輯地址空間和物理地址空間的實(shí)施例的方框圖。
[0015]圖4A和4B是展示可用于促進(jìn)原子存儲(chǔ)的數(shù)據(jù)包的實(shí)施例的方框圖。
[0016]圖5是展不一種方法的一個(gè)實(shí)施例的流程圖。
[0017]圖6A和6B是展示包括多個(gè)模塊的設(shè)備的實(shí)施例的方框圖。
[0018]圖7A是展示具有存儲(chǔ)裝置和原子寫入裝置的設(shè)備的另一個(gè)實(shí)施例的方框圖。
[0019]圖7B是展示由原子寫入裝置來實(shí)施的算法的一個(gè)實(shí)施例的流程圖。
[0020]圖8是展示包括計(jì)算系統(tǒng)的存儲(chǔ)系統(tǒng)的一個(gè)實(shí)施例的方框圖。
[0021 ]本披露包括對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”的引用。短語“在一個(gè)實(shí)施例中”或“在實(shí)施例中”的出現(xiàn)不一定指同一個(gè)實(shí)施例。可以采用與本披露相一致的任何適合的方式來組合具體特征、結(jié)構(gòu)或特性。
[0022]本披露還包括并且參照附圖。在附圖中,類似的符號(hào)通常表示類似的組件,除非上下文另有所指。在詳細(xì)說明中所描述的說明性實(shí)施例、附圖以及權(quán)利要求并不意味著進(jìn)行限制。可以采用其他實(shí)施例,并且在不偏離本披露的范圍的情況下,可以對(duì)這些示例性實(shí)施例進(jìn)行其他修改。
[0023]本披露中的各個(gè)單元、電路或其他組件可以被描述或聲明為“被配置為用于”執(zhí)行一項(xiàng)任務(wù)或多項(xiàng)任務(wù)。在這種上下文中,“被配置為用于”用來通過指示包括在操作期間執(zhí)行這些任務(wù)或多項(xiàng)任務(wù)的結(jié)構(gòu)(例如,電路系統(tǒng))的單元/電路/組件來表示結(jié)構(gòu)。因此,可以說該單元/電路/組件被配置為用于執(zhí)行任務(wù),即使當(dāng)該指定的單元/電路/組件當(dāng)前未進(jìn)行操作時(shí)(例如,未開啟)。與“被配置為用于”說法一起使用的這些單元/電路/組件包括硬件一一例如,電路、存儲(chǔ)可執(zhí)行用于實(shí)現(xiàn)該操作的程序指令的存儲(chǔ)器等。另外,“被配置為用于”可以包括由軟件和/或固件(例如,F(xiàn)PGA或執(zhí)行軟件的通用處理器)控制以便以能夠執(zhí)行處理中的任務(wù)的方式來操作的一般結(jié)構(gòu)(例如,一般電路)。對(duì)單元/電路/組件“被配置為用于”執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)的引述顯然不是旨在針對(duì)該單元/電路/組件調(diào)用35U.S.C.§112條款第六段。
[0024]各個(gè)單元、電路或其他組件可以使用術(shù)語“第一”、“第二”等來描述。這些術(shù)語被用作在它們之后的名詞的標(biāo)簽,并且不暗示任何類型的排序(例如,空間的、時(shí)間的、邏輯的等)。例如,在具有多個(gè)存儲(chǔ)塊的存儲(chǔ)裝置中,術(shù)語“第一”存儲(chǔ)塊和“第二”存儲(chǔ)塊可以用來指任何兩個(gè)存儲(chǔ)塊(例如,包括包含在其他存儲(chǔ)塊內(nèi)的存儲(chǔ)塊)。換言之,“第一”存儲(chǔ)塊和“第二”存儲(chǔ)塊不限于該存儲(chǔ)裝置的最初兩個(gè)存儲(chǔ)塊。
[0025]詳細(xì)說明
[0026]本文關(guān)于數(shù)據(jù)的原子寫入描述了各個(gè)實(shí)施例。術(shù)語“原子”在本領(lǐng)域中具有其一般的且可接受的含義,并且指對(duì)操作的執(zhí)行,從而使得如果操作在完成之前失敗,那么該操作無效。因此,原子寫入是這樣的:其中,寫入操作被執(zhí)行為使得,如果其在完成之前失敗(例如,在所有數(shù)據(jù)被寫入之前發(fā)生電源故障),那么其并不改變存儲(chǔ)裝置的狀態(tài)(即,并不影響在存儲(chǔ)裝置上的已存儲(chǔ)數(shù)據(jù))。術(shù)語“原子”還可以指這樣一組操作:這些操作之一的失敗導(dǎo)致該組操作沒有影響。如以下將要討論的,可以通過執(zhí)行一組寫入操作(例如,將該數(shù)據(jù)集的一部分寫入每個(gè)存儲(chǔ)裝置的對(duì)應(yīng)寫入操作)來跨多個(gè)存儲(chǔ)裝置寫入數(shù)據(jù)集(稱為“向量寫入”)。因此,當(dāng)原子地執(zhí)行這種寫入時(shí),如果這些寫入操作之一失敗(例如,在這些存儲(chǔ)裝置之一處出現(xiàn)斷電),那么該組寫入操作均沒有影響。在一些情形下,可以執(zhí)行一個(gè)或多個(gè)動(dòng)作來去除失敗的原子寫入的任何影響。這些恢復(fù)動(dòng)作可以統(tǒng)稱為“回滾”。例如,當(dāng)正跨多個(gè)裝置原子地寫入數(shù)據(jù)時(shí),對(duì)這些裝置中的特定裝置的寫入操作可能已經(jīng)成功完成,而其他的寫入操作可能已經(jīng)失敗。在這種情況下,可以將成功的寫入操作的數(shù)據(jù)標(biāo)記為無效。(替代性地,在以下所描述的一些實(shí)施例中,可以給出選項(xiàng)以允許部分寫入的數(shù)據(jù)保留在存儲(chǔ)裝置上,即使是原子寫入失敗。)
[0027]參照?qǐng)D1,本披露首先描述了一種計(jì)算系統(tǒng),該計(jì)算系統(tǒng)被配置為用于跨多個(gè)存儲(chǔ)裝置原子地寫入數(shù)據(jù)。參照?qǐng)D2描述了可用于促進(jìn)原子寫入操作的驅(qū)動(dòng)器。為了便于本說明,參照?qǐng)D3A-3C描述了與這些存儲(chǔ)裝置相關(guān)聯(lián)的邏輯地址空間和物理地址空間。參照?qǐng)D4A和圖4B描述了在原子寫入操作中可使用的數(shù)據(jù)包的實(shí)施例。參照?qǐng)D5-7B更為詳細(xì)地描述了執(zhí)行原子寫入操作的實(shí)施例。最后,參照?qǐng)D8描述了一種包括這種計(jì)算系統(tǒng)的示例性存儲(chǔ)系統(tǒng)。
[0028]現(xiàn)在轉(zhuǎn)至圖1,描繪了計(jì)算系統(tǒng)100的方框圖。計(jì)算系統(tǒng)100可以是任何適合類型的計(jì)算裝置,如服務(wù)器、膝上型計(jì)算機(jī)、桌上型計(jì)算機(jī)、移動(dòng)裝置等。在一些實(shí)施例中,計(jì)算裝置100可以包括多個(gè)一起工作的計(jì)算裝置。例如,在一個(gè)實(shí)施例中,計(jì)算系統(tǒng)100可以是在數(shù)據(jù)中心(如以下結(jié)合圖8所討論的存儲(chǔ)系統(tǒng))處被聯(lián)接在一起的多個(gè)服務(wù)器,該數(shù)據(jù)中心被配置用于代表多個(gè)客戶端存儲(chǔ)數(shù)據(jù)。在所展示的實(shí)施例中,計(jì)算系統(tǒng)100包括通過互連器140聯(lián)接在一起的處理器單元110、隨機(jī)存取存儲(chǔ)器(RAM) 120、一個(gè)或多個(gè)存儲(chǔ)裝置130。如所示,RAM 120可以包括用于一個(gè)或多個(gè)應(yīng)用程序122的多條程序指令以及可由處理器單元110執(zhí)行的操作系統(tǒng)(OS) 124 AS 124可以包括用于多個(gè)存儲(chǔ)裝置130的驅(qū)動(dòng)器126,這些存儲(chǔ)裝置進(jìn)而可以包括控制器132和一個(gè)或多個(gè)存儲(chǔ)庫134。
[0029]在各個(gè)實(shí)施例中,驅(qū)動(dòng)器126被描述為具有各種功能。這種功能可以采用軟件、硬件或其組合來實(shí)施。進(jìn)一步地,這種功能可以通過在OS 124之外的軟件(例如,在一個(gè)實(shí)施例中的應(yīng)用程序122)來實(shí)施。在另一個(gè)實(shí)施例中,這種功能可以由存儲(chǔ)在控制器132的存儲(chǔ)器內(nèi)的軟件來實(shí)施并由控制器132的處理器來執(zhí)行。在又一個(gè)實(shí)施例中,控制器132可以包括專用電路以實(shí)施驅(qū)動(dòng)器126的功能??傊瑢Ⅱ?qū)動(dòng)器126描繪為在OS 124內(nèi)的軟件中實(shí)施的不應(yīng)當(dāng)被視為進(jìn)行限制,而應(yīng)被視為對(duì)示例性實(shí)施例的描繪。
[0030]存儲(chǔ)裝置130代表可以在其上記錄數(shù)據(jù)的任何物理介質(zhì)。如本文所使用的,術(shù)語“記錄”泛指電子計(jì)算裝置將一個(gè)或多個(gè)數(shù)據(jù)值存儲(chǔ)、寫入或以其他方式轉(zhuǎn)移到一些物理記錄介質(zhì)上以備后續(xù)使用的過程。因此,“物理記錄介質(zhì)”在本文用于指可以通過電子計(jì)算裝置在其上記錄數(shù)據(jù)的任何介質(zhì)。進(jìn)一步地,在本文將術(shù)語“存儲(chǔ)設(shè)備(storage)”和“存儲(chǔ)器(memory)”用作與“物理記錄介質(zhì)”同義。給定這種寬泛定義,在圖1中以及本披露中其他地方的指定存儲(chǔ)器(當(dāng)指RAM 120時(shí))和存儲(chǔ)設(shè)備(當(dāng)指存儲(chǔ)裝置130)可以指易失性介質(zhì)和/或非易失性介質(zhì)。在本文中這種介質(zhì)也被稱為“存儲(chǔ)器(memory )”,并且這種介質(zhì)的多個(gè)部分可以被稱為“±夬”、“單元”、“存儲(chǔ)塊”、“存儲(chǔ)器塊”等。總體而言,這些塊的組可以被稱為“存儲(chǔ)陣列”、“存儲(chǔ)器陣列等”。如本文所使用的,術(shù)語“固態(tài)存儲(chǔ)陣列”是指包括非易失性固態(tài)介質(zhì)(如以下所描述的各種形式的介質(zhì))的存儲(chǔ)陣列。
[0031]在本披露中對(duì)“訪問”存儲(chǔ)裝置130中的數(shù)據(jù)的引用是指包括以下各項(xiàng)在內(nèi)的任何類型的事務(wù):將數(shù)據(jù)寫入到存儲(chǔ)裝置130和/或從存儲(chǔ)裝置130讀取數(shù)據(jù)、以及TRM操作、維護(hù)訪問、發(fā)現(xiàn)訪問、在存儲(chǔ)器語義下的加載操作和存儲(chǔ)操作等。進(jìn)一步地,給定參照以上內(nèi)容對(duì)“存儲(chǔ)設(shè)備”和“存儲(chǔ)器”的寬泛定義,這些訪問可應(yīng)用于具有非易失性存儲(chǔ)器和/或易失性組件的存儲(chǔ)裝置。
[0032]在一些實(shí)施例中,存儲(chǔ)裝置130可以被實(shí)施為使得它們包括非易失性存儲(chǔ)器。因此,在這種實(shí)施例中,存儲(chǔ)庫134可以包括非易失性存儲(chǔ)裝置,如硬盤驅(qū)動(dòng)器(例如,集成驅(qū)動(dòng)電子設(shè)備(IDE)驅(qū)動(dòng)器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)驅(qū)動(dòng)器、串行附件SCSI(SAS)驅(qū)動(dòng)器、串行高級(jí)技術(shù)附件(SATA)驅(qū)動(dòng)器等)、磁帶驅(qū)動(dòng)器、可寫光驅(qū)(例如,⑶驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器、監(jiān)光光驅(qū)器等)等等。
[0033]在一些實(shí)施例中,存儲(chǔ)裝置130可以被實(shí)施為使得它們包含非易失性固態(tài)存儲(chǔ)器。因此,在這種實(shí)施例中,存儲(chǔ)庫134可以包括任何適合類型的固態(tài)存儲(chǔ)介質(zhì),包括但不限于:NAND閃速存儲(chǔ)器、NOR閃速存儲(chǔ)器、納米R(shí)AM ( “NRAM”)、磁阻式RAM ( “MRAM” )、相變RAM(“PRAM”)、賽道存儲(chǔ)器、憶阻器存儲(chǔ)器、基于納米晶體線的存儲(chǔ)器、基于二氧化硅的亞10納米進(jìn)程存儲(chǔ)器、石墨烯存儲(chǔ)器、硅-氧化物-氮