TW201633127A - 跨多重儲存裝置進行基元寫入操作之技術 - Google Patents

跨多重儲存裝置進行基元寫入操作之技術 Download PDF

Info

Publication number
TW201633127A
TW201633127A TW104134058A TW104134058A TW201633127A TW 201633127 A TW201633127 A TW 201633127A TW 104134058 A TW104134058 A TW 104134058A TW 104134058 A TW104134058 A TW 104134058A TW 201633127 A TW201633127 A TW 201633127A
Authority
TW
Taiwan
Prior art keywords
write
command
storage devices
data
storage device
Prior art date
Application number
TW104134058A
Other languages
English (en)
Other versions
TWI601008B (zh
Inventor
丹J 威廉斯
布萊恩E 威爾
安妮 馮
珊吉夫N 崔卡
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201633127A publication Critical patent/TW201633127A/zh
Application granted granted Critical
Publication of TWI601008B publication Critical patent/TWI601008B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本發明提供一種跨多重儲存裝置進行一基元寫入操作之電腦程式產品、系統及方法。作成對一寫入操作在其上寫入資料的多個儲存裝置之一判定。產生唯一地識別該寫入操作之一標籤。將包括該標籤及該寫入資料之一寫入命令發送至該等判定之儲存裝置中之每一者,以使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料。該等儲存裝置中之每一者維護要由該寫入操作更新之該資料的一先前版本之一複本。將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以使該儲存裝置回復該儲存裝置之該寫入資料的該先前版本之複本。

Description

跨多重儲存裝置進行基元寫入操作之技術 發明領域
本文中所描述之實施例大體上係關於藉由跨多重儲存裝置進行基元寫入操作而跨該等儲存裝置儲存資料之主機系統。
發明背景
獨立磁碟冗餘陣列(RAID)控制器將資料分條(stripe)至多個儲存磁碟機,且自以RAID條帶寫入至磁碟機之資料計算同位檢查資料(通常藉由對條帶資料進行互斥或(XOR))以寫入至同位檢查磁碟。關於RAID實施之一個潛在問題被稱為RAID寫入漏洞。寫入漏洞在RAID條帶中之資料經更新但同位檢查資料未經更新時發生,使得所有磁碟互斥或為零以致在磁碟失敗時重建構資料。該問題為不存在基元地更新兩個或兩個以上磁碟之方式,因此RAID條帶可在毀損或電源中斷期間被損壞。為解決此問題,RAID控制器維護非依電性儲存裝置(亦被稱為NVRAM),以備份寫入資料直至同位檢查資料可被寫入。然而,添加NVRAM 會增加RAID控制器及RAID解決方案之成本。尚未知曉在無顯著效能問題之情況下成功地解決寫入漏洞問題之RAID軟體實施。
此項技術中需要提供允許在失敗之狀況下恢復資料的跨多重儲存裝置而寫入資料之改良型解決方案,諸如RAID儲存解決方案。
依據本發明之一實施例,係特地提出一種電腦可讀取儲存裝置,其具有在與多個儲存裝置通訊之一主機系統中所執行以引起操作的電腦程式指令,該等操作包含:判定對一入操作在其上寫入資料的多個儲存裝置;產生用以唯一地識別該寫入操作之一標籤;將包括該標籤及寫入資料之一寫入命令發送至經判定之該等儲存裝置中之每一者,以致使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料,其中該等儲存裝置中之每一者維護要由該寫入操作所更新之該資料的一先前版本之一複本;以及將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以致使該儲存裝置回復在該儲存裝置之該寫入資料的該先前版本之該複本。
100‧‧‧主機系統/主機
1021、1022、102n、204‧‧‧儲存裝置
104‧‧‧作業系統
106‧‧‧儲存控制器驅動器
110‧‧‧寫入快取記憶體
112‧‧‧控制器
114‧‧‧資料儲存單元
116‧‧‧介面
200‧‧‧寫入操作狀態資訊/寫入操作標籤/寫入操作狀態
200i、300i‧‧‧寫入操作狀態條目
202、302‧‧‧寫入操作標籤/寫入操作
206、306‧‧‧寫入操作狀態
300‧‧‧寫入操作標籤/寫入操作狀態
304‧‧‧意向記錄旗標
400‧‧‧狀態圖
401‧‧‧舊資料狀態
402、404、407、408、410‧‧‧轉變
403‧‧‧意向記錄狀態
405‧‧‧重寫狀態
409‧‧‧已寫入狀態
411‧‧‧新資料狀態
500、501、503、505、506、507、508、509、510、511、512、513、514、515、516、517、518、519、600、601、602、700、701、702、703、704、800、801、802、803、804、805、900、901、902、903、904、905、1000、1002、1004、1100、1101、1102、1103、1104、1105、1200、1201、1202、1203、1204、1205、1206、1207、1300、1301、1302、1303、1304、1305、1306、1307、1400、1401、1402、1403‧‧‧區塊
1500‧‧‧系統/系統罩殼
1504‧‧‧處理器
1506‧‧‧匯流排
1508‧‧‧依電性記憶體裝置
1510‧‧‧非依電性儲存裝置
1512a、1512b‧‧‧輸入/輸出(I/O)裝置
參看未按比例繪製之附圖藉由實例來描述實施例,在附圖中,類似參考數字指類似元件。
圖1說明儲存系統之實施例,其中主機系統跨多重儲存裝置而儲存資料。
圖2說明藉由主機系統維護以用於寫入操作及儲存裝置之寫入狀態條目的實施例。
圖3說明藉由儲存裝置維護以用於寫入操作之寫入狀態條目的實施例。
圖4說明展示儲存裝置內回應於來自主機系統之關於用於基元寫入操作的資料之寫入的命令之狀態轉變的狀態圖。
圖5a及圖5b說明藉由儲存控制器驅動器進行以實施寫入操作從而跨多重儲存裝置寫入資料的操作之實施例。
圖6說明藉由儲存裝置進行以處理來自主機系統之開啟(OPEN)命令的操作之實施例。
圖7、圖8及圖9說明藉由儲存裝置進行以處理來自主機系統之寫入(WRITE)命令的操作之實施例。
圖10說明藉由儲存裝置進行以處理關閉(CLOSED)命令的操作之實施例。
圖11、圖12及圖13說明藉由主機系統進行以處置寫入操作之中斷的操作之實施例。
圖14說明藉由儲存裝置進行以處理狀態詢問請求的操作之實施例。
圖15說明可實施有圖1之主機系統的系統。
較佳實施例之詳細說明
當前RAID控制器藉由使寫回快取記憶體用昂貴 NVRAM裝置實施以快取部分寫入之資料來解決寫入漏洞資料損毀問題。然而,此類解決方案需要使用NVRAM,其可為RAID控制器之最昂貴組件中的一者。另外,將NVRAM用於寫回快取記憶體可在基礎儲存裝置具有接近NVRAM裝置之效能的讀取及寫入效能時(諸如,關於固態儲存磁碟機(SSD)之狀況)引起瓶頸。
所描述之實施例提供如下技術:實施RAID或防禦寫入漏洞及靜默資料損毀,同時藉由將部分寫入之資料的儲存卸載至儲存裝置自身來避免使用NVRAM裝置的其他儲存控制器。儲存或RAID控制器與分散式儲存裝置協調以確保對儲存裝置之基元更新,而無需單獨的寫回快取記憶體或提交記錄裝置來儲存部分寫入之資料。
所描述之實施例提供用於以基元方式跨多重裝置而更新多個不連續資料區塊之裝置分散式解決方案。在資料更新期間之任何給定時間點,可以軟體實施於主機系統中之儲存控制器可藉由將部分或完全寫入之資料的儲存卸載於儲存裝置來確證整個操作全部完成或根本未完成。在SSD之狀況下,其讀取及寫入速率可接近NVRAM之讀取及寫入速率。因此,所描述之實施例不需要NVRAM來備份經卸載至儲存裝置(SSD)之部分寫入之資料。以此方式,在儲存裝置為快速存取裝置(諸如,SSD)時,將不存在由NVRAM引入之瓶頸,此係因為SSD將用於基元寫入操作中以儲存部分寫入之資料及資料之先前版本。
實施所描述之實施例的儲存裝置提供用於儲存 控制器(諸如,軟體RAID控制器)將備份資料之先前版本的意向(intent)暫存於儲存裝置中的機制。此「意向」指示儲存磁碟機將提供在寫入中斷之狀況下進行恢復所需的資料。在意向條目對於寫入操作為開啟的時,儲存裝置維護所列出之資料區塊的「舊」及「新」複本。一旦寫入完成,則可丟棄每一裝置中之意向條目及舊資料。然而,若寫入被中斷,則存在跨用於RAID實施之所有參與儲存裝置及儲存控制器的足夠分散式後設資料、多裝置檔案系統或資料庫以使異動向前復原以完成或回復至先前狀態/資料。所描述之實施例儲存系統的消費者體驗完成全部或根本不完成之寫入請求。
在以下描述中,闡述諸如邏輯實施、作業碼、指定運算元之構件、資源分割/共用/複製實施、系統組件之類型及相互關係以及邏輯分割/整合選擇的眾多特定細節,以便提供對本發明之更透徹理解。然而,熟習此項技術者應瞭解,可在無此等特定細節之情況下實踐本發明。在其他情況下,未詳細展示控制結構、閘級電路及完整軟體指令序列,以便不會混淆本發明。一般熟習此項技術者利用所包括之描述將能夠在無不當實驗的情況下實施適當功能性。
本說明書中對「一個實施例」、「一實施例」、「一實例實施例」等之參考指示所描述之實施例可包括一特定特徵、結構或特性,但每一實施例可能未必包括該特定特徵、結構或特性。此外,此類片語未必係指同一實施例。 某些實施例係關於儲存裝置電子總成。實施例包括用於形成電子總成之裝置及方法兩者。
圖1說明具有主機系統100之儲存環境之實施例,該主機系統將諸如可自其他所附接電腦系統及裝置傳達之使用者資料的資料儲存至多個儲存裝置1021、1022...102n。主機系統100包括作業系統104,其包括用以管理資料在儲存裝置1021、1022...102n中之儲存的儲存控制器驅動器106。儲存控制器驅動器106維護具有關於經分散至儲存裝置1021、1022...102n以供儲存之資料之資訊的寫入操作狀態資訊200,及緩衝發送至儲存裝置1021、1022...102n之資料直至儲存裝置確認資料已寫入的寫入快取記憶體110。
在一個實施例中,儲存控制器驅動器106可實施獨立磁碟冗餘陣列(RAID)演算法,將一資料單元之多個部分分條至多個儲存裝置1021、1022...102n,計算用於條帶資料單元之同位檢查資料且將同位檢查資料儲存於儲存裝置1021、1022...102n中之一者中。同位檢查資料可包含互斥或同位檢查資料以在具有該資料之儲存裝置1021、1022...102n中之一者失敗時進行同位檢查錯誤恢復。儲存控制器驅動器106可實施不同的RAID演算法,包括交錯等。
在圖1之實施例中,儲存控制器驅動器106包括作業系統104之軟體組件。在一替代實施例中,儲存控制器驅動器106可實施於可經由內部匯流排連接至主機系統100之硬體裝置或單獨硬體控制器或卡中。
每一儲存裝置1021、1022...102n包括控制器112,該控制器管理資料至一或多個資料儲存單元114之寫入,包括傳達及接收來自主機系統100之讀取及寫入命令。控制器112維護寫入操作狀態300,其具有關於由主機系統100發送之寫入請求之狀態的資訊。控制器112亦可包括來自主機系統100之佇列至佇列讀取及寫入請求。
在一個實施例中,儲存裝置1021、1022...102n可包含固態磁碟機(SSD)、隨身碟等。對於SSD實施,資料儲存單元114可包含快閃記憶體胞元之反及(NAND)晶粒。在一個實施例中,NAND晶粒可包含多位準胞元(MLC)NAND快閃記憶體,其在每一胞元中記錄兩個位元值:較低位元值及較高位元值。替代地,NAND晶粒可包含單位準胞元(SLC)記憶體或每胞元三位元(TLC)記憶體。儲存單元114亦可包含(但不限於):MLC NAND快閃記憶體、鐵電隨機存取記憶體(FeTRAM)、基於奈米線之非依電性記憶體、諸如相變記憶體(PCM)之三維(3D)交叉點記憶體、併有憶阻器技術之記憶體、磁阻式隨機存取記憶體(MRAM)、自旋力矩轉移(STT)-MRAM、單位準胞元(SLC)快閃記憶體、能源支援式(電池/超電容器)DRAM及其他電可抹除可規劃唯讀記憶體(EEPROM)型裝置。在一替代實施例中,儲存裝置1021、1022...102n可包含其他類型之儲存裝置,諸如硬碟機等。在儲存裝置1021、1022...102n包含硬碟機之實施例中,資料儲存單元114可包含磁碟。
主機100可經由諸如匯流排介面之介面116與儲 存裝置1021、1022...102n通訊。主機100及儲存裝置1021、1022...102n可位於同一罩殼中或位於單獨罩殼中。替代地,主機系統100可經由網路與儲存裝置1021、1022...102n通訊。
主機100及儲存裝置1021、1022...102n可包括用以允許其間之通訊的輸入/輸出(I/O)介面,諸如串列進階附接技術(SATA)介面,且包括耦接主機100與儲存裝置102之符合SATA匯流排。在其他實施例中,可使用其他類型之I/O介面及匯流排互連,諸如串列進階小型電腦系統介面(SCSI)(或簡單地,SAS)、快速周邊組件互連(PCIe)等。
圖2說明儲存控制器驅動器106針對關於儲存裝置1021、1022...102n中之一者開啟之每一寫入操作而維護的寫入操作狀態條目200i之實施例。每一條目200i可具有:寫入操作標籤200,其提供使資料磁軌或資料區塊跨多重儲存裝置1021、1022...102n而分條之寫入操作之唯一識別符;儲存裝置識別符(ID),其識別由標籤200識別之寫入操作所針對的儲存裝置1021、1022...102n;及寫入操作之狀態206。
若寫入操作涉及將一資料單元之多個部分寫入至多個儲存裝置1021、1022...102n,則針對每一寫入操作可存在多個寫入狀態條目200i,此等條目中之每一者提供關於已針對寫入操作標籤202接收資料之儲存裝置1021、1022...102n中之一者的所識別寫入操作之狀態。
狀態206可指示關於儲存裝置1021、1022...102n中之一者的寫入操作之狀態,包括(但不限於):閒置(IDLE)狀態指示儲存裝置204尚未接受到指示意 向記錄之開啟命令。應答意向記錄之儲存裝置致力於在更新寫入資料之前產生寫入資料之先前版本的複本,且維護彼先前版本直至寫入操作完成,亦即,基元操作完成。
開啟(OPEN)狀態指示儲存裝置204已應答其已接收識別寫入操作標籤202之開啟命令,其指示儲存裝置204已應答寫入意向且準備好在資料經更新以用於所識別寫入操作之前保存資料之先前版本。
重寫(DIRTY)狀態係在寫入操作202由多個寫入命令組成時使用,每一寫入命令用於在指定儲存裝置204處寫入之範圍或資料單元的一部分。用於寫入資料之一部分的寫入命令中之一者的重寫狀態指示寫入資料之彼部分經寫入至儲存裝置204。具有開啟狀態的用於資料之部分的寫入之寫入狀態條目200i指示彼特定部分未完成。
已寫入(WRITTEN)狀態指示至指定儲存裝置204之寫入操作202所需的寫入完成。在針對寫入操作202僅發送一個寫入命令之狀況下,在儲存裝置204確認其已完成寫入時指示已寫入。在至儲存裝置204之寫入操作202由多個寫入命令(例如,子寫入命令)組成之狀況下,在用於資料之部分的所有分量寫入命令在儲存裝置204處已完成時指示寫入操作202之已寫入。
還原(REVERT)狀態指示已將還原命令發送至儲存裝置204以將由寫入操作202更新之狀態回復至所記錄之先前版本。
關閉(CLOSE)狀態指示儲存裝置204已應答關閉 命令之接受以使儲存裝置204清除用於寫入操作202之資料的所有記錄之先前版本及狀態資訊。
圖3說明儲存裝置1021、1022...102n中之每一者針對由儲存控制器驅動器106開啟之每一寫入操作而維護的寫入操作狀態條目300i之實施例。每一條目300i可具有:寫入操作標籤300,其提供可使資料磁軌或資料區塊跨多重儲存裝置1021、1022...102n而分條之寫入操作之唯一識別符;意向記錄旗標304,其指示儲存裝置維護經更新之資料的先前版本之複本的意圖;及寫入操作之狀態306,其可包含上文所描述之狀態中的一者。
在一替代實施例中,儲存控制器驅動器106在操作期間可能不維護明確寫入操作狀態200資訊。實情為,儲存裝置1021、1022...102n維護狀態300,且儲存控制器驅動器106將在需要狀態以處置寫入操作之中斷時自儲存裝置1021、1022...102n獲得該狀態。
儲存控制器驅動器106可將以下命令提交至儲存裝置1021、1022...102n,作為將資料單元或範圍之部分寫入至多個儲存裝置1021、1022...102n之寫入操作的一部分:開啟(標籤,範圍)一指示儲存裝置1021、1022...102n開始用於寫入操作標籤之新意向記錄以寫入所識別範圍或資料單元。
關閉(標籤)一指示儲存裝置1021、1022...102n關閉寫入操作,且消除針對寫入操作標籤維護之任何狀態資訊及資料之所記錄之先前版本。
具有標籤之寫入(標籤,範圍)一在本文中亦被稱作寫入,指示儲存裝置1021、1022...102n寫入用於開啟寫入操作(標籤)之資料(範圍)。
具有標籤之讀取(標籤,範圍,新)一在本文中亦被稱作讀取,指示接收儲存裝置1021、1022...102n擷取用於寫入操作(標籤)之所識別資料(範圍)的先前版本、寫入資料或兩者之混合。
還原(標籤)一指示儲存裝置1021、1022...102n將已寫入資料回復至用於寫入操作(標籤)之資料的所記錄之先前版本。
圖4說明描述儲存裝置1021、1022...102n處之不同狀態的狀態圖400之實施例。舊資料狀態401展示資料在經更新之前的狀態。在接收開啟命令後,接收儲存裝置1021、1022...102n之狀態即刻轉變(402)至意向記錄狀態403,在該狀態中,儲存裝置1021、1022...102n在寫入新資料之前保存資料之先前版本。儲存裝置1021、1022...102n可藉由進行就地寫入式(write-in-place)寫入來寫入新資料,或使用間接方式進行寫入時複製從而在寫入後即刻複製舊資料。在寫入操作由用於儲存裝置之資料單元之部分的一系列寫入命令組成的實施例中,接著在接收寫入命令中之一者後,接收儲存裝置1021、1022...102n之狀態在用於資料單元之部分中之一者的特定寫入完成但在用於儲存裝置之所有寫入已完成之前即刻轉變(404)至重寫狀態405。在寫入操作由單一寫入命令組成之實施例中或在完成所有分量寫入命令之後, 狀態分別轉變(407及408)至已寫入狀態409。在接收用於寫入操作(標籤)之關閉命令後,儲存裝置1021、1022...102n即刻轉變(410)至新資料狀態411。在新資料狀態411下,儲存裝置1021、1022...102n丟棄資料的所記錄之先前版本及寫入操作(標籤)之其他資訊,諸如用於寫入操作之寫入狀態條目300i。替代地,具有資料的所記錄之先前版本及其他相關資訊的儲存空間可標記為自由空間且可用於廢棄項目收集或重新使用。
圖4之狀態圖實施例提供基元性,此係因為寫入操作在儲存裝置1021、1022...102n中之任一者處未完成,直至所有儲存裝置已確認其資料已寫入(在單一寫入命令中或多個寫入命令中)。直至基元寫入操作完成時,儲存裝置1021、1022...102n方維護部分及完全寫入之資料以及資料之先前版本,以允許儲存控制器驅動器106在更新寫入操作之寫入資料之前將用於所有儲存裝置之資料回復至資料之先前版本。另外,在維護同位檢查資料之實施例中,儲存裝置1021、1022...102n維護足夠資訊以允許在基元寫入操作完成之前計算同位檢查資料。下文詳細描述在儲存控制器驅動器106與儲存裝置1021、1022...102n之間的此基元寫入操作之實施。
圖5a及圖5b說明藉由儲存控制器驅動器106進行以管理使寫入資料(例如,資料單元、磁軌、範圍)跨多重儲存裝置1021、1022...102n而寫入或分條之基元寫入操作的操作之實施例。在啟動(在區塊500處)用於基元寫入操作之程 序後,儲存控制器106即刻判定(在區塊501處)用來唯一地識別該寫入操作之標籤。儲存控制器驅動器106將開啟命令發送(在區塊503處)至儲存裝置1021、1022...102n中之每一者以接收用於寫入操作之資料,從而指示儲存裝置1021、1022...102n開始儲存要更新之資料之先前版本的意向記錄。發送開啟命令導致儲存控制器驅動器106產生用於具有閒置狀態之將被發送用於寫入操作之資料的每一儲存裝置1021、1022...102n的寫入狀態條目200i。若寫入操作將涉及用於每一儲存裝置之資料之部分的多個寫入命令,則儲存驅動控制器106可針對寫入資料之一部分的寫入命令中之每一者提供具有閒置狀態之寫入狀態條目200i,以便針對用於儲存裝置1021、1022...102n之資料之部分的寫入命令中之每一者提供單獨狀態。
在接收(在區塊505處)來自用於寫入操作之儲存裝置1021、1022...102n中之一者的對開啟命令的應答後,儲存控制器驅動器106即刻更新(在區塊506處)用於寫入操作標籤及儲存裝置1021、1022...102n之狀態206以指示開啟。若(在區塊507處)所有儲存裝置1021、1022...102n不具有開啟狀態,則儲存控制器驅動器106返回至區塊505以等待來自儲存裝置1021、1022...102n中之其他者的對開啟命令之應答,從而保證所有儲存裝置1021、1022...102n應答其將參與意向記錄。若(在區塊507處)所有儲存裝置1021、1022...102n已應答開啟狀態,則儲存控制器驅動器106判定(在區塊508處)發送至儲存裝置1021、1022...102n中之每一者以用於寫 入操作的資料。此操作可涉及判定跨多重儲存裝置而寫入之資料單元的部分。在RAID實施中,此操作可判定分條至儲存裝置1021、1022...102n中之每一者的資料及用於儲存裝置1021、1022...102n中之一或多者的經計算之互斥或同位檢查資料,該等儲存裝置儲存XOR同位檢查資料。另外,此判定可進一步將針對儲存裝置中之每一者而寫入之資料的部分分裂至多個寫入命令中,以針對每一儲存裝置1021、1022...102n而寫入資料之每一部分。
儲存控制器驅動器106將寫入(具有標籤之寫入)命令發送(在區塊509處)至儲存裝置中之每一者,以寫入經判定用於該儲存裝置之所指示寫入資料。更新(在區塊510處)用於寫入操作標籤及接收一或多個寫入命令之儲存裝置1021、1022...102n中之每一者的狀態206,以指示寫入已發送。在一個實施例中,用於已接收寫入命令之儲存裝置的開啟狀態將指示寫入已發送,但尚未完成。
控制接著進行至圖5b中之區塊511,其中儲存控制器驅動器106接收(在區塊511處)來自用於寫入操作標籤之儲存裝置中之一者的寫入完成之應答。更新(在區塊512處)用於寫入操作標籤及應答儲存裝置之狀態以指示寫入完成,其可為已寫入狀態。儲存控制器驅動器106可接著清除(在區塊513處)寫入快取記憶體110中用於彼已完成寫入操作之資料。此時,在儲存裝置1021、1022...102n處維護寫入資料之複本,且儲存控制器驅動器106不需要維護部分寫入之資料。若該寫入操作涉及用於一個儲存裝置之多個寫 入命令,則儲存控制器驅動器106可丟棄用於該寫入命令之資料的該部分,但保留用於尚未接收應答之寫入命令的針對儲存裝置而寫入之資料的部分。若(在區塊514處)存在接收寫入命令之尚未應答寫入完成狀態(例如,已寫入狀態)的一些儲存裝置1021、1022...102n,則控制返回進行至區塊511以等待來自所有儲存裝置1021、1022...102n之其他寫入完成應答。對於涉及將多個寫入命令發送至儲存裝置1021、1022...102n中之每一者的寫入操作,若並非用於資料之部分的所有寫入命令已完成,則控制返回進行至區塊511。
若(在區塊514處)所有寫入在接收用於寫入操作之寫入資料的所有儲存裝置1021、1022...102n處已完成,則儲存控制器驅動器106將關閉命令發送(在區塊515處)至在用於寫入操作標籤之寫入狀態條目200i中識別的儲存裝置1021、1022...102n中之每一者。在接收(在區塊516處)來自用於寫入操作的儲存裝置1021、1022...102n中之一者的關閉命令完成之應答後,儲存控制器驅動器106即刻更新(在區塊517處)用於寫入操作標籤202及應答儲存裝置204之寫入狀態條目200i中的狀態206以指示關閉狀態。若(在區塊518處)並非所有儲存裝置1021、1022...102n已應答關閉命令之處理,則控制返回進行至區塊516以等待來自儲存裝置1021、1022...102n中之其他者的對關閉命令之應答。若(在區塊518處)已發送有關閉命令之所有儲存裝置1021、1022...102n回送應答,則儲存控制器驅動器106可丟棄(在區 塊519處)用於寫入操作標籤之任何資訊,諸如用於寫入操作標籤及儲存裝置1021、1022...102n中之每一者的所有寫入狀態條目200i。替代地,儲存控制器驅動器106可將用於所有儲存裝置之寫入操作的資訊指示為自由空間以供稍後廢棄項目收集或重新使用。
在一替代實施例中,不進行區塊518及519處之操作,且在首次接收應答時異步地針對每一儲存裝置1021、1022...102n而指示關閉,此係因為在接收第一關閉狀態應答時所有裝置已寫入資料。在另一替代實施例中,儲存控制器驅動器106基於自儲存裝置1021、1022...102n接收之應答而不維護狀態資訊,且僅在當存在寫入操作之中斷或其他失敗時詢問儲存裝置1021、1022...102n以獲悉狀態資訊時視需要獲得此狀態資訊。
藉由圖5a及圖5b之操作,儲存控制器驅動器106不需要維護所有寫入資料及寫入資料之先前版本,直至整個寫入操作確認為完成。實情為,一旦已將資料寫入至儲存裝置1021、1022...102n,便可丟棄用於彼儲存裝置1021、1022...102n之資料,此係因為基元寫入保證儲存裝置1021、1022...102n中之每一者維護資料之先前複本及當前寫入資料,從而允許回復或完成寫入。另外,若同位檢查資料經計算,則儲存裝置維護部分寫入之資料以允許重新計算同位檢查資料,從而向前復原及完成用於寫入操作之非同位檢查及同位檢查資料的寫入。如所論述,同位檢查資料可包含可在儲存裝置中之一者失敗的情況下用於資料恢復的 抹除程式、碼同位檢查資料,諸如互斥或同位檢查及其他同位檢查資料。
圖6至圖9說明實施於儲存裝置1021、1022...102n中之每一者的控制器112中以處理來自儲存控制器驅動器106之命令以實施基元寫入操作的操作。圖6說明藉由控制器112進行以處理來自儲存控制器驅動器106之開啟命令的操作之實施例。回應於接收(在區塊600處)指定寫入操作(標籤)之開啟命令,儲存裝置控制器112產生(在區塊601處)寫入狀態條目300i,其識別寫入操作標籤302,指示意向記錄304狀態,其表示被更新為識別寫入操作標籤302之一部分的資料之一先前版本將被記錄及保存,且表示狀態306為開啟。控制器112將開啟完成狀態回送(在區塊602處)至主機100。具有開啟狀態之儲存裝置1021、1022...102n應答保存經更新資料之先前版本的意向,及尚未接收任何所發送之寫入或已接收寫入但未完成。
圖7說明藉由儲存裝置控制器112進行以處理用於寫入操作標籤之寫入命令(諸如,具有標籤之寫入)的操作之實施例。在接收(在區塊700處)用於具有用於定址資料儲存單元114中之位置的邏輯或實體位址之寫入資料的寫入操作(標籤)之寫入命令後,控制器112即刻保存(在區塊701處)資料儲存單元114中在儲存位址處之資料之複本作為要更新資料之先前版本。在替代寫入時複製實施中,控制器112可記住舊資料所位於之處並將新資料寫入至新儲存區域,且間接表允許重新使用舊資料之位置。將寫入命令中 之寫入資料寫入(在區塊702處)至儲存位址。可在將資料寫入至實際儲存單元114後即刻認為寫入完成,諸如快閃記憶體、SSD等之狀況,或可在將儲存裝置1021、1022...102n中之寫入資料在與資料儲存單元114分離之緩衝器中緩衝後即刻認為寫入完成,其中經緩衝資料最終取消暫存至資料儲存單元114,諸如硬碟機之狀況。在完成寫入後,控制器112即刻在用於寫入操作302之寫入狀態條目300I中將寫入操作之狀態306指示(在區塊703處)為已寫入。將完成回送(在區塊704處)至主機100。圖7之操作可在針對寫入操作僅存在一個寫入命令發送至每一儲存裝置1021、1022...102n時進行。
圖8說明藉由儲存裝置控制器112進行以處理多個寫入命令(諸如,具有標籤之寫入)以寫入用於一個儲存裝置及寫入操作標籤之資料之部分的操作之實施例。在接收(在區塊800處)多個寫入命令(亦被稱作子寫入命令)以寫入用於資料單元114中之儲存位址的寫入操作(標籤)之資料的部分後,控制器112即刻針對每一寫入進行在區塊801至805處之操作之回圈。在區塊802處,保存資料儲存單元114中在儲存位址處之資料的複本作為要更新資料之先前版本。在替代寫入時複製實施中,控制器112可記住舊資料所位於之處並將新資料寫入至新儲存區域,且間接表允許重新使用舊資料之位置。將寫入命令中之寫入資料寫入(在區塊803處)至儲存位址。在完成寫入後,控制器112即刻在用於寫入操作302之寫入狀態條目300I中將寫入操作及所寫入之 部分資料的狀態306指示(在區塊804處)為重寫。在完成寫入針對所有寫入操作而寫入的資料單元之所有部分後,控制器112即刻將用於寫入命令及寫入操作(標籤)之寫入完成回送至主機100。
在圖8之實施例中,僅在進行所有寫入命令以寫入資料單元之資料的所有部分之後回送寫入完成或已寫入狀態。在一替代實施例中,控制器112可在每一寫入命令完成以指示寫入資料之部分完成時回送重寫狀態。
圖9說明藉由控制器112進行以在儲存裝置1021、1022...102n之包括同位檢查資料單元114的多個資料單元114包含獨立可定址儲存裝置時跨該等資料單元分條所接收之寫入資料的操作之實施例。資料單元114可包含獨立儲存裝置,諸如快閃記憶體裝置、SSD、硬碟機等。替代地,若儲存裝置包括SSD,則資料單元114可包含儲存裝置1021、1022...102n中之記憶體胞元之晶粒,諸如SSD儲存裝置之NAND晶粒。在圖9之實施例中,控制器112可包含RAID控制器,其具有寫入快取記憶體以快取所有資料從而跨資料單元114進行分條。再另外,控制器112可實施儲存控制器驅動器106之邏輯以進行基元寫入操作,如關於儲存控制器驅動器106所描述。
在處理(在區塊900處)用於具有用於儲存位址之寫入資料的寫入操作(標籤)之寫入命令後,控制器112即刻保存(在區塊901處)資料儲存單元114中在儲存位址處之資料之複本作為寫入快取記憶體中之資料的先前版本。在替 代寫入時複製實施中,控制器112可記住舊資料所位於之處並將新資料寫入至新儲存區域,且間接表允許重新使用舊資料之位置。控制器112判定(在區塊902處)用於寫入資料之條帶單元以跨儲存裝置中之資料儲存單元而分條,且計算(在區塊903處)用於條帶單元之抹除程式碼同位檢查資料(諸如(但不限於),互斥或同位檢查資料)以寫入至儲存單元114之同位檢查資料儲存單元。在一個實施例中,控制器112可使用RAID演算法以根據不同RAID層級而判定條帶單元及同位檢查資料。控制器112將條帶單元及同位檢查資料寫入(在區塊904處)至資料儲存單元904,且在完成將來自寫入命令之資料分條至儲存單元114後即刻回送(在區塊905處)至主機110。可使用錯誤校正碼或此項技術中已知之其他同位檢查演算法來計算同位檢查資料。
圖10說明藉由儲存裝置控制器112進行以處理來自儲存控制器驅動器106之關閉命令的操作之實施例。在接收(在區塊1000處)用於寫入操作(標籤)之關閉命令後,控制器112即刻丟棄(在區塊1002處)用於寫入操作之資料之先前版本及用於寫入操作之寫入狀態資訊,包括寫入狀態條目300i。將用於寫入操作(標籤)之關閉完成(在區塊1004處)回送至主機系統100。
圖11至圖13說明藉由儲存控制器驅動器106進行以自失敗(諸如,通電失敗或導致寫入操作之中斷的其他事件)恢復的操作之實施例。關於圖11,在偵測到(在區塊1100處)寫入操作之中斷後,儲存控制器驅動器106即刻將狀態 詢問發送(在區塊1101處)至不具有已寫入狀態206之儲存裝置1021、1022...102n中之每一者。在接收(在區塊1102處)狀態後,儲存控制器驅動器106即刻更新(在區塊1103處)用於寫入操作標籤202及儲存裝置204之寫入狀態條目200i以指示對應於自儲存裝置接收之狀態的狀態206,諸如已寫入、開啟、關閉等。若所接收之狀態用於發送至儲存裝置之多個寫入命令中之一者,則所回送狀態可指示重寫,使得資料之一部分已被寫入,但並非隨不同寫入命令發送之資料的所有部分已被寫入。若(在區塊1104處)針對用於寫入操作(標籤)中之一者的所有儲存裝置1021、1022...102n接收狀態,則儲存控制器驅動器106啟動(在區塊1105處)恢復操作以使寫入操作中所涉及之儲存裝置1021、1022...102n返回至資料之先前版本(回復)或寫入資料之版本(向前復原)。替代地,恢復操作可涉及藉由使用具有標籤之讀取命令再生在電力中斷時在運行中的資料來使儲存裝置中之資料一致,該資料可經由讀取命令自儲存裝置1021、1022...102n恢復。圖12及圖13說明用於在圖11中之區塊1105處進行的不同類型之恢復操作的操作之實施例。
圖12說明藉由儲存驅動器控制器106進行以進行恢復操作從而在寫入操作之前還原至資料之先前版本的操作之實施例。若存在恢復操作,則可針對寫入操作狀態200中之每一寫入操作標籤進行圖12之操作。在啟動恢復操作(在區塊1200處)後,儲存控制器驅動器106即刻判定(在區塊1201處)寫入操作之狀態是否為經中斷寫入,該經中斷寫入 在用於寫入操作標籤之寫入狀態條目200i中的儲存裝置1021、1022...102n中之一些但並非全部在已寫入狀態下時發生。此情形可在一些條目200i指示已寫入狀態且其他條目指示開啟或重寫狀態或指示寫入可能尚未完成之任何其他狀態時發生。若(在區塊1201處)用於寫入操作之狀態並非經中斷寫入,則儲存控制器驅動器106判定(在區塊1202處)寫入操作標籤之狀態是否為經中斷開啟,該經中斷開啟在儲存裝置1021、1022...102n中之至少一者在開啟狀態下且至少一者在閒置狀態下時發生。若狀態為經中斷開啟,則恢復動作包含將關閉命令發送(在區塊1203處)至所有儲存裝置1021、1022...102n。否則,若(在區塊1202處)所有儲存裝置在閒置狀態下,則控制結束而不採取任何恢復動作。
若(在區塊1201處)寫入操作之狀態為經中斷寫入,則儲存控制器驅動器106將還原命令發送(在區塊1204處)至在寫入狀態條目200i中指示為具有已寫入或重寫狀態之任何儲存裝置1021、1022...102n,從而使該儲存裝置1021、1022...102n用資料之先前版本回復經更新資料。在接收(在區塊1205處)來自用於寫入操作之儲存裝置中之一者的還原命令完成的應答後,若(在區塊1206處)接收還原命令之所有儲存裝置1021、1022...102n已應答還原操作完成,則儲存控制器驅動器106即刻將關閉命令發送(在區塊1207處)至在用於寫入操作標籤之寫入狀態條目200i中識別的不在閒置狀態下之所有儲存裝置1021、1022...102n。此時,由於資料已還原至先前狀態,因此需要被寫入之任何資料將必 須自產生寫入資料之高階應用程式恢復。否則,若(在區塊1206處)並非所有儲存裝置1021、1022...102n已應答還原命令完成,則控制返回進行至區塊1205以等待所有還原命令完成。
圖13說明藉由儲存驅動器控制器106進行以進行恢復操作從而在已接收用於寫入操作之寫入命令的所有儲存裝置1021、1022...102n處完成寫入操作的操作之替代實施例。若存在恢復操作,則可針對寫入操作狀態200中之每一寫入操作標籤進行圖13之操作。在啟動恢復操作(在區塊1300處)後,儲存控制器驅動器106即刻進行在區塊1301、1302及1303處之操作(其與關於圖12中之區塊1201、1202及1203所描述之操作相同),以判定寫入操作是否具有經中斷寫入狀態或經中斷開啟狀態。在判定(在區塊1301處)狀態為經中斷寫入狀態後,對於具有同位檢查資料之實施例,若(在區塊1306處)具有同位檢查資料之儲存裝置不在已寫入狀態下,則儲存控制器驅動器106即刻自具有指示重寫或已寫入狀態206之條目200i的任何儲存裝置讀取(在區塊1304處)已寫入之寫入資料。儲存控制器驅動器106自讀取自儲存裝置1021、1022...102n之寫入資料及用於未完成寫入之寫入快取記憶體110中之寫入資料中的任一者計算(在區塊1305處)同位檢查資料。將經計算之同位檢查資料寫入(在區塊1306處)至具有同位檢查之儲存裝置。
在完成重寫同位檢查(在區塊1306處)之後或若(在區塊1303處)具有同位檢查資料之儲存裝置在已寫入狀 態下,則對於在用於寫入操作標籤之狀態條目200i中識別為在開啟狀態下(寫入未完成)的儲存裝置1021、1022...102n中之每一者,儲存控制器驅動器106接著即刻重新發送(在區塊1307處)寫入命令以寫入來自寫入快取記憶體110的先前所發送之寫入資料。在不存在同位檢查資料之實施例中,接著在判定用於寫入操作之經中斷寫入狀態(在區塊130處),控制將直接進行至區塊1307。
關於圖13之所描述實施例,在寫入完成係在寫入所有資料之後回送的實施例中,接著將進行區塊1307處之操作以重寫用於未完成寫入之儲存裝置的資料。在所描述之實施例中,儲存裝置1021、1022...102n在完成寫入後可能未即刻回送中間重寫應答,但可等待直至所有寫入命令或子寫入命令完成,且接著針對用於寫入操作之所有寫入命令發送寫入完成。在此實施例中,僅回應於錯誤恢復期間之狀態詢問而回送重寫狀態。在一替代實施例中,儲存裝置1021、1022...102n可回應於完成用於寫入操作之多個寫入命令中的一者而回送重寫。
圖14說明藉由儲存裝置1021、1022...102n之控制器112回應於接收來自儲存控制器驅動器106之狀態詢問而進行的操作之實施例。回應於接收(在區塊1400處)狀態詢問,若(在區塊1401處)存在用於寫入操作狀態300中維護之寫入操作標籤中之任一者的任何待決未完成命令,則儲存裝置1021、1022...102n將完成用於寫入操作之待決命令,諸如開啟、寫入、關閉、還原。若(在區塊1401處)不存在用於 寫入操作之待決命令或在完成(在區塊1402處)所有待決命令之後,控制器112發送(在區塊1403處)如在所有寫入狀態條目300i中指示之所有寫入操作標籤的狀態資訊。
應瞭解,貫穿本說明書對「一個實施例」或「一實施例」之參考意謂結合該實施例所描述之特定特徵、結構或特性包括於本發明之至少一個實施例中。因此,強調且應瞭解,在本說明書之各種部分中對「一實施例」或「一個實施例」或「一替代實施例」之兩個或兩個以上參考未必皆參考同一實施例。此外,在本發明之一或多個實施例中,可適當地組合特定特徵、結構或特性。
類似地,應瞭解,在本發明之實施例的前文描述中,出於簡化本發明以輔助理解各種創新態樣中之一或多者的目的,有時在單一實施例、圖或其描述中將各種特徵分組在一起。然而,本發明之方法並不被解釋為反映所主張之標的物需要比在每一請求項中明確陳述之特徵多的特徵的意向。確切而言,如以下申請專利範圍反映,本發明態樣在於單一前文所揭示實施例的少於全部之特徵。因此,在實施方式之後的申請專利範圍在此被明確地併入至此實施方式中。
儲存控制器驅動器106及在儲存裝置1021、1022...102n中之控制器112的所描述操作可實施為使用標準規劃及/或工程技術產生軟體、韌體、硬體或其任何組合之方法、設備或電腦可讀媒體。所描述操作可實施為維護於「電腦可讀儲存媒體」中之程式碼或邏輯,其可直接執行 功能或其中處理器可自電腦儲存可讀媒體讀取程式碼並執行該程式碼。電腦可讀儲存媒體包括電子電路、儲存材料、無機材料、有機材料、生物材料、殼體、外殼、塗層及硬體中之至少一者。電腦可讀儲存媒體可包含(但不限於)磁性儲存媒體(例如,硬碟機、軟性磁碟、磁帶等)、光學儲存器(CD-ROM、DVD、光碟等)、依電性及非依電性記憶體裝置(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、快閃記憶體、韌體、可規劃邏輯等)、固態裝置(SSD)等。電腦可讀儲存媒體可進一步包含實施於硬體裝置(例如,積體電路晶片、可規劃邏輯裝置、可規劃閘陣列(PGA)、場可規劃閘陣列(FPGA)、特殊應用積體電路(ASIC)等)中之數位邏輯。再另外,實施所描述操作之程式碼可在「傳輸信號」中實施,其中傳輸信號可經由空間或經由諸如光纖、銅線等之傳輸媒體傳播。編碼有程式碼或邏輯之傳輸信號可進一步包含無線信號、衛星傳輸、無線電波、紅外線信號、藍芽等。嵌入電腦可讀儲存媒體上之程式碼可作為傳輸信號自傳輸台或電腦傳輸至接收台或電腦。電腦可讀儲存媒體並非僅由傳輸信號組成,而是包括有形組件。熟習此項技術者將認識到,在不背離本發明之範疇的情況下,可對此組配進行許多修改,且製品可包含此項技術中已知之合適的資訊承載媒體。
圖15說明可實施有主機系統100之系統1500的實施例。該系統包括:處理器1504,其經由匯流排1506與依電性記憶體裝置1508(正執行之程式、運算元及參數在其中 被快取,諸如作業系統104及儲存控制器驅動器106)通訊;及非依電性儲存裝置1510,其中可儲存資料及程式。處理器1504亦可與輸入/輸出(I/O)裝置1512a、1512b通訊,該等輸入/輸出裝置可包含輸入裝置、顯示裝置、圖形卡、埠、網路介面等。非依電性儲存裝置1510可安裝至系統罩殼1500(諸如,在儲存磁碟機托架中)或經由埠介面或經由網路連接至系統1500。
實例
以下實例係關於其他實施例。
實例1為一種電腦可讀儲存裝置,其具有在與多個儲存裝置通訊之一主機系統中執行以引起操作的電腦程式指令,該等操作包含:判定對一寫入操作在其上寫入資料的多個儲存裝置;產生唯一地識別該寫入操作之一標籤;將包括該標籤及該寫入資料之一寫入命令發送至該等判定之儲存裝置中之每一者,以使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料,其中該等儲存裝置中之每一者維護要由該寫入操作更新之資料的一先前版本之一複本;以及將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以使該儲存裝置回復該儲存裝置之該寫入資料的該先前版本之複本。
在實例2中,實例1及實例3至實例11之標的物可視情況包括該等操作進一步包含:將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者,其中該開啟命令使該等儲存裝置中之每一者維護要由該寫入操作更新之該資 料的該先前版本之複本;且其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發送至該等儲存裝置中之每一者。
在實例3中,實例1、實例2及實例4至實例11之標的物可視情況包括操作進一步包含:回應於接收該寫入命令在該儲存裝置完成的所有該等儲存裝置之應答,將一關閉命令發送至該等儲存裝置中之每一者,其中該關閉命令使該等儲存裝置中之每一者移除該寫入操作之內容脈絡,包括該資料之該先前版本的該複本。
在實例4中,實例1至實例3及實例5至實例11之標的物可視情況包括該等操作進一步包含:偵測一中斷;判定所有該等儲存裝置尚未完成該寫入命令;以及將一關閉命令發送至在該開啟狀態下之該等儲存磁碟機中之每一者以關閉該寫入操作。
在實例5中,實例1至實例4及實例6至實例11之標的物可視情況包括該等操作進一步包含:回應於偵測到一中斷,判定尚未應答完成該寫入命令之該等儲存裝置之一狀態,其中該還原命令係發送至經判定為已完成該寫入命令之該等儲存裝置中之至少一者。
在實例6中,實例1至實例5及實例7至實例11之標的物可視情況包括該判定該等儲存裝置之該狀態包含:將一詢問發送至尚未應答該寫入命令完成之已接收該寫入命令的該等儲存裝置中之每一者,其中該還原命令係發送至對該寫入命令作出回應以指示該寫入完成的該等儲存裝置 中之每一者及發送至對該詢問作出回應以指示該寫入完成的該等儲存裝置中之每一者。
在實例7中,實例1至實例6及實例8至實例11之標的物可視情況包括該等操作進一步包含:快取隨該等寫入命令發送之該寫入資料;回應於接收具有該寫入資料之該等寫入命令中之一者完成的應答而丟棄隨該寫入命令發送之該快取之寫入資料;回應於偵測到一中斷,判定已接收該寫入命令且尚未應答該寫入完成的該等儲存裝置之一狀態;以及將具有該快取之寫入資料的該寫入命令重新發送至具有指示該寫入未完成之該狀態的該等儲存裝置中之每一者。
在實例8中,實例1至實例7及實例9至實例11之標的物可視情況包括發送至該等儲存裝置之該等寫入命令包括發送至多個儲存裝置之非同位檢查資料及發送至該等儲存裝置中之至少一者的同位檢查資料。
在實例9中,實例1至實例8、實例10及實例11之標的物可視情況包括回應於判定該同位檢查資料之該寫入命令未完成,進行以下操作:自具有指示該寫入命令完成之該狀態的該等儲存裝置中之每一者讀取該寫入資料;以及自讀取自該等儲存裝置中之至少一者的該寫入資料及用於具有指示該寫入未完成之該狀態的儲存裝置之該快取之寫入資料而計算該同位檢查資料。
在實例10中,實例1至實例9及實例11之標的物可視情況包括多個寫入命令發送至該等儲存裝置中之每一者 以寫入用於該儲存裝置之該寫入資料的一部分,其中該等操作進一步包含:快取隨該等寫入命令發送之寫入資料的該等部分;回應於偵測到一中斷,判定已接收該等寫入命令且尚未應答所有該等寫入完成之該等儲存裝置之一狀態;對於已應答少於所有該等所發送之寫入命令完成的該等儲存裝置中之每一者,將至少一個讀取命令發送至該儲存裝置以讀取該寫入資料之該部分;自該寫入資料之該所讀取部分及自隨未完成之寫入發送之該寫入資料的該等快取之部分而計算同位檢查資料;將具有未完成之該寫入資料的該快取之部分及該經計算之同位檢查資料的該等寫入命令重新發送至資料之該等部分所針對的該至少一個儲存裝置。
在實例11中,實例1至實例10之標的物可視情況包括該主機系統將多個寫入操作發送至該等儲存裝置,且對於每一寫入操作,提供唯一地識別該寫入操作之一標籤,其中該等操作進一步包含:回應於偵測到該寫入操作之一中斷,將對用於在該等儲存裝置維護之該等標籤之狀態的一詢問請求發送至該等儲存裝置;以及回應於該請求,自該等儲存裝置中之每一者接收在該等儲存裝置啟動之該等寫入操作之該等標籤,及指示一開啟或已寫入狀態之該等標籤中之每一者的該寫入操作之一狀態。
實例12為一種與一主機系統通訊之儲存裝置,其中該儲存裝置包括在經執行時進行操作之一控制器,該等操作包含:接收來自該主機系統之具有唯一地識別一寫入 操作之標籤及寫入資料的一寫入命令;回應於該寫入命令,將該寫入資料寫入至該儲存裝置且維護更新為該寫入命令之一部分的資料之一先前版本的一複本;接收具有識別該寫入操作之該標籤的一還原命令,對於該寫入操作,已接收該寫入命令;以及回應於該還原命令,回復藉由該寫入資料更新之該資料的該先前版本之複本。
在實例13中,實例12及實例14至實例18之標的物可視情況包括該寫入命令包含各自具有用於該寫入操作之寫入資料之一部分的多個寫入命令,其中針對該等寫入命令中之每一者進行寫入該寫入資料及維護該先前版本之複本的該等操作,其中該等操作進一步包含:回應於完成所有該等寫入命令中之該寫入資料的該等部分之該寫入而回送對該寫入命令之應答;以及將已針對該等寫入命令中之一者而寫入的該資料之該部分指示為重寫。
在實例14中,實例12、實例13及實例15至實例18之標的物可視情況包括該等操作進一步包含:接收用於該寫入操作之一關閉命令;以及回應於用於該寫入操作之該關閉命令而刪除關於該寫入操作之資訊及用於該寫入操作之該資料的該先前複本;以及將完成該關閉命令之應答回送至該主機系統。
在實例15中,實例12至實例14及實例16至實例18之標的物可視情況包括該儲存裝置包含一固態磁碟(SSD)。
在實例16中,實例12至實例15、實例17及實例18之標的物可視情況包括該等操作進一步包含:接收來自該 主機系統之用於該寫入操作的具有該標籤之一開啟命令;指示該標籤之意向登錄以維護更新為藉由該標籤識別之該寫入操作之一部分的資料之一先前版本之一複本;以及回應於指示該意向記錄而回送對該開啟命令之應答,其中該寫入命令係在回送對該開啟命令之應答之後發送。
在實例17中,實例12至實例16及實例18之標的物可視情況包括該等操作進一步包含:接收來自該主機之一狀態詢問;回應於接收該狀態詢問而進行以下操作:完成用於該寫入操作之任何待決寫入命令;回應於完成該待決寫入命令而將寫入完成回送至該主機;以及回應於判定不存在用於該寫入操作之待決寫入命令而回送開啟狀態。
在實例18中,實例12至實例17之標的物可視情況包括針對在該儲存裝置開啟之多個寫入操作中的每一者進行完成該待決寫入命令及將該寫入完成或開啟狀態回送至該主機的操作。
實例19為一種與多個儲存裝置通訊之系統,其包含:一處理器;以及一電腦可讀儲存媒體,其具有藉由該處理器執行以進行操作之程式指令,該等操作包含:判定對一寫入操作在其上寫入資料的多個儲存裝置;產生唯一地識別該寫入操作之一標籤;將包括該標籤及該寫入資料之一寫入命令發送至該等判定之儲存裝置中之每一者,以使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料,其中該等儲存裝置中之每一者維護要由該寫入操作更新之資料的一先前版本之一複本;以及將具有該標籤之一 還原命令發送至該等儲存裝置中之一者,以使該儲存裝置回復該儲存裝置之該寫入資料的該先前版本之複本。
I在實例20中,實例19及實例21至26之標的物可視情況包括該等操作進一步包含:將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者,其中該開啟命令使該等儲存裝置中之每一者維護要由該寫入操作更新之該資料的該先前版本之複本;且其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發送至該等儲存裝置中之每一者。
在實例21中,實例19、實例20及實例22至實例26之標的物可視情況包括該等操作進一步包含:回應於接收該寫入命令在該儲存裝置完成的所有該等儲存裝置之應答,將一關閉命令發送至該等儲存裝置中之每一者,其中該關閉命令使該等儲存裝置中之每一者移除該寫入操作之內容脈絡,包括該資料之該先前版本的該複本。
在實例22中,實例19至實例21及實例23至實例26之標的物可視情況包括該等操作進一步包含:偵測一中斷;判定所有該等儲存裝置尚未完成該寫入命令;以及將一關閉命令發送至在該開啟狀態下之該等儲存磁碟機中之每一者以關閉該寫入操作。
在實例23中,實例19至實例22及實例24至實例26之標的物可視情況包括該等操作進一步包含:回應於偵測到一中斷,判定尚未應答完成該寫入命令之該等儲存裝置之一狀態,其中該還原命令係發送至經判定為已完成該寫 入命令之該等儲存裝置中之至少一者。
在實例24中,實例19至實例23及實例25至實例26之標的物可視情況包括判定該等儲存裝置之該狀態包含:將一詢問發送至尚未應答該寫入命令完成之已接收該寫入命令的該等儲存裝置中之每一者,其中該還原命令係發送至對該寫入命令作出回應以指示該寫入完成的該等儲存裝置中之每一者及發送至對該詢問作出回應以指示該寫入完成的該等儲存裝置中之每一者。
在實例25中,實例19至實例24及實例26之標的物可視情況包括該等操作進一步包含:快取隨該等寫入命令發送之該寫入資料;回應於接收具有該寫入資料之該等寫入命令中之一者完成的應答而丟棄隨該寫入命令發送之該快取之寫入資料;回應於偵測到一中斷,判定已接收該寫入命令且尚未應答該寫入完成的該等儲存裝置之一狀態;以及將具有該快取之寫入資料的該寫入命令重新發送至具有指示該寫入未完成之該狀態的該等儲存裝置中之每一者。
在實例26中,實例19至實例25之標的物可視情況包括發送至該等儲存裝置之該等寫入命令包括發送至多個儲存裝置之非同位檢查資料及發送至該等儲存裝置中之至少一者的同位檢查資料。
實例27為一種方法,其包含:判定對一寫入操作在其上寫入資料的多個儲存裝置;產生唯一地識別該寫入操作之一標籤;將包括該標籤及該寫入資料之一寫入命令 發送至該等判定之儲存裝置中之每一者,以使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料,其中該等儲存裝置中之每一者維護要由該寫入操作更新之資料的一先前版本之一複本;以及將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以使該儲存裝置回復該儲存裝置之該寫入資料的該先前版本之複本。
在實例28中,實例27及實例29至實例31之標的物可視情況包括將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者,其中該開啟命令使該等儲存裝置中之每一者維護要由該寫入操作更新之該資料的該先前版本之複本;且其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發送至該等儲存裝置中之每一者。
在實例29中,實例27、實例28、實例30及實例31之標的物可視情況包括回應於偵測到一中斷,判定尚未應答完成該寫入命令之該等儲存裝置之一狀態,其中該還原命令係發送至經判定為已完成該寫入命令之該等儲存裝置中之至少一者。
在實例30中,實例27至實例30之標的物可視情況包括快取隨該等寫入命令發送之該寫入資料;回應於接收具有該寫入資料之該等寫入命令中之一者完成的應答而丟棄隨該寫入命令發送之該快取之寫入資料;回應於偵測到一中斷,判定已接收該寫入命令且尚未應答該寫入完成的該等儲存裝置之一狀態;以及將具有該快取之寫入資料的 該寫入命令重新發送至具有指示該寫入未完成之該狀態的該等儲存裝置中之每一者。
在實例31中,實例27至實例30之標的物可視情況包括自剩餘儲存器寫入速率及當前儲存器寫入速率判定對寫入放大率之調整包含判定在應用於該當前儲存器寫入速率時導致剩餘儲存器寫入速率之一調整因子。
在實例32中,實例27之標的物可視情況包括以下步驟中之至少一個步驟:(1)將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者,其中該開啟命令使該等儲存裝置中之每一者維護要由該寫入操作更新之該資料的該先前版本之複本;且其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發送至該等儲存裝置中之每一者;及/或(2)回應於接收該寫入命令在該儲存裝置完成的所有該等儲存裝置之應答,將一關閉命令發送至該等儲存裝置中之每一者,其中該關閉命令使該等儲存裝置中之每一者移除該寫入操作之內容脈絡,包括該資料之該先前版本的該複本;及/或(3)偵測一中斷;判定所有該等儲存裝置尚未完成該寫入命令;以及將一關閉命令發送至在該開啟狀態下之該等儲存磁碟機中之每一者以關閉該寫入操作;及/或(4)回應於偵測到一中斷,判定尚未應答完成該寫入命令之該等儲存裝置之一狀態,其中該還原命令係發送至經 判定為已完成該寫入命令之該等儲存裝置中之至少一者;及/或(5)其中判定該等儲存裝置之該狀態包含將一詢問發送至尚未應答該寫入命令完成之已接收該寫入命令的該等儲存裝置中之每一者,其中該還原命令係發送至對該寫入命令作出回應以指示該寫入完成的該等儲存裝置中之每一者及發送至對該詢問作出回應以指示該寫入完成的該等儲存裝置中之每一者;及/或(6)快取隨該等寫入命令發送之該寫入資料;回應於接收具有該寫入資料之該等寫入命令中之一者完成的應答而丟棄隨該寫入命令發送之該快取之寫入資料;回應於偵測到一中斷,判定已接收該寫入命令且尚未應答該寫入完成的該等儲存裝置之一狀態;以及將具有該快取之寫入資料的該寫入命令重新發送至具有指示該寫入未完成之該狀態的該等儲存裝置中之每一者;及/或(7)其中發送至該等儲存裝置之該等寫入命令包括發送至多個儲存裝置之非同位檢查資料及發送至該等儲存裝置中之至少一者的同位檢查資料;及/或(8)其中回應於判定該同位檢查資料之該寫入命令未完成,進行以下操作:自具有指示該寫入命令完成之該狀態的該等儲存裝置中之每一者讀取該寫入資料;以及自讀取自該等儲存裝置中之至少一者的該寫入資料及用於具有指示該寫入未完成之該狀態的儲存裝置之該快取之寫入資料而計算該同位檢查資料;及/或 (9)其中多個寫入命令發送至該等儲存裝置中之每一者以寫入用於該儲存裝置之該寫入資料的一部分,進一步包含:快取隨該等寫入命令發送之寫入資料的該等部分;回應於偵測到一中斷,判定已接收該等寫入命令且尚未應答所有該等寫入完成之該等儲存裝置之一狀態;對於已應答少於所有該等所發送之寫入命令完成的該等儲存裝置中之每一者,將至少一個讀取命令發送至該儲存裝置以讀取該寫入資料之該部分;自該寫入資料之該所讀取部分及自隨未完成之寫入發送之該寫入資料的該等快取之部分而計算同位檢查資料;將具有未完成之該寫入資料的該快取之部分及該經計算之同位檢查資料的該等寫入命令重新發送至資料之該等部分所針對的該至少一個儲存裝置;及/或(10)其中該主機系統將多個寫入操作發送至該等儲存裝置,且對於每一寫入操作,提供唯一地識別該寫入操作之一標籤,進一步包含:回應於偵測到該寫入操作之一中斷,將對用於在該等儲存裝置維護之該等標籤之狀態的一詢問請求發送至該等儲存裝置;以及回應於該請求,自該等儲存裝置中之每一者接收在該等儲存裝置啟動之該等寫入操作之該等標籤,及指示一開啟或已寫入狀態之該等標籤中之每一者的該寫入操作之一狀態。
實例33為一種方法,其包含:接收來自一主機系統之具有唯一地識別一寫入操作之標籤及寫入資料的一寫入命令;回應於該寫入命令,將該寫入資料寫入至一儲存裝置且維護更新為該寫入命令之一部分的資料之一先前版 本的一複本;接收具有識別該寫入操作之該標籤的一還原命令,對於該寫入操作,已接收該寫入命令;以及回應於該還原命令,回復藉由該寫入資料更新之該資料的該先前版本之複本。
在實例34中,實例33之標的物可視情況包括接收用於該寫入操作之一關閉命令;以及回應於用於該寫入操作之該關閉命令而刪除關於該寫入操作之資訊及用於該寫入操作之該資料的該先前複本;以及將完成該關閉命令之應答回送至該主機系統。
在實例35中,實例33之標的物可視情況包括以下步驟中之至少一個步驟:(1)其中該寫入命令包含各自具有用於該寫入操作之寫入資料之一部分的多個寫入命令,其中針對該等寫入命令中之每一者進行寫入該寫入資料及維護該先前版本之複本的該等操作,進一步包含:回應於完成所有該等寫入命令中之該寫入資料的該等部分之該寫入而回送對該寫入命令之應答;以及將已針對該等寫入命令中之一者而寫入的該資料之該部分指示為重寫;及/或(2)接收用於該寫入操作之一關閉命令;回應於用於該寫入操作之該關閉命令而刪除關於該寫入操作之資訊及用於該寫入操作之該資料的該先前複本;以及將完成該關閉命令之應答回送至該主機系統;及/或(3)其中該儲存裝置包含一固態磁碟(SSD);及/或(4)接收來自該主機系統之用於該寫入操作的具有該標 籤之一開啟命令;指示維護作為藉由該標籤識別之該寫入操作之一部分而更新的資料之一先前版本之一複本的用於該標籤之意向記錄;以及回應於指示該意向登錄而回送對該開啟命令之應答,其中該寫入命令係在回送對該開啟命令之應答之後發送;及/或(5)接收來自該主機之一狀態詢問;回應於接收該狀態詢問而進行以下操作:完成用於該寫入操作之任何待決寫入命令;回應於完成該待決寫入命令而將寫入完成回送至該主機;以及回應於判定不存在用於該寫入操作之待決寫入命令而回送開啟狀態;及/或(6)其中針對在該儲存裝置開啟之多個寫入操作中的每一者進行完成該待決寫入命令及將該寫入完成或開啟狀態回送至該主機的操作。
實例36為一種設備,其包含用以進行如任何前述請求項之方法的構件。
實例37為一種機器可讀儲存器,其包括在經執行時實施如任何前述請求項之方法或實現如任何前述請求項之設備或系統的機器可讀指令。
實例38為一種設備,其包含:用於判定對一寫入操作在其上寫入資料的多個儲存裝置的構件;用於產生唯一地識別該寫入操作之一標籤的構件;用於將包括該標籤及該寫入資料之一寫入命令發送至該等判定之儲存裝置中之每一者,以使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料的構件,其中該等儲存裝置中之每一者維護 要由該寫入操作更新之該資料的一先前版本之一複本;以及用於將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以使該儲存裝置回復該儲存裝置之該寫入資料的該先前版本之複本的構件。
在實例39中,實例38之標的物可視情況包括用於將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者的構件,其中該開啟命令使該等儲存裝置中之每一者維護要由該寫入操作更新之該資料的該先前版本之複本;且其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發送至該等儲存裝置中之每一者。
100‧‧‧主機系統/主機
1021、1022、102n‧‧‧儲存裝置
104‧‧‧作業系統
106‧‧‧儲存控制器驅動器
110‧‧‧寫入快取記憶體
112‧‧‧控制器
114‧‧‧資料儲存單元
116‧‧‧介面
200‧‧‧寫入操作狀態資訊/寫入操作標籤/寫入操作狀態
300‧‧‧寫入操作標籤/寫入操作狀態

Claims (25)

  1. 一種電腦可讀取儲存裝置,其具有在與多個儲存裝置通訊之一主機系統中所執行以引起操作的電腦程式指令,該等操作包含:判定對一寫入操作在其上寫入資料的多個儲存裝置;產生用以唯一地識別該寫入操作之一標籤;將包括該標籤及寫入資料之一寫入命令發送至經判定之該等儲存裝置中之每一者,以致使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料,其中該等儲存裝置中之每一者維護要由該寫入操作所更新之該資料的一先前版本之一複本;以及將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以致使該儲存裝置回復在該儲存裝置之該寫入資料的該先前版本之該複本。
  2. 如請求項1之電腦可讀取儲存裝置,其中該等操作進一步包含:將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者,其中該開啟命令致使該等儲存裝置中之每一者維護要由該寫入操作所更新之該資料的該先前版本之該複本;以及其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發 送至該等儲存裝置中之每一者。
  3. 如請求項1之電腦程式產品,其中該等操作進一步包含:回應於接收該寫入命令在該儲存裝置完成的所有該等儲存裝置之應答,將一關閉命令發送至該等儲存裝置中之每一者,其中該關閉命令使該等儲存裝置中之每一者移除該寫入操作之內容脈絡,包括該資料之該先前版本的該複本。
  4. 如請求項1之電腦程式產品,其中該等操作進一步包含:偵測一中斷;判定所有該等儲存裝置尚未完成該寫入命令;以及將一關閉命令發送至在該開啟狀態下之該等儲存磁碟機中之每一者以關閉該寫入操作。
  5. 如請求項1之電腦程式產品,其中該等操作進一步包含:回應於偵測到一中斷,判定尚未應答完成該寫入命令之該等儲存裝置之一狀態,其中該還原命令係發送至經判定為已完成該寫入命令之該等儲存裝置中之至少一者。
  6. 如請求項5之電腦程式產品,其中判定該等儲存裝置之該狀態包含將一詢問發送至尚未應答該寫入命令完成之已接收該寫入命令的該等儲存裝置中之每一者,其中該還原命令係發送至對指示該寫入完成之該寫入命令回應的該等儲存裝置中之每一者以及發送至對指示該寫入完成之該詢問回應的該等儲存裝置中之每一者。
  7. 如請求項1之電腦程式產品,其中該等操作進一步包含: 快取隨該等寫入命令發送之該寫入資料;回應於接收具有該寫入資料之該等寫入命令完成的應答而丟棄隨該寫入命令之一者發送之經快取之該寫入資料;回應於偵測到一中斷,判定已接收該寫入命令且尚未應答該寫入完成的該等儲存裝置之一狀態;以及將具有經快取之該寫入資料的該寫入命令重新發送至具有指示該寫入未完成之該狀態的該等儲存裝置中之每一者。
  8. 如請求項7之電腦程式產品,其中發送至該等儲存裝置之該等寫入命令包括發送至多個儲存裝置之非同位檢查資料及發送至該等儲存裝置中之至少一者的同位檢查資料。
  9. 如請求項8之電腦程式產品,其中回應於判定該同位檢查資料之該寫入命令未完成,進行以下操作:由具有指示該寫入命令完成之該狀態的該等儲存裝置中之每一者讀取該寫入資料;以及由讀取自該等儲存裝置中之至少一者的該寫入資料及具有指示該寫入未完成之該狀態的儲存裝置之該快取之寫入資料來計算該同位檢查資料。
  10. 如請求項1之電腦程式產品,其中多個寫入命令發送至該等儲存裝置中之每一者以對該儲存裝置寫入該寫入資料的一部分,其中該等操作進一步包含:快取隨該等寫入命令發送之寫入資料的該等部分; 回應於偵測到一中斷,判定已接收該等寫入命令且尚未應答所有該等寫入完成之該等儲存裝置之一狀態;對於已應答少於所有經發送之該等寫入命令完成的該等儲存裝置中之每一者,將至少一個讀取命令發送至該儲存裝置以讀取該寫入資料之該部分;由該寫入資料之經讀取之該部分及由隨未完成之寫入發送之該寫入資料的經快取之該等部分計算同位檢查資料;將具有未完成之該寫入資料的經快取之該部分及經計算之該同位檢查資料的該等寫入命令重新發送至資料之該等部分所針對的該至少一個儲存裝置。
  11. 如請求項1之電腦程式產品,其中該主機系統將多個寫入操作發送至該等儲存裝置,且對於每一寫入操作提供唯一地識別該寫入操作之一標籤,其中該等操作進一步包含:回應於偵測到對該寫入操作之一中斷,針對用於在該等儲存裝置所維護之該等標籤之狀態將一詢問請求發送至該等儲存裝置;以及回應於該請求,自該等儲存裝置中之每一者接收在該等儲存裝置啟動之該等寫入操作之該等標籤,以及針對指示一開啟或已寫入狀態的該等標籤中之每一者的該寫入操作之一狀態。
  12. 一種儲存裝置,其包含:一控制器,其與一主機系統通訊; 藉由該控制器接收來自該主機系統之具有唯一地識別一寫入操作之標籤及寫入資料的一寫入命令;回應於該寫入命令,將該寫入資料寫入至該儲存裝置中之非依電性記憶體且維護更新為該寫入命令之一部分的資料之一先前版本的一複本;接收具有識別對該寫入命令被接收的該寫入操作之該標籤的一還原命令;以及回應於該還原命令,回復藉由該寫入資料更新之該資料的該先前版本之該複本。
  13. 如請求項12之儲存裝置,其中該寫入命令包含多個寫入命令,各自具有該寫入操作之寫入資料之一部分,其中針對該等寫入命令中之每一者進行寫入該寫入資料及維護該先前版本之該複本的該等操作,其中該等操作進一步包含:回應於完成所有該等寫入命令中之該寫入資料之該等部分的寫入而回送對該寫入命令之應答;以及將已針對該等寫入命令中之一者而寫入的該資料之該部分指示為重寫。
  14. 如請求項12之儲存裝置,其中該等操作進一步包含:接收用於該寫入操作之一關閉命令;回應於用於該寫入操作之該關閉命令而刪除關於該寫入操作之資訊及用於該寫入操作之該資料的該先前複本;以及將該關閉命令之完成的應答回送至該主機系統。
  15. 如請求項12之儲存裝置,其中該儲存裝置包含一固態磁碟(SSD)。
  16. 如請求項12之儲存裝置,其中該等操作進一步包含:接收來自該主機系統之用於該寫入操作的具有該標籤之一開啟命令;指示用於該標籤之意向紀錄以維護更新為由該標籤所識別之該寫入操作之一部分的資料之一先前版本之一複本;以及回應於指示該意向記錄而回送對該開啟命令之應答,其中該寫入命令係在回送對該開啟命令之應答之後發送。
  17. 如請求項12之儲存裝置,其中該等操作進一步包含:接收來自該主機之一狀態詢問;回應於接收該狀態詢問而進行以下操作:完成用於該寫入操作之任何待決寫入命令;回應於完成該待決寫入命令而將寫入完成回送至該主機;以及回應於判定不存在用於該寫入操作之待決寫入命令而回送開啟狀態。
  18. 如請求項17之儲存裝置,其中完成該待決寫入命令及將該寫入完成或開啟狀態回送至該主機的該操作係針對在該儲存裝置所開啟之多個寫入操作中的每一者所進行。
  19. 一種與多個儲存裝置通訊之系統,其包含: 一處理器;以及一電腦可讀取儲存媒體,其具有藉由該處理器所執行以進行操作之程式指令,該等操作包含:判定對一寫入操作在其上寫入資料的多個儲存裝置;產生用以唯一地識別該寫入操作之一標籤;將包括該標籤及寫入資料之一寫入命令發送至經判定之該等儲存裝置中之每一者以致使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料,其中該等儲存裝置中之每一者維護要由該寫入操作所更新之該資料的一先前版本之一複本;以及將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以致使該儲存裝置回復在該儲存裝置之該寫入資料的該先前版本之該複本。
  20. 如請求項19之系統,其中該等操作進一步包含:將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者,其中該開啟命令致使該等儲存裝置中之每一者維護要由該寫入操作所更新之該資料的該先前版本之該複本;以及其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發送至該等儲存裝置中之每一者。
  21. 如請求項19之系統,其中該等操作進一步包含:回應於偵測到一中斷,判定尚未應答完成該寫入命 令之該等儲存裝置之一狀態,其中該還原命令係發送至經判定為已完成該寫入命令之該等儲存裝置中之至少一者。
  22. 一種方法,其包含:判定對一寫入操作在其上寫入資料的多個儲存裝置;產生用以唯一地識別該寫入操作之一標籤;將包括該標籤及寫入資料之一寫入命令發送至經判定之該等儲存裝置中之每一者以致使該等儲存裝置中之每一者在該儲存裝置寫入該寫入資料,其中該等儲存裝置中之每一者維護要由該寫入操作所更新之該資料的一先前版本之一複本;以及將具有該標籤之一還原命令發送至該等儲存裝置中之一者,以致使該儲存裝置回復在該儲存裝置之該寫入資料的該先前版本之該複本。
  23. 如請求項22之方法,其進一步包含:將具有該標籤之一開啟命令發送至該等儲存裝置中之每一者,其中該開啟命令致使該等儲存裝置中之每一者維護要由該寫入操作所更新之該資料的該先前版本之該複本;以及其中該寫入命令係回應於接收來自被發送該開啟命令之所有該等儲存裝置的對該開啟命令之應答而發送至該等儲存裝置中之每一者。
  24. 如請求項22之方法,其進一步包含: 回應於偵測到一中斷,判定尚未應答完成該寫入命令之該等儲存裝置之一狀態,其中該還原命令係發送至經判定為已完成該寫入命令之該等儲存裝置中之至少一者。
  25. 如請求項22之方法,其進一步包含:快取隨該等寫入命令發送之該寫入資料;回應於接收具有該寫入資料之該等寫入命令完成的應答而丟棄隨該寫入命令之一者發送之經快取之該寫入資料;回應於偵測到一中斷,判定已接收該寫入命令且尚未應答該寫入完成的該等儲存裝置之一狀態;以及將具有經快取之該寫入資料的該寫入命令重新發送至具有指示該寫入未完成之該狀態的該等儲存裝置中之每一者。
TW104134058A 2014-12-10 2015-10-16 跨多重儲存裝置進行基元寫入操作之技術 TWI601008B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/566,636 US9471448B2 (en) 2014-12-10 2014-12-10 Performing an atomic write operation across multiple storage devices

Publications (2)

Publication Number Publication Date
TW201633127A true TW201633127A (zh) 2016-09-16
TWI601008B TWI601008B (zh) 2017-10-01

Family

ID=56107928

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104134058A TWI601008B (zh) 2014-12-10 2015-10-16 跨多重儲存裝置進行基元寫入操作之技術

Country Status (6)

Country Link
US (1) US9471448B2 (zh)
EP (1) EP3230846B1 (zh)
KR (1) KR102462708B1 (zh)
CN (1) CN107111453B (zh)
TW (1) TWI601008B (zh)
WO (1) WO2016094025A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9760295B2 (en) * 2014-09-05 2017-09-12 Toshiba Memory Corporation Atomic rights in a distributed memory system
US9946607B2 (en) * 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10082985B2 (en) * 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US9588857B2 (en) * 2015-06-22 2017-03-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Raid logical stripe backup to non-volatile memory in response to raid storage device media errors
US10120751B2 (en) * 2015-09-25 2018-11-06 Intel Corporation Techniques to recover data using exclusive OR (XOR) parity information
US9910786B2 (en) 2015-11-03 2018-03-06 Intel Corporation Efficient redundant array of independent disks (RAID) write hole solutions
US9921914B2 (en) 2015-11-03 2018-03-20 Intel Corporation Redundant array of independent disks (RAID) write hole solutions
US10725763B1 (en) * 2017-06-28 2020-07-28 Amazon Technologies, Inc. Update and rollback of configurations in a cloud-based architecture
US10379838B1 (en) 2017-06-28 2019-08-13 Amazon Technologies, Inc. Update and rollback of code and API versions
US10552061B2 (en) 2017-08-08 2020-02-04 International Business Machines Corporation Providing preferential access to a metadata track in two track writes
CN110462577B (zh) * 2017-12-28 2022-03-29 华为技术有限公司 一种数据写入的方法及固态硬盘阵列
CN110825309B (zh) * 2018-08-08 2021-06-29 华为技术有限公司 数据读取方法、装置及系统、分布式系统
CN108918928B (zh) * 2018-09-11 2020-11-10 广东石油化工学院 一种负荷分解中功率信号自适应重构方法
US10891232B2 (en) * 2019-03-21 2021-01-12 International Business Machines Corporation Page-based memory operation with hardware initiated secure storage key update
US11687471B2 (en) * 2020-03-27 2023-06-27 Sk Hynix Nand Product Solutions Corp. Solid state drive with external software execution to effect internal solid-state drive operations
CN111897495B (zh) * 2020-07-28 2023-07-04 深圳忆联信息系统有限公司 提高ssd写性能的实现方法、装置、计算机设备及存储介质
US20230136664A1 (en) * 2021-11-02 2023-05-04 SK Hynix Inc. Storage device and electronic device

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774643A (en) * 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
JP3592640B2 (ja) * 2001-01-09 2004-11-24 株式会社東芝 ディスク制御システムおよびディスク制御方法
US6523087B2 (en) * 2001-03-06 2003-02-18 Chaparral Network Storage, Inc. Utilizing parity caching and parity logging while closing the RAID5 write hole
US6857053B2 (en) 2002-04-10 2005-02-15 International Business Machines Corporation Method, system, and program for backing up objects by creating groups of objects
US7401191B1 (en) * 2004-05-28 2008-07-15 Ncr Corp. System and method for performing disk write operations by writing to a data depot prior to an in-place write
US7636814B1 (en) 2005-04-28 2009-12-22 Symantec Operating Corporation System and method for asynchronous reads of old data blocks updated through a write-back cache
US7613743B1 (en) 2005-06-10 2009-11-03 Apple Inc. Methods and apparatuses for data protection
EP1934751B1 (en) * 2005-08-25 2017-11-08 Lattice Semiconductor Corporation Smart scalable storage switch architecture
US8443153B1 (en) * 2010-01-06 2013-05-14 Netapp, Inc. Dynamic balancing of performance with block sharing in a storage system
US10013354B2 (en) * 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US8732518B2 (en) 2011-04-13 2014-05-20 Netapp, Inc. Reliability based data allocation and recovery in a storage system
US20130198446A1 (en) * 2012-01-30 2013-08-01 Infinidat Ltd. Storage system for atomic write of one or more commands
US9116793B2 (en) 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
KR20140128819A (ko) * 2013-04-29 2014-11-06 삼성전자주식회사 아토믹 라이트 방법
CN103765373B (zh) * 2013-10-18 2015-12-30 华为技术有限公司 数据存储方法、数据存储装置和存储设备
US9274720B1 (en) * 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices

Also Published As

Publication number Publication date
TWI601008B (zh) 2017-10-01
EP3230846A4 (en) 2018-06-13
WO2016094025A1 (en) 2016-06-16
CN107111453B (zh) 2020-11-06
US9471448B2 (en) 2016-10-18
EP3230846A1 (en) 2017-10-18
US20160170850A1 (en) 2016-06-16
CN107111453A (zh) 2017-08-29
KR20170092537A (ko) 2017-08-11
KR102462708B1 (ko) 2022-11-04
EP3230846B1 (en) 2019-12-25

Similar Documents

Publication Publication Date Title
TWI601008B (zh) 跨多重儲存裝置進行基元寫入操作之技術
US10956281B2 (en) Using a forward log storage and backward log storage to recover a storage to a forward or backward point-in-time
US11194667B2 (en) Creating a restore copy from a copy of a full copy of source data in a repository that is at a different point-in-time than a restore point-in-time of a restore request
US11481121B2 (en) Physical media aware spacially coupled journaling and replay
CN110597455B (zh) 通过改进的元数据管理增加闪存耐用性的方法
US9747198B2 (en) Processing a point-in-time copy establish command to copy data
WO2020027912A1 (en) Rebuild assist using failed storage device
US10303560B2 (en) Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss
US10152416B2 (en) Buffer cache apparatus, journaling file system and journaling method for incorporating journaling features within non-volatile buffer cache
US20190179708A1 (en) Creating a restore copy from a copy of source data in a repository having source data at different point-in-times
US10489289B1 (en) Physical media aware spacially coupled journaling and trim
US20170220276A1 (en) Back-up and restoration of data between volatile and flash memory
US11169958B2 (en) Using a repository having a full copy of source data and point-in-time information from point-in-time copies of the source data to restore the source data at different points-in-time
US10387280B2 (en) Reporting defects in a flash memory back-up system
EP2382544B1 (en) Determining modified data in cache for use during a recovery operation
CN101923446B (zh) 存储阵列辅助架构
US11080149B2 (en) Restore current version of a track from a non-volatile storage into a new location in cache
US20150339058A1 (en) Storage system and control method
US20190294506A1 (en) Copying data from multiple point-in-time copies to a log storage to use to roll-back a source storage
US20150227433A1 (en) Creating a restore copy from a copy of source data in a repository having source data at different point-in-times and reading data from the repository for the restore copy
KR20140128823A (ko) 멀티-트랜잭션의 아토믹 라이트 방법
US9460010B1 (en) Method, data storage system and computer program product for managing copy on first write data for snapshot purposes