TWI531901B - 群組表資料沖除技術 - Google Patents

群組表資料沖除技術 Download PDF

Info

Publication number
TWI531901B
TWI531901B TW103111455A TW103111455A TWI531901B TW I531901 B TWI531901 B TW I531901B TW 103111455 A TW103111455 A TW 103111455A TW 103111455 A TW103111455 A TW 103111455A TW I531901 B TWI531901 B TW I531901B
Authority
TW
Taiwan
Prior art keywords
group
address range
synchronization
node
data
Prior art date
Application number
TW103111455A
Other languages
English (en)
Other versions
TW201502777A (zh
Inventor
道格拉斯L 渥吉特
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 TW201502777A publication Critical patent/TW201502777A/zh
Application granted granted Critical
Publication of TWI531901B publication Critical patent/TWI531901B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2064Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring while ensuring consistency
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2066Optimisation of the communication load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

群組表資料沖除技術 發明領域
本發明係有關於群組表資料沖除技術。
發明背景
由於最近固態儲存技術的創新,此技術正被整合進入資料系統中。該等資料系統之伺服器可能尋求將資料寫入至固態儲存技術或自固態儲存技術讀取資料。使用者,例如,管理員及/或供應商,可被挑戰以整合此技術進入系統而同時保持其微小性。
發明概要
依據本發明之一實施例,係特地提出一種節點,其包括:一群組表,其包含一個或多個群組,該等群組之各者與一群組位址範圍相關聯,該等群組位址範圍被映射至一非依電性記憶體(NVM)之一記憶體位置;以及一控制器,其接收包含一同步位址範圍之一同步命令並且依據藉由該群組表被判定的一順序而將資料自一快取沖除至該非依電性記憶體,其中該群組表是基於該同步位址範圍是否 被包含於該等群組位址範圍之一者中,以判定該控制器沖除該資料的一順序以及該控制器沖除哪些資料之至少一者。
100‧‧‧節點
110‧‧‧群組表
112‧‧‧群組
114‧‧‧群組位址範圍
116‧‧‧同步位址範圍
120‧‧‧控制器
130‧‧‧快取
132‧‧‧資料
140‧‧‧非依電性記憶體(NVM)
142‧‧‧記憶體位置
200‧‧‧第一節點
210‧‧‧群組表
211‧‧‧群組編號行
213‧‧‧轉移屬性行
215‧‧‧啟始位址行
217‧‧‧範圍大小行
219‧‧‧備妥旗標行
220‧‧‧子群組表
221‧‧‧子群組編號行
223‧‧‧COW行
225‧‧‧啟始位址行
227‧‧‧範圍大小行
229‧‧‧備妥旗標行
230‧‧‧記錄器
232‧‧‧啟始位址行
234‧‧‧範圍大小行
236‧‧‧資料行
238‧‧‧標記行
240‧‧‧寫時複製(COW)引擎
242‧‧‧資料複製
250‧‧‧控制器
260‧‧‧處理器
265‧‧‧快取
266‧‧‧資料
270‧‧‧虛擬記憶體(VM)列表
272‧‧‧虛擬位址行
274‧‧‧實際位址行
276‧‧‧修改旗標行
278‧‧‧唯讀行
280‧‧‧非依電性記憶體(NVM)
282‧‧‧記憶體位置
290‧‧‧第二節點
300‧‧‧節點
310‧‧‧應用伺服器
310-1、310-2‧‧‧應用伺服器
312‧‧‧應用
400‧‧‧電腦裝置
410‧‧‧處理器
420‧‧‧機器可讀取儲存媒體
421-426‧‧‧指令
500‧‧‧沖除及轉移資料方法
505-560‧‧‧沖除及轉移資料步驟
下面的詳細說明將參考圖形,於其中:圖1是沖除資料至一非依電性記憶體之一節點範例方塊圖;圖2是沖除資料至一非依電性記憶體及轉移該沖除資料至一第二節點的一第一節點範例方塊圖;圖3是被應用伺服器共用之一節點的範例方塊圖;圖4是包含用以沖除資料至一非依電性記憶體之指令的一電腦裝置之範例方塊圖;以及圖5是沖除及轉移資料之一方法的範例流程圖。
較佳實施例之詳細說明
特定詳細說明於下面的說明中被給予以提供實施例之整體了解。但是,應了解,實施例可不必這些特定細節而被實行。例如,系統可以方塊圖方式被展示以避免非必要的細節而混淆實施例。於其他實例中,為了避免混淆實施例,習知的處理程序、結構和技術可被展示而無非必要的細節。
非依電性記憶體(NVM)技術,例如,憶阻器(Memristor)可提供耐久性和記憶體快速存取兩者。這型式 之NVM可以被映射進入伺服器記憶體空間中以供用於直接裝載/儲存存取。當應用一完全範圍之豐富資料服務以供用於冗餘、複製、備份以及歸檔至記憶體映射儲存器時,其可能必須建立在複數個記憶體系統內與跨越該等複數個記憶體系統而保持自身一致性的資料群組。
記憶體一致性一般利用處理器和記憶體控制器局部地被管理。雖然現有的方法可能強制執行嚴格排序和快取同調性,這些方法可能不適用於群集、聯盟、遠端複製及/或客戶/伺服器關係,例如,可能存在於應用伺服器及儲存伺服器之間的那些者。其根本原因是如於一單一處理器或對稱多處理器(SMP)系統所見的嚴格一致性可能是成本過高,而無法維持於一限定的實際範圍之上。
當NVM使用儲存指令直接地利用處理器被寫入時,一同步操作被使用以確保足夠的一致性以保證在故障或突然斷電的情況下之恢復能力。該等同步操作通常僅參看記憶體位置之一單一連續範圍。通常,一同步操作涉及至一NVM之處理器快取的沖除。沖除大量的快取可能需要一段時間且降低處理器寫入性能。一致性群組可被使用在儲存器產品之內,例如,碟片陣列,以確保在區塊儲存器上之遠端複製以及時間點複製的操作維持應用位準恢復能力。在儲存器產品中,一個一致性群組可包含一些虛擬容積或邏輯單元數量(LUN)。處理器快取沖除操作以及記憶體映射與同步操作可對照記憶體位置之連續範圍而操作。這些操作可能不考慮在記憶體位置的分離範圍之間,除了 經由不是很好地調尺度之細粒度排序的嚴格追蹤之外,的應用位準一致性聯結。
實施例可藉由維持一記憶體範圍列表於一個或多個群組中而擴展一同步操作範疇而不需要改變其之介面。這些群組可藉由應用被界定以滿足它們的特定一致性需求。例如,一節點可包含一群組表及一控制器。該群組表可包含一個或多個群組。該等群組之各者可以是與一群組位址範圍相關聯。該等群組位址範圍可被映射至一NVM之記憶體位置。該控制器可能接收包含一同步位址範圍之一同步命令並且可依據藉由該群組表被判定的一順序而將資料自一快取沖除至該NVM。該群組表可基於該同步位址範圍是否被包含於該等群組位址範圍之一者中,判定該控制器沖除該資料的一順序以及該控制器沖除哪些資料之至少一者。
於一實施例中,包含於一同步命令中被指定的一位址之群組中的所有修改快取位址被沖除,其中,具有在同步命令的被指定位址之同步命令最後被沖除。於一些實施例中,該等群組可包含子群組。該等子群組之各者可構成一組子群組位址範圍,其是該群組中之該等群組位址範圍的一子集。當存在一子群組內之一位址被同步化時,在利用該子群組被指定的子群組位址範圍中之另外的修改位址以及可能是在該相同群組中但不是在任何子群組中之任何其他修改快取位址也可能被沖除。因此,實施例,例如,可允許於一子群組中之元資料將與相同群組中的其他 資料一致。
群組及子群組可包含追蹤資訊,其包含需要被轉移以供複製之位址範圍之一位元映射。同步操作可等待被沖除位址之轉移完成,以便確保冗餘並且支援對照一致的應用資料影像之豐富資料服務的操作。轉移可涉及於其中之記錄構成發送中的資料安置之一永久、冗餘的記錄。
因此,實施例可藉由允許應用明確地表示哪些記憶體位置必須作為相同群組之部份一起被同步化而減輕將被沖除之一資料數量。該等群組之實施例可能增加結構至節點之間自處理器至NVM之資料沖除以及同步資料流之產生兩者。這可致能一致的資料影像或虛擬化影像遵守應用特定法則而被建立。這些影像接著可轉換為各種型式之資料複製或被使用以進行資料分析,例如,需要資料之一致性和可恢復狀態之重複或分類。
接著參看至圖形,圖1是沖除資料至一非依電性記憶體(NVM)140之一節點100的範例方塊圖。該節點100可以是下列構件之部件或被包含在其中者,例如,一儲存裝置、電腦、交換機、殼體、伺服器、控制器及/或連接到網路之任何型式的裝置。於圖1之實施例中,節點100被展示而包含一群組表110以及一控制器120。進一步地,該節點100被展示以經由快取130而與一快取130以及NVM 140介面。
節點100可包含,例如,含有用以實行在下面被說明之功能的電子電路之硬體裝置,例如,控制邏輯及/ 或記憶體。此外或如一另外者,該節點100可作為一指令系列被實行,該等指令可被編碼於一機器可讀取儲存媒體上以及可利用一處理器執行。該快取130可以是儲存資料132之任何型式的裝置,以被寫入至及/或讀取自一儲存裝置,例如,NVM 140 130,因而寫入及/或讀取資料要求可以較低於儲存裝置之等待時間被服務。
NVM 140可以包含當電源被關閉時保留其之資料的任何型式之裝置,例如,唯讀記憶體、快閃記憶體、鐵電式RAM(F-RAM)、大部分型式之磁電腦儲存裝置(例如,硬碟、軟碟、和磁帶)與光碟以及憶阻器為基礎者、自旋扭矩轉移、以及相變隨機存取記憶體。例如,NVM可包含一記憶體,其以每個位元組或每個處理器快取線為基礎者而被讀取或被寫入。
返回至節點100,群組表110包含群組112,並且該群組112包含一群組位址範圍114。該群組位址範圍114可包含被映射至NVM 140之一個或多個記憶體位置142的一個或多個位址。詞語“映射”可涉及用以包含一裝置(例如,NVM 140)之一個或多個記憶體位址進入另一裝置(例如,節點100之群組表110)之一位址列表的技術。雖然群組表110被展示以包含一單一群組112並且群組114被展示以包含一單一群組位址範圍114,群組表110之實施例也可包含複數個群組112,並且群組112之實施例也可包含複數個位址範圍114。
控制器120可接收包含一同步位址範圍116之一 同步命令。例如,一應用(未被展示於圖中),可偶爾產生同步命令以便界定一恢復點。該同步命令可被產生,例如,經由一明確的呼叫或其可以是隱含於應用被寫入於其中之一些語言的使用。同步操作可以經由一軟體通道或一硬體通道至NVM 140。同步位址範圍116可以是關於一個或多個位址,例如,在快取130之位址,該應用希望沖除或回寫至NVM 140。該應用可產生群組112之一個或多個以代表其之大尺度資料結構,例如,資料列表、索引以及記錄。該應用接著可以群組位址範圍114填充於群組112,其反映該應用之整體資料結構。
同步操作可包含沖除指令,其是利用一處理器(未被展示於圖中)及/或被通訊至NVM 140之同步命令而被執行。例如,在同步操作期間,虛擬記憶體表(未被展示於圖中)、群組表110及/或子群組表(未被展示於圖中)可被使用以協調在那些利用同步命令之同步位址範圍116啟始地被參考之上的另外位址(或頁)之沖除。這些另外的位址可基於同步位址範圍116是否被包含於群組表110之群組112的任何一群組位址範圍114中而利用群組表110被判定。
因此,控制器120可響應於同步命令,以依據利用群組表110被判定之順序而選擇地將資料132自快取130沖除至NVM 140。群組表110可基於同步位址範圍116是否被包含於群組位址範圍114之一者中而判定控制器120沖除資料之一順序及控制器120沖除哪些資料之至少一者。該 同步操作也可依據保留應用位準一致性之一順序,如利用群組列表110被判定,而轉移被沖除的資料至另一節點,例如,另一伺服器。該群組表110將在下面參考圖2更詳細地被說明。
圖2是沖除資料至NVM 280以及轉移該沖除的資料至第二節點290之第一節點200的範例方塊圖。於圖2中,節點200包含一群組表210、一子群組表220、一記錄器230、一寫時複製(COW)引擎240、一控制器250以及一處理器260。該處理器260進一步包含一快取265以及一虛擬記憶體(VM)列表270。該第一節點200被展示以與一第二節點290介面,例如,經由一網路連接。
圖2之第一節點200和第二節點290可包含相似於圖1之節點100的功能及/或硬體。例如,圖2之群組列表210和控制器250可分別地包含對於圖1之群組表110和控制器120的功能及/或硬體。進一步地,圖2之快取265和NVM 280可分別地包含對於圖1之快取130和NVM 140之功能及/或硬體。
處理器260可以是,至少一中央處理單元(CPU)、至少一半導體為基礎之微處理機、至少一圖形處理單元(GPU)、適用於指令之取出和執行的其他硬體裝置。為了執行一同步操作,該處理器260可自快取265沖除資料266,例如,藉由利用快取線或頁而沖除一寫入快取。至記憶體位置282之寫入可源自處理器260指令執行管線之內並且隨著時間的推移而在包含複數個快取位準之處 理器內的一寫入管線傳輸。沖除這管線並且確保寫入排序之處理器260指令可以是於同步操作期間可供使用。
實施例可便利更具選擇性之沖除使用以當可能時保持處理器管線性能。VM列表270被展示包含一虛擬位址行272、一實際位址行274、一修改旗標行276以及一唯讀行278。該VM列表270可以藉由快速地辨識在與該虛擬位址行272之一虛擬記憶體位址相關聯的實際位址行274之一實際記憶體位址,以便利處理器260。
修改旗標行276可追蹤自從它們被寫入至該NVM 280後哪個實際記憶體位址已被修改,例如,藉由設定相關聯的修改旗標為1。被包含於同步命令中之同步位址範圍可基於與被設定的一修改旗標相關聯之VM列表270的實際位址274而被判定。依據處理器260,當寫入進入或退出該處理器260管線時,修改旗標行276之一修改旗標可被設定。唯讀行278可追蹤哪個實際記憶體位址不能被寫入,例如,以套取需要保存登記之實際記憶體位址之寫入。例如,在一正常寫入可被完成之前,一寫時複製(COW)可能需要被保存。
除了圖1說明之功能外,控制器250可選擇地發送被寫入至NVM 280之記憶體位置282的資料至其他裝置,例如,第二節點290,以用於複製資料之目的並且因此,保持各種型式之失效事件中的恢復能力。NVM 280及/或控制器250可追蹤修改旗標以判定至其他節點,例如,第二節點290,之沖除需求及/或轉移需求。
群組表210被展示以包含一群組編號行211、一轉移屬性行213、一啟始位址行215、一範圍大小行217以及一備妥旗標行219。於此,該群組編號行211指示該群組表210具有三群組1-3。該等群組211之各者是與轉移屬性行213之一轉移屬性相關聯,其響應於同步命令而判定該相關聯的群組是否將被沖除。該群組表210可進一步地基於該轉移屬性之一型式而判定控制器250沖除資料266之一順序及/或該控制器250將沖除資料266之哪些資料。
例如,轉移屬性213可具有不曾、經常或條件性之一數值。該不曾數值可指示對應的群組不響應該同步命令而被轉移。該經常數值可指示對應的群組是響應該同步命令而經常被轉移。該條件性數值可指示僅如果該同步命令之一型式是主要時,則該對應的群組將被轉移。因此,於圖2中,響應於該同步命令,第一群組1可能不曾被轉移,第二群組2可能經常被轉移,並且僅如果該同步命令是一主要型式(如,相對於一正常型式)時,該第三群組3方可被轉移。如下面之說明,當被組態而以一COW模式操作時,則寫入被重新指引至該NVM 280之一位置的複製,並且正常同步操作將資料沖除至該複製,但是不修改其在NVM 280之原始位置,也不指定用以發送至該NVM 280或第二節點290之複製。但是,主要型式的同步操作可能導致於子群組中的所有複製位置被沖除至NVM 280它本身。因此,主要型式的同步操作可經由一可兼容介面而致能與COW實行例之整合並且致能複製發送之進一步的最佳化。
圖1中說明之群組位址範圍114可包含來自啟始位址行215之一啟始位址以及來自群組表210之範圍大小行217的一對應範圍大小。該範圍大小可指示啟始位址之後被包含於群組位址範圍中的一些連續位址。於一實施例中,這些位址可以是實際位址,其中它們不越過存取脈絡或時間而改變。例如,這些位址可以參考NVM 280中之相同資料儲存位置,而無視於哪個處理器線程、處理程序或節點正處理該存取。更進一步地,這些實際位址可經常參考相同資料儲存位置,而無視於它們目前被映射之虛擬位址。群組中的這些位址可對應至VM列表270之實際位址行274的實際位址。
於一些實施例中,這些位址215及217可能在真實之位元儲存胞被存取之前遭受另外的重新定向,以適應於較低位準之NVM實行例上各種型式之包裝、編碼、插入、加線紋以及其它者。其他實施例可有時使用對應至VM列表270之虛擬位址行272中的虛擬位址之位址215和217。仍然於其他實施例也可使用一通用之唯一的辨識符,作為位址215和217之至少部份,以至於記憶體位置可被轉化成為如所需要之複數個視圖。雖然群組位址範圍由一啟始位址及一範圍大小所構成,群組位址範圍之實施例可以是任何之大小及/或位址解析度。例如,該位址解析度可以是位元組、快取線、快取頁或其他區塊係數。
群組表210之備妥旗標行219可對於群組位址範圍之各者提供一備妥旗標。該備妥旗標可以關於排程相關 的群組位址範圍至另一節點(例如,第二節點290)之轉移。例如,如果轉移備妥旗標被重置或0,這可指示目前不需要轉移相關的群組位址範圍。另一方面,如果該轉移備妥旗標被設定或1,這可指示相關的群組位址範圍之轉移是正在被編排(例如,被請求、被排列或正在進行中)。
此處,群組表210之三群組1-3各具有一不同的轉移屬性設定。被包含於各種群組1-3中之群組位址範圍是不重疊的。因此,NVM 280之各記憶體位置282最多是在一群組中。以啟始值1和2000開始之該等群組位址範圍具有被設定備妥旗標。因此,為了冗餘、複製及/或參與其他豐富資料服務之目的,它們目前正被轉移至另一伺服器。
子群組表220被展示以包含一子群組編號行221、COW行223、一啟始位址行225、一範圍大小行227以及一備妥旗標行229。該子群組220之子群組編號行221、啟始位址行225、範圍大小行227以及備妥旗標行229可以是分別地相似於群組表210之群組編號行211、啟始位址行215、範圍大小行217以及備妥旗標行之功能。例如,子群組編號行221可以表列一個或多個子群組。該等子群組之各者可以是與一子群組位址範圍225和227以及來自備妥旗標行229之一備妥旗標相關聯。
子群組位址範圍225和227可由來自啟始位址行225之一啟始位址及來自範圍大小行227之一範圍大小所構成。子群組位址範圍225和227之各者被包含於群組表210 之群組位址範圍215和217之一者中。因此,一子群組中之每個位址也是在該等群組之一者中。於這實施例中,任何子群組也是整體地被包含在該等群組之一單獨的一者內。該等子群組之各者也是與COW旗標行223之一COW旗標相關聯。該COW旗標可指示對應的子群組使用一COW操作。
如果寫入至對應的子群組位址範圍是將被實行於對應至子群組位址範圍的資料之一複製上,則COW旗標可被設定。例如,如果該COW旗標被設定,則在該記憶體位置280於VM列表270中被標記作為修改之前,處理器260可在一NVM 280記憶體位置282(例如,一位址或位址之範圍或位址之頁面)形成資料複製。隨後的讀取和寫入接著可被重新定向至複製資料。原始資料可被使用以在斷電之後恢復至一致的狀態。控制器250可等待,以響應於同步命令而將複製資料寫入返回至NVM 280,直至該複製資料被轉移至另一裝置(例如,第二節點290)為止。
COW 240引擎可以是,例如,包含用以實行下面說明功能之電子電路的一硬體裝置,例如,控制邏輯及/或記憶體。此外或如一另外者,該COW 240引擎可被實行,如可被編碼於一機器可讀取儲存媒體上並且可利用一處理器執行的一指令串列。該COW 240引擎可響應於利用處理器260寫入至子群組位址範圍225和227之操作,而產生與子群組位址範圍225和227相關聯之資料242的複製。如果該COW旗標被設定以及同步命令之型式是主要,則資 料之複製可被寫入至NVM 280。
被包含於一群組中之子群組位址範圍225和227是與群組之轉移屬性相關聯。此處,子群組1和2是第三群組3之子集,其具有一條件性轉移屬性。因為該COW旗標對於子群組2被設定,如果主要型式的同步命令被接收而具有被包含於子群組2中之一同步位址範圍,則子群組2之複製資料是用以在複製資料被轉移至第二節點290之後被寫入至NVM 280。
在群組和子群組之間有一優先關係,以至於在一子群組中之位址位置的同步操作不施加至其他子群組中之位置。但是,該等同步操作施加至該相同群組中之位置,其不是在任何其他子群組中。這致能一有用的能力以管理對於一些資料結構之細粒度一致性以及對於其他者的粗粒度一致性。例如,大量資料可以是在一群組中,但不是在一子群組中,而相關之元資料則可以是在相同群組內之子群組中。於這範例中,如果同步範圍包含在含有元資料之子群組內的任何位置,這可自動地導致整個子群組以及相關聯群組中之大量資料的同步。
非子群組資料可首先被同步,其之後緊隨的是子群組資料,之後緊隨的是利用同步位址範圍被指定的資料。如果子群組之COW旗標被設定,則複製資料可被寫回至NVM 280作為子群組的同步的部份。一群組位址範圍之備妥旗標可能不施加至目前是在子群組內之任何位置,因為其利用子群組之備妥旗標被超控。供用於子群組位址範 圍225和227之備妥旗標的一數值可代替供用於包含子群組位址範圍225和227群組之位址範圍215和217之備妥旗標之一數值。
同步操作可包含沖除及/或轉移操作。該轉移操作可緊隨在沖除操作之後並且接著遵循上述相對於同步之順序。該轉移操作可響應於同步命令而利用控制器250被實行,具有沖除的資料被轉移至另一裝置,例如,第二節點290。例如,該控制器250可於子群組位址範圍225和227之前沖除以及轉移包含子群組位址範圍225及227之群組位址範圍215及217,並且如果同步位址範圍被包含在子群組位址範圍中,則可轉移且沖除於同步位址範圍之前的子群組位址範圍225和227。
將被轉移之群組或子群組位址範圍可以取決於依據上面說明之優先序而首先藉由設定子群組或群組之任一者中的備妥旗標而被記錄。接著,位址範圍中之資料可被傳送至參與於該群組中之第二節點290。除非該群組及/或子群組位址範圍是最後被轉移之範圍,否則群組和子群組位址範圍之備妥旗標可在一所給予的同步操作期間,於對應的群組及/或子群組位址範圍被轉移至第二節點290之後被重置。
於此情況中,控制器250可等待以重置最後範圍之備妥旗標,直至在整個轉移完成之後。例如,如上所提及,控制器250一般可最後轉移同步位址範圍至第二節點290。接著,控制器250可發送一標記或封包至第二節點 290以指示一個一致性點已被達到。可恢復之一致性點可跨越複數個記憶體範圍(例如,頁或快取線、複數個同步操作以及複數個伺服器)。
最後轉移備妥旗標之重置因此被延遲直至標記之轉移被完成並且所有的COW資料已被提交至NVM 280為止。當轉移完成時,VM列表270中之相關聯的修改旗標利用控制器250被重置。當沒有更多與被設定的備妥旗標相關聯之位址範圍時,於子群組或群組中,該轉移完成。
記錄單元230可儲存順利地被轉移至第二節點290的一資料列表並且也可儲存用以被轉移至第二節點290之資料。於此,記錄單元230被展示以包含一啟始位址行232、一範圍大小行234、一資料行236以及一標記行238。記錄單元230之啟始位址行232和範圍大小行234之功能可以是相似於群組表210之啟始位址行215和範圍大小行217。例如,記錄單元230之啟始位址行232和範圍大小行234可以表列正編排的群組或子群組位址範圍以供用轉移至第二節點290。資料行236可作為供用於將被轉移至第二節點290之資料的一佇列或緩衝器。
標記行238之一標記可在對應的群組及/或子群組位址範圍已順利地被轉移至第二節點之後而利用控制器250被設定。因此,於轉移被中斷之事件中,例如,在電源故障期間,控制器250可在隨後檢查記錄單元230以判定哪些的位址範圍順利地被轉移。因此,控制器250可能不再傳送對於標記被設定之資料。相反地,控制器250可能 放棄在標記被設定之後被傳送的任何資料,以便回復至一先前的一致性點。進一步地,由於記錄單元230作用如供用於資料之一緩衝器,記錄單元230可無關於控制器250而轉移資料,因此控制器250可自由地實行其他操作。因此,記錄單元230可改進資料轉移至第二節點290之效能。
群組和子群組可利用一應用(未被展示於圖中)而被產生、被修改及/或被放棄。例如,一應用可映射供其使用之NVM空間進入處理器之VM空間。接著,應用可使用具有涉及記憶體(例如,NVM 280)之運算元的處理器指令以存取資料。當記憶體位置被寫入時,處理器260可標記這些位置作為在VM列表270內之修改。在這記憶體映射儲存使用之階段期間,該應用可產生群組及/或子群組並且以記憶體位置範圍資訊填充它們。該等子群組可取決於該應用之需求而是暫態或長住。
實施例可藉由允許應用明確地表示哪些記憶體位置將一起被同步化作為相同群組之部份而減低將被沖除及/或被轉移之一資料數量。具有群組位址範圍之群組的存在可致能將藉由同步操作被實行之應用一致性需求,而保持同步操作語法之向後兼容性。在群組內之子群組可致能較細粒度快取沖除而減低性能破壞。此外,在子群組內以及在子群組外之位址範圍可在單一群組內正確地被管理。群組及子群組可基於明確地被指定的應用需求以及行為,而致能用於冗餘、遠端複製或時間點複製之近期寫入的更有效發送,其中細粒度更新可被群組成為較不頻繁的 發送。
圖3是被應用伺服器310所共用之節點300的範例方塊圖。於這實施例中,二應用伺服器310-1及310-2被展示共用節點300。但是,實施例可允許較多或較少於二應用伺服器310以共用一單一節點300。於此,節點300被展示包含群組表210、子群組表220、記錄單元230以及NVM 280。應用伺服器310各被展示以包含COW引擎240及處理器260,其中處理器260包含快取265及VM列表270。此外,應用伺服器310被展示包含一應用312,其是負責喚起同步命令以及發出寫入至NVM 280。
應用伺服器310可以是任何型式之裝置,其試圖存取節點300之NVM 280,例如,電腦之主處理器或連接到電腦網路之電腦。例如,應用伺服器310可呈現VM列表270,其被映射至該NVM之一位址空間以供該應用312之使用。接著,該應用312可試圖讀取及/或寫入存取至該NVM 280。
因為處理器260管線資料及指令,故障或突然斷電損失可能導致已利用應用312被操作但尚未被儲存、或被提交給NVM 280的資料之損失。因此,在其之操作過程期間,該應用312可產生用以確保足夠之資料一致性的目的之同步命令,以保證故障或突然斷電情況中之恢復能力。依據此處被揭示之實行範例,利用同步命令產生的同步點被使用,以用於確保資料之冗餘複製被儲存之目的。該等應用伺服器310-1和310-2也可彼此直接地通訊,如於 圖3之展示,例如,用於同步目的。進一步地,節點300也可對於相似原因而直接地與另一節點(未被展示於圖中)通訊。
雖然應用伺服器310之各者被展示包含一單一應用312,該應用伺服器310之實施例可包含複數個應用312。因此,該節點300可自複數個應用312及/或節點300外界之複數個應用伺服器310而接收同步命令。
例如,如果節點300自第一應用伺服器310接收同步命令,則節點300可在複數個應用伺服器310之一第一應用伺服器310-1上進行一操作。範例操作可包含讀取及/或寫入相關聯的應用伺服器310之VM列表270的修改位元,沖除相關聯的應用伺服器310之一快取265及/或將相關聯的應用伺服器310之COW資料寫入至NVM 280。
進一步地,如果第二應用伺服器310-2與第一應用伺服器310-1共用群組表210,節點300可響應於第一應用伺服器310-1之同步命令,而在複數個應用伺服器310之一第二應用伺服器310-2上進行至少部份之相同操作。因此,由於應用伺服器310-1和310-2共用群組表210,而仍然保持分別的VM列表270,為了確保一致性而利用應用伺服器310-1之一者的一同步操作,可導致同步操作之至少部份發生於應用伺服器310-2之另一者中。經由共用群組表210之共用群組可跨越不是在相同記憶體領域中之聚集的應用而致能一致性。因此,實施例可應用至一單一節點300,其複製至其之同類節點,或於一共用記憶體環境 中。
圖4是包含用以沖除資料至一NVM之指令的電腦裝置400之範例方塊圖。於圖4中之實施例,電腦裝置400包含一處理器410和一機器可讀取儲存媒體420。該機器可讀取儲存媒體420進一步包含用以沖除資料至一NVM(未被展示於圖中)之指令421至426。
電腦裝置400可以是,例如,一安全微處理機、一筆記型電腦、一桌上型電腦、集所有功能於一身之一系統、一伺服器、一網路裝置、一控制器、一無線裝置、或可執行指令421至426之任何其他型式的裝置。於某些範例中,電腦裝置400可包含或是連接到另外的構件,例如,記憶體、控制器等等。
處理器410可以是,至少一中央處理單元(CPU)、至少一半導體為基礎之微處理機、至少一圖形處理單元(GPU)、適用於儲存在機器可讀取儲存媒體420中之指令的取出和執行之其他硬體裝置、或其之組合。處理器410可擷取、解碼、以及執行指令421至426以實行沖除資料至NVM。另外地或除了取出和執行指令之外,處理器410可包含至少一積體電路(IC)、其他控制邏輯、其他電子電路、或包含用以進行指令421至426之功能的一些電子構件之組合。
機器可讀取儲存媒體420可以是包含或儲存可執行指令的任何電氣、磁式、光學、或其他實體儲存裝置。因此,機器可讀取儲存媒體420可以是,例如,隨機存取 記憶體(RAM)、電氣可消除可程控唯讀記憶體(EEPROM)、儲存驅動器、小型光碟唯讀記憶體(CD-ROM)、以及其類似者。例如,機器可讀取儲存媒體420可以是非暫態的。如在下面更詳細地說明,機器可讀取儲存媒體420可藉由用以沖除資料至NVM之一串列可執行指令而被編碼。
此外,指令421至426當利用一處理器被執行時(例如,經由該處理器之一處理元件或複數個處理元件),可導致該處理器進行處理程序,例如,圖4之處理程序。例如,產生群組表指令421可利用該處理器410被執行以產生包含一個或多個群組之一群組表(未被展示於圖中)。該等群組之各者可以是與一群組位址範圍以及一轉移屬性相關聯。產生子群組表指令422可利用該處理器410被執行以產生包含一個或多個子群組之一子群組列表(未被展示於圖中)。該等子群組之各者可以是與一子群組位址範圍以及一轉移屬性(雖然該群組)相關聯,並且該等子群組位址範圍之各者可被包含於該等群組位址範圍之一者中。
接收指令423可利用處理器410被執行以接收包含一同步位址範圍之一同步命令。第一沖除指令424可利用該處理器410被執行,以基於相關聯群組之轉移屬性,而第一沖除資料至包含同步位址範圍之任何群組範圍位址範圍的一NVM(未被展示於圖中),卻不包含同步位址範圍以及包含該同步位址範圍的任何子群組。
第二沖除指令425可利用處理器410被執行,以 基於包含相關聯的子群組之群組的轉移屬性,而在第一沖除之後,第二沖除資料至包含同步位址範圍之任何子群組的NVM,卻不包含該同步位址範圍。第三沖除指令426可利用該處理器410被執行以在該第二沖除之後第三沖除資料至同步位址範圍之NVM。
圖5是用以沖除及轉移資料之方法500的範例流程圖。雖然方法500之執行在下面藉由參考至第一節點200被說明,用於方法400之執行的其他適當構件也可被採用,例如,節點100或300。另外地,用以執行方法500之構件可在複數個裝置(例如,與輸入和輸出裝置通訊之一處理裝置)之中被延伸。於某些情節中,作為協調之複數個裝置可被考慮為進行方法500之一單一裝置。方法500可以被儲存在一機器可讀取儲存媒體(例如,儲存媒體420)上之可執行的指令之形式、及/或以電子電路形式而被實行。
在方塊505,第一節點200接收包含一同步位址範圍之一同步命令。接著,在方塊510,第一節點200判定同步位址範圍是否被包含於群組表210之任何群組中。如果同步位址範圍不被包含於群組211之任一者中,則方法500前進至方塊515,其中第一節點200沖除同步位址範圍之資料,例如至NVM 280。接著,在方塊520,第一節點200將沖除的同步位址範圍之資料自第一節點200轉移至第二節點290。
但是,如果同步位址範圍是被包含於群組211之 一者中,方法500自方塊510前進至方塊525,其中第一節點200判定同步位址範圍是否被包含於子群組表220之任何子群組中。該等子群組之各者被包含於群組211之一者中。如果同步位址範圍是不被包含於該等子群組221之任一者中,方法500前進至方塊550,其中第一節點200沖除群組211之資料,其包含同步位址範圍,但是不包含來自正被沖除之同步位址範圍。接著,在方塊555,第一節點200沖除同步位址範圍之資料。最後,在方塊560,第一節點200將沖除的群組以及沖除的同步位址範圍之資料自第一節點200轉移至第二節點290。
但是,如果同步位址範圍是包含子群組之一者,方法500自方塊525前進至方塊530,其中第一節點200沖除群組之資料,其包含同步位址範圍但是不包含包括同步位址範圍之子群組以及同步位址範圍本身。接著,在方塊535,第一節點200沖除子群組之資料,其包含同步位址範圍但是不包含來自正被沖除之同步位址範圍。接著,在方塊540,第一節點200沖除同步位址範圍之資料。最後,在方塊560,第一節點200將群組211、子群組221以及同步位址範圍之被沖除的資料自第一節點200轉移至第二節點290。雖然圖5展示轉移發生在沖除之後,任何之位址範圍可在被沖除之後即時地被轉移。
依據上述內容,實施例提供一機構以確保利用群組以及子群組被表示之應用一致性限制被強制誇越在包含複數個NVM系統以及相關聯的儲存功能之應用操作中所 包括之整個構件範疇。資料一致性保證被併入建立在處理器及記憶體控制器之現有的特點上之同步操作中。因此,持久性資料一致性之範疇實際地被擴充,而維持與應用邊界對齊。
藉由使用一群組以保持對於應用位準一致性一起被管理之位址範圍的記錄,實施例致能延伸複數個記憶體範圍(例如,頁面或快取線)、複數個同步操作以及複數個伺服器之可恢復一致性點的訊流之構造。
200‧‧‧第一節點
210‧‧‧群組表
220‧‧‧子群組表
211‧‧‧群組編號行
213‧‧‧轉移屬性行
215‧‧‧啟始位址行
217‧‧‧範圍大小行
219‧‧‧備妥旗標行
221‧‧‧子群組編號行
223‧‧‧COW行
225‧‧‧啟始位址行
227‧‧‧範圍大小行
229‧‧‧備妥旗標行
232‧‧‧啟始位址行
230‧‧‧記錄器
234‧‧‧範圍大小行
236‧‧‧資料行
238‧‧‧標記行
240‧‧‧COW引擎
242‧‧‧資料複製
250‧‧‧控制器
260‧‧‧處理器
265‧‧‧快取
266‧‧‧資料
270‧‧‧虛擬記憶體(VM)列表
272‧‧‧虛擬位址行
274‧‧‧實際位址行
276‧‧‧修改旗標行
278‧‧‧唯讀行
280‧‧‧非依電性記憶體(NVM)
282‧‧‧記憶體位置
290‧‧‧第二節點

Claims (15)

  1. 一種節點,其包括:一群組表,其包含一個或多個群組,該等群組之各者與一群組位址範圍相關聯,該等群組位址範圍被映射至一非依電性記憶體(NVM)之一記憶體位置;以及一控制器,其接收包含一同步位址範圍之一同步命令並且依據藉由該群組表被判定的一順序而將資料自一快取沖除至該非依電性記憶體,其中該群組表是基於該同步位址範圍是否被包含於該等群組位址範圍之一者中,以判定該控制器沖除該資料的一順序以及該控制器沖除哪些資料之至少一者。
  2. 如請求項1之節點,其中,該群組表之該等群組之各者是與一轉移屬性相關聯,並且該群組表是進一步地基於該轉移屬性之一型式而判定該控制器沖除該資料的一順序以及該控制器沖除哪些資料之至少一者。
  3. 如請求項1之節點,其中,該控制器用以響應於該同步命令而轉移該沖除資料至另一節點,該等群組位址範圍之各者是與一備妥旗標相關聯,並且該控制器用以在該相關聯群組範圍被轉移之前,設 定該相關聯群組位址範圍之備妥旗標。
  4. 如請求項3之節點,其中,該同步位址範圍是基於與一被設定的修改旗標(dirty flag)相關聯之該節點的虛擬記憶體(VM)表的一位址而被判定,並且如果一寫入操作於該相關聯位址上被執行,則該修改旗標被設定。
  5. 如請求項4之節點,其中,在該相關聯群組位址範圍至其他節點之轉移完成之後,該控制器用以重置該備妥旗標,並且在所有備妥旗標被重置之後,該控制器用以重置該修改旗標,以指示至其他節點之轉移是完成。
  6. 如請求項5之節點,其中,該控制器是最後地轉移該同步位址範圍,並且在該同步位址範圍被轉移至其他節點之後,該控制器發送一標記至其他節點以指示一個一致點已被達到。
  7. 如請求項2之節點,其中,該轉移屬性具有一不曾、經常以及條件數值之至少一者,該不曾數值指示對應群組並不響應於同步命令而轉移,該經常數值指示對應群組響應於同步命令而將被轉移,並且該條件數值指示對應群組僅在如果該同步命令之 一型式是主要時方被轉移。
  8. 如請求項7之節點,進一步包括:一子群組表,其包含一個或多個子群組,該等子群組之各者是與一子群組位址範圍以及一備妥旗標相關聯,其中子群組位址範圍之各者被包含於該群組表的該等群組位址範圍之一者中,並且該等子群組之各者是與一寫時複製(COW)旗標相關聯,如果至該對應的子群組位址範圍之寫入是將於該等對應子群組位址範圍之資料的一複製上被執行時,則該寫時複製(COW)旗標將被設定。
  9. 如請求項8之節點,其中,該等子群組位址範圍被包含於與該轉移屬性之該條件數值相關聯的該群組表之一群組中,供用於該子群組位址範圍之該備妥旗標的一數值取代供用於包含該子群組位址範圍的該群組位址範圍之該備妥旗標的一數值,該控制器用以轉移在該子群組位址範圍之前包含該子群組位址範圍之群組位址範圍,以及如果該同步位址範圍被包含於該子群組位址範圍中,轉移在該同步位址範圍之前的該子群組位址範圍。
  10. 如請求項8之節點,進一步地包括:一寫時複製(COW)引擎,其響應於利用一中央處理單元(CPU)至該子群組位址範圍之寫入操作而產生與 該子群組位址範圍相關聯的資料之複製,其中如果該寫時複製旗標被設定並且該同步命令之型式是主要,則該等資料之複製被寫入至該非依電性記憶體(NVM)。
  11. 如請求項1之節點,進一步地包括:一記錄單元,其儲存順利地被轉移至其他節點之一資料列表以及儲存將被轉移至其他節點的資料,其中如果該轉移被中斷且接著被恢復,則該記錄單元是不再重送被儲存在該列表中之資料,並且該記錄單元是獨立於該控制器而轉移被儲存之資料。
  12. 如請求項1之節點,其中,該節點包含該非依電性記憶體並且接收來自該節點外部之複數個應用伺服器的複數個應用之同步命令,如果該節點接收來自一第一應用伺服器之同步命令,則該節點執行於該等複數個應用伺服器之該第一應用伺服器上之一操作,該操作是包含下列至少一者:讀取及寫入該相關聯應用伺服器之一虛擬記憶體表的修改旗標、沖除該相關聯應用伺服器之一快取、以及將該相關聯應用伺服器之寫時複製(COW)資料寫入至該非依電性記憶體,並且如果一第二應用伺服器與該第一應用伺服器共用該群組表,則該節點響應於該第一應用伺服器之同步命令,執行該等複數個應用伺服器之該第二應用伺服器上 的操作。
  13. 一種方法,其包括下列步驟:接收包含一同步位址範圍之一同步命令;判定該同步位址範圍是否被包含於一群組表之任何群組以及一子群組表之任何子群組中,該等子群組之各者被包含於該等群組之一者中;如果該同步位址範圍被包含於該等群組及子群組之至少一者中,則沖除包含該同步位址範圍之該群組的資料,不包含該同步位址範圍的資料以及任何包含該同步位址範圍之子群組;如果該子群組被包含於該沖除的群組並且該子群組包含該同步位址範圍,則在包含該子群組之該群組被沖除之後沖除該子群組之資料,不包含該同步位址範圍的資料;在包含該同步位址範圍之該等群組以及子群組之任一者被沖除之後,沖除該同步位址範圍之資料;以及自一第一節點轉移該等群組、子群組以及同步位址範圍之至少一者的沖除資料至一第二節點。
  14. 如請求項13之方法,其中,該等群組及子群組之各者包含具有一啟始位址及一範圍大小之一位址範圍,該範圍大小指示該啟始位址之後被包含於該位址範圍中的一些連續位址,該等群組以及子群組利用該第一節點之一應用被界定,並且 該等群組之各者是與控制該相關聯群組是否響應於該同步命令而被沖除之一轉移屬性相關聯。
  15. 一種儲存指令之非暫態電腦可讀取儲存媒體,如果該等指令藉由一裝置之一處理器被執行,則導致該處理器進行下列步驟:產生包含一個或多個群組之一群組表,該等群組之各者與一群組位址範圍及一轉移屬性相關聯;產生包含一個或多個子群組之一子群組表,該等子群組之各者與一子群組位址範圍相關聯,該等子群組位址範圍之各者被包含於該等群組位址範圍之一者中;接收包含一同步位址範圍之一同步命令;基於該相關聯群組的該轉移屬性,第一沖除包含該同步位址範圍之任何群組範圍位址範圍的資料至一非依電性記憶體(NVM),不包含該同步位址範圍以及任何包含該同步位址範圍之子群組;基於包含該相關聯子群組之該群組的轉移屬性,在該第一沖除之後,第二沖除包含該同步位址範圍之任何子群組的資料至該非依電性記憶體(NVM),不包含該同步位址範圍;以及在該第二沖除之後,第三沖除該同步位址範圍之資料至該非依電性記憶體。
TW103111455A 2013-03-28 2014-03-27 群組表資料沖除技術 TWI531901B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/034398 WO2014158168A1 (en) 2013-03-28 2013-03-28 Data flush of group table

Publications (2)

Publication Number Publication Date
TW201502777A TW201502777A (zh) 2015-01-16
TWI531901B true TWI531901B (zh) 2016-05-01

Family

ID=51624950

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103111455A TWI531901B (zh) 2013-03-28 2014-03-27 群組表資料沖除技術

Country Status (5)

Country Link
US (1) US9678871B2 (zh)
EP (1) EP2979187B1 (zh)
CN (1) CN104937564B (zh)
TW (1) TWI531901B (zh)
WO (1) WO2014158168A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248610B2 (en) 2015-06-23 2019-04-02 Mellanox Technologies, Ltd. Enforcing transaction order in peer-to-peer interactions
US10303647B2 (en) 2015-07-15 2019-05-28 Mellanox Technologies, Ltd. Access control in peer-to-peer transactions over a peripheral component bus
US10776272B2 (en) * 2016-03-02 2020-09-15 Mellanox Technologies, Ltd. Control of persistent memory via a computer bus
KR101831126B1 (ko) * 2016-08-04 2018-02-23 충북대학교 산학협력단 스토리지 내의 데이터 처리 장치의 제어 방법
US11327909B1 (en) 2020-10-26 2022-05-10 Mellanox Technologies, Ltd. System for improving input / output performance
US11609700B2 (en) 2021-08-11 2023-03-21 Mellanox Technologies, Ltd. Pacing in a storage sub-system
CN116264085A (zh) * 2021-12-14 2023-06-16 长鑫存储技术有限公司 存储系统以及存储系统的数据写入方法
US20240143227A1 (en) * 2022-10-26 2024-05-02 Western Digital Technologies, Inc. Data Storage Device and Method for Reducing Flush Latency

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6360231B1 (en) 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US6658540B1 (en) * 2000-03-31 2003-12-02 Hewlett-Packard Development Company, L.P. Method for transaction command ordering in a remote data replication system
US6728736B2 (en) 2001-03-14 2004-04-27 Storage Technology Corporation System and method for synchronizing a data copy using an accumulation remote copy trio
US6789156B1 (en) 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US7133982B2 (en) 2003-06-18 2006-11-07 International Business Machines Corporation Method, system, and article of manufacture for consistent copying of storage volumes
EP1510924B1 (en) * 2003-08-27 2008-07-23 ARM Limited Apparatus and method for handling transactions with writes and reads to EEPROM or Flash memories
US7133986B2 (en) 2003-09-29 2006-11-07 International Business Machines Corporation Method, system, and program for forming a consistency group
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
JP2005310008A (ja) 2004-04-23 2005-11-04 Fuji Xerox Co Ltd 木構造データ同期装置および方法
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7975018B2 (en) 2004-07-07 2011-07-05 Emc Corporation Systems and methods for providing distributed cache coherence
US7818515B1 (en) 2004-08-10 2010-10-19 Symantec Operating Corporation System and method for enforcing device grouping rules for storage virtualization
WO2006095335A2 (en) 2005-03-07 2006-09-14 Noam Camiel System and method for a dynamic policies enforced file system for a data storage device
CA2615324A1 (en) 2005-07-14 2007-07-05 Yotta Yotta, Inc. Maintaining write order fidelity on a multi-writer system
US7464126B2 (en) 2005-07-21 2008-12-09 International Business Machines Corporation Method for creating an application-consistent remote copy of data using remote mirroring
US9032164B2 (en) 2006-02-17 2015-05-12 Emulex Corporation Apparatus for performing storage virtualization
US7640395B2 (en) * 2006-03-30 2009-12-29 Intel Corporation Maintaining write ordering in a system
US7788231B2 (en) 2006-04-18 2010-08-31 International Business Machines Corporation Using a heartbeat signal to maintain data consistency for writes to source storage copied to target storage
US7647454B2 (en) 2006-06-12 2010-01-12 Hewlett-Packard Development Company, L.P. Transactional shared memory system and method of control
KR101146059B1 (ko) * 2006-07-31 2012-05-14 가부시끼가이샤 도시바 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템을 위한데이터 판독/기입 방법
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US20090063807A1 (en) * 2007-08-29 2009-03-05 International Business Machines Corporation Data redistribution in shared nothing architecture
JP5101378B2 (ja) 2008-04-16 2012-12-19 ソニー株式会社 リーダライタ、通信処理装置、通信処理方法、データ管理システム及び通信システム
US8099387B2 (en) 2008-06-02 2012-01-17 International Business Machines Corporation Managing consistency groups using heterogeneous replication engines
US20100268899A1 (en) 2008-07-01 2010-10-21 Hiroki Etoh Memory controller, nonvolatile storage device, data processing device, nonvolatile storage device system, and method
JP5221332B2 (ja) 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8762642B2 (en) * 2009-01-30 2014-06-24 Twinstrata Inc System and method for secure and reliable multi-cloud data replication
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8438332B2 (en) 2009-06-22 2013-05-07 International Business Machines Corporation Apparatus and method to maintain write operation atomicity where a data transfer operation crosses a data storage medium track boundary
US9063886B2 (en) 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
US9053027B1 (en) 2011-12-21 2015-06-09 Emc Corporation Techniques for maintaining and restoring dirty caches across CPU resets
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US20140075086A1 (en) 2012-09-13 2014-03-13 International Business Machines Corporation Durable transactions with storage-class memory

Also Published As

Publication number Publication date
WO2014158168A1 (en) 2014-10-02
EP2979187A4 (en) 2016-10-19
US9678871B2 (en) 2017-06-13
EP2979187A1 (en) 2016-02-03
EP2979187B1 (en) 2019-07-31
CN104937564B (zh) 2017-09-12
CN104937564A (zh) 2015-09-23
US20150356012A1 (en) 2015-12-10
TW201502777A (zh) 2015-01-16

Similar Documents

Publication Publication Date Title
TWI531901B (zh) 群組表資料沖除技術
CN106407040B (zh) 一种远程数据复制方法及系统
US8108597B2 (en) Storage control method and system for performing backup and/or restoration
JP4464378B2 (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
US9557933B1 (en) Selective migration of physical data
US20170052723A1 (en) Replicating data using remote direct memory access (rdma)
US9703701B2 (en) Address range transfer from first node to second node
WO2015054897A1 (zh) 数据存储方法、数据存储装置和存储设备
KR20220152936A (ko) 커스터마이징 가능한 메타데이터를 위한 스토리지 장치, 스토리지 시스템 및 그것의 동작 방법
CN110457261A (zh) 数据访问方法、装置及服务器
US20190324868A1 (en) Backup portion of persistent memory
WO2022033269A1 (zh) 数据处理的方法、设备及系统
US10025516B2 (en) Processing data access requests from multiple interfaces for data storage devices
JP2006085408A (ja) データ保存管理方法およびデータライフサイクルマネージメントシステム
US11003541B2 (en) Point-in-time copy on a remote system
JP2005215940A (ja) ストレージシステム、サーバ装置及び先行コピーデータ生成方法
JP2013029911A (ja) 制御装置、制御方法およびストレージ装置
WO2014087465A1 (ja) ストレージ装置及びストレージ装置移行方法
TWI744039B (zh) 分散式儲存系統及應用於上之資料同步方法
JP2005301560A (ja) クラスタファイルサーバ
JP2012168840A (ja) ストレージシステム、ストレージ方法、及びプログラム
JP2014106629A (ja) 仮想テープ装置およびその冗長データ作成方法
JP2013120463A (ja) 情報処理方法、情報処理システム、情報処理装置及びプログラム

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees