TW201608469A - 有效率釋出序列輸入輸出串流的方法及裝置 - Google Patents

有效率釋出序列輸入輸出串流的方法及裝置 Download PDF

Info

Publication number
TW201608469A
TW201608469A TW104124802A TW104124802A TW201608469A TW 201608469 A TW201608469 A TW 201608469A TW 104124802 A TW104124802 A TW 104124802A TW 104124802 A TW104124802 A TW 104124802A TW 201608469 A TW201608469 A TW 201608469A
Authority
TW
Taiwan
Prior art keywords
cache
write
storage controller
full
release
Prior art date
Application number
TW104124802A
Other languages
English (en)
Other versions
TWI544401B (zh
Inventor
麥克大衛 巴瑞
柴克瑞大衛 卓特
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
Priority claimed from US14/465,291 external-priority patent/US8930619B2/en
Application filed by 達西系統股份有限公司 filed Critical 達西系統股份有限公司
Publication of TW201608469A publication Critical patent/TW201608469A/zh
Application granted granted Critical
Publication of TWI544401B publication Critical patent/TWI544401B/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/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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • 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/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • 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/1016Performance improvement
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明係揭露一種自一儲存控制器釋出寫入資料至儲存元件的方法。此方法包含決定一快取元素應該自該儲存控制器的一寫入快取記憶體移轉至該儲存元件、計算出一髒水標是在一髒水標最大值之上、辨別一第一快取元素將自該寫入快取記憶體釋出至該儲存元件、將包含該第一快取元素的一第一資料容器移轉至該儲存元件、以及由該儲存控制器將一有效釋出計數增加。此方法也包含重複該決定、計算、辨別、移轉和增加等動作,假如該有效釋出計數是小於一有效釋出計數最大值的話。該有效釋出計數是發至一虛擬磁碟中尚未被完成的主機寫入請求的一目前數目,以及該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組。

Description

有效率釋出序列輸入輸出串流的方法及裝置
本發明所屬技術領域大致相關於電腦資料儲存系統,特別是關於有效率地自一儲存控制器快取記憶體將序列輸入輸出串流釋出至儲存元件之一條紋區域的方法及裝置。
在資料儲存系統中,係藉由許多熟知的技術例如是包括寫回快取等資料快取技術來提升寫入效能。當一儲存控制器自一主機電腦接收一寫入請求時,假如此寫入快取中尚有空間的話,此儲存控制器將寫入資料存入寫入快取,且會通知此主機電腦已完成此寫入請求。如此可以使得此主機電腦能夠繼續發出額外的讀取或是寫入請求。假如此寫入快取中並沒有空間的話,此儲存控制器則必須將寫入資料直接存入速度較慢的儲存元件中,如此會減緩寫入效能。
一旦將寫入資料存入寫入快取後,此儲存控制器會啟動不同的策略來決定在何時、選取那些、及多少數目以將寫入資料移轉至儲存元件。與此移轉相關的這些行動通稱為自寫入快取釋出資料。釋出資料是很重要的因為其釋放出寫入快取內的空間以自主機電腦接收新的寫入請求,且這些資料是以磁碟陣列(redundant array of inexpensive disk,RAID)的組態儲存於儲存元件中。磁碟陣列組態可以在單一儲存元件失效的事件中仍保留資料-且某些磁碟陣列組態-可以在多重儲存元件失效的事件中仍保留資料。因此需要提供一種有效率自一儲存控制器快取記憶體將寫入資料釋出至儲存元件的方法及裝置。
本發明係關於解決習知技術一些缺點的方案。根據本發明的 實施例,提供一種有效率地自一儲存控制器釋出寫入資料至儲存元件的方法。此方法包含由該儲存控制器決定一快取元素應該自該儲存控制器的一寫入快取記憶體移轉至該儲存元件。該快取元素為該寫入快取記憶體的一固定部分大小。此方法也包含由該儲存控制器計算出一髒水標是在一髒水標最大值之上,由該儲存控制器辨別一第一快取元素將自該寫入快取記憶體釋出至該儲存元件,將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件,及由該儲存控制器將一有效釋出計數增加。該髒水標辨別在該寫入快取記憶體中的髒資料數目,且該髒資料是在該寫入快取記憶體中尚未被寫入該儲存元件內的資料。該有效釋出計數是發至一虛擬磁碟中尚未被完成的主機寫入請求的一目前數目。該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組。此方法還包含假如該有效釋出計數是小於一有效釋出計數最大值的話,則由該儲存控制器重複該決定、計算、辨別、移轉和增加等動作。
於本發明另外的實施例中提供一種有效率地釋出寫入資料至儲存元件的儲存控制器。此儲存控制器包含一個處理器,以及一記憶體,與該處理器耦接。該記憶體包括一寫入快取記憶體,其包含複數個快取元素。該快取元素為該寫入快取記憶體的一固定部分大小。該儲存控制器決定一快取元素應該自該寫入快取記憶體移轉至該儲存元件,計算出一髒水標是在一髒水標最大值之上,辨別一第一快取元素自該寫入快取記憶體釋出至該儲存元件,將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件,將一有效釋出計數增加,以及重複該決定、計算、辨別、移轉和增加等動作,假如該有效釋出計數是小於一有效釋出計數最大值的話。該髒水標辨別在該寫入快取記憶體中的髒資料數目,其中該髒資料是在該寫入快取記憶體中尚未被寫入該儲存元件內的資料。該有效釋出計數是發至一虛擬磁碟中尚未被完成的主機寫入請求的一目前數目。該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組。
於本發明另外的實施例中提供一種有效率釋出寫入資料至儲存元件的系統。此系統包含一個主機電腦,一儲存控制器,與該主機電腦耦接以及一虛擬磁碟其包括一個或多個儲存元件,與該儲存控制器耦接。 此儲存控制器包含一個處理器,以及一記憶體,與該處理器耦接。該記憶體包括一寫入快取記憶體,其包含複數個快取元素。該快取元素為該寫入快取記憶體的一固定部分大小。該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組。該主機電腦傳送一寫入請求至該儲存控制器,為了響應接收該寫入請求,該儲存控制器儲存該寫入請求所對應的寫入資料至複數個快取元素中。該儲存控制器決定一快取元素應該自該寫入快取記憶體移轉至該儲存元件,計算出一髒水標是在一髒水標最大值之上,辨別一第一快取元素自該寫入快取記憶體釋出至該儲存元件,將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件,將一有效釋出計數增加,以及重複該決定、計算、辨別、移轉和增加等動作,假如該有效釋出計數是小於一有效釋出計數最大值的話。該髒水標辨別在該寫入快取記憶體中的髒資料數目,其中該髒資料是在該寫入快取記憶體中尚未被寫入該儲存元件內的資料。該有效釋出計數是發至一虛擬磁碟中尚未被完成的主機寫入請求的一目前數目。
本發明的一個優點是可以藉由有效率地自一儲存控制器釋出寫入資料至儲存元件來改善一條紋虛擬磁碟的寫入效率。若是沒有使用有效率的方式將條紋釋出至一條紋區域,會發生以下兩種情況之一。一儲存控制器或許會太過度地自寫入資料快取記憶體複製資料至條紋區域,而導致大致上寫入資料快取記憶體的低度使用及造成其失去效果。或者是,一儲存控制器或許會太消極地自寫入資料快取記憶體複製資料至條紋區域,而導致寫入資料快取記憶體大致上都是滿的狀態。當寫入資料快取記憶體是滿的狀態時,儲存控制器必須暫緩新的寫入直到在此寫入資料快取記憶體有新的可用空間,或者是以寫過方式將此新的寫入資料直接寫入儲存元件內。兩種方式都會造成效能低落的結果。
本發明的另一個優點是可以連續釋出最大數量的可用寫入資料,其可以在寫入快取記憶體中釋放出最多空間以供主機電腦寫入資料。寫入快取記憶體中如此的最大可用空間,允許儲存控制器儲存較多的寫入請求以及在寫入快取記憶體中儲存較多的寫入請求。
本發明的又一個優點是相較於習知技術必須依序檢查每一 筆髒的快取元素可以允許更快速地搜尋可以釋出的較佳替代寫入資料。本發明利用資料容器的概念以迅速地辨別可用的滿條紋以供釋出。一般而言,資料容器的數目是遠小於快取元素的,因為每一個資料容器中包含預設數目的快取元素。此外,釋出串流的數目也是遠小於資料容器的,所以本發明所使用的搜尋釋出串流也是遠快於搜尋資料容器或是快取元素。
本發明內容說明章節目的並非在於定義本發明。本發明係由申請專利範圍所定義。舉凡本發明之實施例、特徵、目的及優點等將可透過下列說明申請專利範圍及所附圖式獲得充分瞭解。
100‧‧‧資料儲存系統
104‧‧‧主機電腦
108、108a、108b‧‧‧儲存控制器
112‧‧‧主機匯流排或是網路
116、116a、116b‧‧‧儲存元件
120‧‧‧儲存元件匯流排
124、132‧‧‧儲存子系統
128、136‧‧‧非主機為基型的資料儲存系統
140‧‧‧控制器間通訊鏈結
212‧‧‧主機匯流排轉接器
216、312‧‧‧中央處理器
220、316‧‧‧記憶體
224‧‧‧應用程式
308‧‧‧主機串流
320‧‧‧資料串流大資料
324‧‧‧讀取資料快取記憶體
328‧‧‧寫入資料快取記憶體
332‧‧‧主機輸入輸出寫入請求
340‧‧‧計時器
344‧‧‧儲存元件寫入
348‧‧‧虛擬磁碟
352‧‧‧快取元素
404‧‧‧條紋N
408‧‧‧條紋N+1
412‧‧‧條紋N+2
416‧‧‧條紋N+3
420‧‧‧區塊A
424‧‧‧區塊B
428‧‧‧區塊C
432‧‧‧區塊D
436‧‧‧條紋M
440‧‧‧條紋M+1
444‧‧‧條紋M+2
448‧‧‧條紋M+3
452‧‧‧區塊E
456‧‧‧區塊F
460‧‧‧區塊G
464‧‧‧區塊H
468‧‧‧區塊I
472‧‧‧區塊J
476‧‧‧區塊K
480‧‧‧區塊L
484‧‧‧區塊M
488‧‧‧區塊N
492‧‧‧區塊O
496‧‧‧區塊P
320‧‧‧寫入資料流大資料
328‧‧‧寫入資料快取記憶體
332‧‧‧主機輸入輸出寫入請求
344‧‧‧儲存元件寫入
352‧‧‧快取元素
504‧‧‧快取記憶體的空部分
508‧‧‧快取記憶體的髒部分
512‧‧‧髒水標
516‧‧‧最大髒水標百分比
604‧‧‧條紋
608‧‧‧區塊
612‧‧‧資料容器
616‧‧‧空快取元素
620‧‧‧髒快取元素
624‧‧‧有效快取元素
804‧‧‧條紋
808‧‧‧滿/部分條紋
812‧‧‧每一條紋中的快取元素
816‧‧‧每一條紋中的髒快取元素
820‧‧‧目前快取元素指針
824‧‧‧目前資料容器
828‧‧‧釋出串流物件
832‧‧‧最小釋出串流物件
836‧‧‧最大釋出串流物件
840‧‧‧釋出串流物件梯度
904‧‧‧滿條紋寫入親和力值
908‧‧‧主機寫入需求中斷時間
912‧‧‧有效釋出計數最大值
916‧‧‧釋出串流梯度臨界值
920‧‧‧有效釋出計數
第1a圖繪示本發明第一實施例的非主機為基型之資料儲存系統的方塊圖。
第1b圖繪示本發明第二實施例的非主機為基型之資料儲存系統的方塊圖。
第1c圖繪示本發明第三實施例的非主機為基型之資料儲存系統的方塊圖。
第2a圖繪示本發明第一實施例的主機為基型之資料儲存系統的方塊圖。
第2b圖繪示本發明第二實施例的主機為基型之資料儲存系統的方塊圖。
第2c圖繪示本發明第三實施例的主機為基型之資料儲存系統的方塊圖。
第3圖繪示本發明一實施例的資料儲存系統的方塊圖。
第4a圖顯示根據本發明實施例之一單一儲存元件條紋區域的方塊示意圖。
第4b圖顯示根據本發明實施例之一多重儲存元件條紋區域的方塊示意圖。
第5圖顯示根據本發明實施例之一寫入資料快取記憶體的資料流程之方塊示意圖。
第6圖顯示根據本發明實施例之一3+1磁碟陣列(RAID)5條紋區域的一範例資料容器之示意圖。
第7a圖顯示根據本發明實施例之一計算完整寫入百分比的流程圖。
第7b圖顯示根據本發明實施例的完整寫入百分比之一範例計算。
第8圖顯示根據本發明實施例之一寫入資料流大資料之參數示意圖。
第9a圖顯示根據本發明實施例之一資料流整體大資料的示意圖。
第9b圖顯示根據本發明實施例之一資料流虛擬磁碟大資料的示意圖。
第10圖顯示根據本發明實施例之一資料流大資料初始過程的流程圖。
第11圖顯示根據本發明實施例之一串流釋放初始過程的流程圖。
第12圖顯示根據本發明實施例之一主要流程的流程圖。
第13圖顯示根據本發明實施例之一決定此目前快取元素是否能有效率地釋出之主要流程的流程圖。
第14圖顯示根據本發明實施例之一辨別一較佳快取元素可以被釋出之主要流程的流程圖。
第15圖顯示根據本發明實施例之一決定對應虛擬磁碟的釋出串流梯度之主要流程的流程圖。
本案發明人觀察到自主機電腦至儲存控制器間的某些輸入輸出工作負荷時所遭遇的一些效能問題。特別是,當牽涉到大量的序列寫入串流時,儲存控制器中的寫入快取記憶體或許會難以進行有效的管理。
部分磁碟陣列的寫入操作牽涉到將新的寫入資料儲存到一寫入快取記憶體中,自儲存元件讀取舊的寫入資料以及同位,產生新的同 位,及寫入新的寫入資料以及新的同位至儲存元件。如此的方式使得在一個完整條紋寫入而不是部分條紋寫入來處理同位磁碟陣列的寫入操作會更有效率。本發明藉由在較大序列寫入串流時釋出完整條紋而不是部分條紋來改善效能。
第1a圖繪示本發明第一實施例的非主機為基型的資料儲存系統100的元件方塊圖。
資料儲存系統100包含一個或數個主機電腦104。主機電腦104一般為伺服器,但是也可為桌上型電腦或行動型電腦。主機電腦104執行應用程式而產生讀取請求以及寫入請求,透過主機匯流排112(或網路)將讀取請求以及寫入請求傳送至儲存控制器108。在本實施例中,主機匯流排(或網路)112可為SCSI,FC-AL,USB,Firewire,SSA,SAS,SATA,或高速匯流排(Infiniband)。在其他實施例中,主機匯流排(或網路)112可為Ethernet,iSCSI,Fiber Channel,SSA,ESCON,ATM,FICON,NVMe,或高速匯流排(Infiniband)。
主機電腦104可與多個儲存控制器108相連接,為了清楚起見,圖式中僅顯示出一個儲存控制器108。在本實施例中,儲存控制器108為磁碟陣列(RAID)控制器。在其他實施例中,儲存控制器108為儲存元件,例如調度、虛擬化、複製或備份裝置。儲存控制器108透過儲存元件匯流排120將資料至儲存子系統124內的兩個儲存元件116a、116b,或者透過儲存元件匯流排120接收來自兩個儲存元件116a、116b的資料。儲存元件匯流排120可為任何合適的儲存匯流排或匯流排組,其包含但不僅限於SCSI,Fiber Channel,SAS,SATA,or SSA,以便於儲存控制器108與儲存元件116之間直接傳送資料。
在本實施例中,儲存子系統124包含十二個儲存元件116。在其他實施例中,儲存子系統124可包含少於或多於十二個儲存元件116。儲存元件116包含多種類的儲存元件,其包含硬碟驅動機、固態驅動機、光學驅動機、以及磁帶驅動機。在指定的儲存元件種類的範圍內,有數個儲存元件116的子類依據效能進行配置,例如硬碟驅動機依據快取空間、驅動頻率(例如5400,7200,10000,以及1500RPM)、序列深度、隨機傳送率、或循序的傳送率。
第1b圖繪示本發明第二實施例的非主機為基型的資料儲存系統128的方塊圖。本實施例的資料儲存系統128與第一實施例的資料儲存系統100相似,差別在於儲存子系統132與儲存元件116設於儲存控制器108內。如第1b圖所示,儲存控制器108為一個RAID控制器。然而在其他實施例中,儲存控制器108可為多個RAID控制器。
第1c圖繪示本發明第三實施例的非主機為基礎型的資料儲存系統136的方塊圖。本實施例的資料儲存系統136與第一及第二實施例的資料儲存系統100、128相似,差別在於儲存控制器108包含有兩個冗餘儲存控制器108a、108b。在本實施例中,當冗餘儲存控制器108a、108b其中一個發生失效狀況時,由於冗餘儲存控制器108a、108b利用有效-有效(active-active)失效切換功能,使得儲存元件116可被主機104持續地使用。內部控制器通訊連結140為冗餘儲存控制器108a、108b之間的通訊及資料傳遞路徑,以便反映寫入資料以及同步失效切換以及自動恢復的操作。
第2a圖繪示本發明第一實施例的主機型的資料儲存系統200的方塊圖。本實施例的資料儲存系統200相似於第1a圖的資料儲存系統100,差別在於儲存控制器108設於主機電腦104內。儲存控制器108連接主機電腦104的區域匯流排,其包含Rapid IO,PCI,PCI-X,或PCI Express。儲存控制器108可整合於主機電腦104的主機板,或者為附加的板體或其他形式與主機電腦104相組接。
第2b圖繪示本發明第二實施例的主機式的資料儲存系統204的方塊圖。資料儲存系統204將儲存子系統124的功能整合於主機電腦104中。資料儲存系統204為高度自給式整合資料系統。
第2c圖繪示本發明第三實施例的主機式的資料儲存系統208的方塊圖。本實施例的資料儲存系統208與資料儲存系統200相似,但是將儲存控制器108改由軟體方式取代。主機電腦104與儲存元件匯流排120之間透過主機匯流排配接器212來連接,藉此提供適當的資料與命令緩衝功能,就如同協定控制以及低階錯誤操作一樣。中央處理器216執行記憶體220內的應用程式240以便控制記憶體220與儲存子系統124內的儲存元件116a、116b之間的資料流通。
第3圖繪示本發明一實施例的資料儲存系統300的方塊圖。資料儲存系統300包含一個或多個主機電腦104,而主機電腦104透過匯流排112(或網路)與儲存控制器108連接。主機電腦104產生主機串流,而主機串流為主機輸入/輸出請求332的數個群組。
儲存控制器108包含一中央處理器312(或處理器),其執行儲存於記憶體316內的程式指令,而記憶體316與中央處理器312耦接。中央處理器312包含任何適用於執行儲存控制器108的程式的任何處理裝置,例如微軟x-86相容處理器、嵌入式處理器、行動處理器、且/或RSIC處理器。中央處理312可包含數個裝置,其包含現場可編輯邏輯閘陣列(FPGAs)、記憶體控制器、北橋裝置、且或南橋裝置。
記憶體316可為揮發性記憶體、非揮發性記憶體、或揮發性與非揮發性記憶體的一種或多種組合。記憶體316包含韌體,其包含中央處理器312取得與執行的程式指令。非揮發性記憶體包含但不限制為快閃記憶體、SD、EPROM、EEPROM、硬碟、及NOVRAM。揮發性記憶體儲存數個資料結構以及使用者資料。揮發性記憶體包含但不限制為SRAM、DDR RAM、DDR2 RAM、DDR3 RAM、Z-RAM、TTRAM、A-RAM、ETA RAM、及其他形式的暫存記憶體。
記憶體316包含讀取資料快取記憶體(read data cache)324。在其他實施例中,記憶體316還可包含一寫入資料快取記憶體328,讀取資料快取記憶體324以及寫入資料快取記憶體328分別改善了對於主機電腦104的讀取與寫入效能。記憶體316也包含資料流大資料320。資料流大資料320儲存與主機輸入/輸出請求332相關的參數,且用於控制序列輸入輸出操作。
儲存控制器108與儲存子系統124、132相耦接,儲存子系統124、132包含一個或數個虛擬磁碟348a-348n。每一個虛擬磁碟348是一個不同的磁碟陣列區域,且包括一個或多個儲存元件116。常用的資料會自虛擬磁碟348中讀取進入讀取資料快取記憶體324,其可以相較於直接自虛擬磁碟348更快速地提供以響應主機讀取請求332。寫入資料係初始地儲存於寫入資料快取記憶體328,其可以相較於直接送至虛擬磁碟348更快速地 處理。寫入資料快取記憶體328被分割成一預設數目的固定大小快取元素352,在圖中標示為CE 0 352a-CE n 352n。儲存控制器108自寫入資料快取記憶體328移轉儲存元件寫入344,更特定的是自快取元素352,至虛擬磁碟348。
在其他實施例中,儲存控制器108包含數個計時器340。計時器340可為中央處理器312控制的硬體,或者為中央處理器312內執行的軟體。計時器340量測主機寫入需求中斷時間908,其詳細內容將隨後討論。計時器340的數量並未受限,在本發明中,全域僅配置有一個計時器340給所有的主機輸入輸出請求332。
可以理解的,儲存控制器108可配置於數種不同的功能組織與架構,前提在不超出本發明圖式與說明書的範圍。
請參閱第4a圖,顯示根據本發明實施例之一單一儲存元件條紋區域400的方塊示意圖。
一單一儲存元件116可以是一條紋區域400。儲存元件116可以是硬碟驅動機、固態驅動機、光學驅動機、磁帶驅動機以及其他型態的巨量資料儲存元件。條紋區域400是一邏輯區域包含兩個或更多大小相等的條紋。在一儲存元件116上的一條紋區域之一部分是一區塊。
第4a圖顯示一具有四個條紋的條紋區域400,包括:條紋N 404、條紋N+1 408、條紋N+2 412和條紋N+3 416。條紋N 404具有一區塊A 420、條紋N+1 408具有一區塊B 424、條紋N+2 412具有一區塊C 428及條紋N+3 416具有一區塊D 432。雖然第4a圖僅顯示一單一儲存元件條紋區域400,其具有四個條紋404、408、412和416,以及四個區塊420、424、428和432,但也可以理解為一單一儲存元件條紋區域400可以具有較四個條紋/區塊數目更多或是更少的條紋/區塊。此外,一單一儲存元件條紋區域400可以僅占據一單一儲存元件116中可用資料儲存空間的一部分,且可以具有其他的單一儲存元件條紋區域400於此相同的單一儲存元件116之中。當此單一儲存元件116為一虛擬磁碟348時,此虛擬磁碟條紋大小即為區塊420、424、428或432的大小。
請參閱第4b圖,顯示根據本發明一實施例之一多重儲存元 件條紋區域434的方塊示意圖。
多重儲存元件116或是多重儲存元件116的一部份可以是一條紋區域434。第4b圖顯示一條紋區域434橫跨三個儲存元件116a、116b和116c。此條紋區域434具有四個條紋,包括:條紋M 436、條紋M+1 440、條紋M+2 444和條紋M+3 448。條紋M 436具有三區塊E 452、F 456和G 460。條紋M+1 440具有三區塊H 464、I 468和J 472。條紋M+2 444具有三區塊K 476、L 480和M 484。條紋M+3 448具有三區塊N 488、O 492和P 496。雖然第4b圖僅顯示一多重儲存元件條紋區域434,其具有四個條紋436、440、444和448,以及三個儲存元件116a、116b和116c,但也可以理解為一多重儲存元件條紋區域434可以具有較四個條紋/三個儲存元件116數目更多或是更少的條紋/儲存元件。在此說明書中,"一條紋區域400、434"可以是一單一儲存元件條紋區域400或是一多重儲存元件條紋區域434。此外,一多重儲存元件條紋區域434可以僅占據一組儲存元件116中可用資料儲存空間的一部分,且可以具有其他的多重儲存元件條紋區域434於此相同的一組儲存元件116之中。當此多重儲存元件116為一虛擬磁碟348時,此虛擬磁碟條紋大小即為一條紋中區塊的組合大小:即第4b圖中三個儲存元件116內的區塊452+456+460、464+468+472、476+480+484或488+492+496的大小。
請參閱第5圖,顯示根據本發明一實施例之一寫入資料快取記憶體328的資料流程之方塊示意圖。寫入資料快取記憶體328是儲存控制器108的記憶體316之一部分。寫入資料快取記憶體328經由主機匯流排或是網路112自主機電腦104接收主機輸入輸出寫入請求332,且將此寫入資料作為髒資料儲存於寫入資料快取記憶體328之中。所謂髒資料是來自主機輸入輸出寫入請求332而儲存於寫入資料快取記憶體328的寫入資料,其尚未被寫入儲存元件116內。主機資料寫入儲存於此快取記憶體髒部分508之中,等待移轉儲存元件寫入344自快取記憶體髒部分508至條紋區域400、434的條件。儲存元件寫入344可以是部分條紋寫入或是完全條紋寫入。寫入資料快取記憶體328未被髒資料占據的部分是此寫入資料快取記憶體328的空白部分,且可以用於自主機輸入輸出寫入請求332接收資料。
一個髒水標512是由儲存控制器108所控制以維持紀錄此寫 入資料快取記憶體328中的髒資料數目。當更多的髒資料508累積在此寫入資料快取記憶體328中,髒水標512會對應地增加,且髒資料508被釋放至儲存元件116後,此髒水標512也會對應地降低。
此寫入資料快取記憶體328也可以包括一最高髒水標百分比516或是髒水標最大值,其是一個事先決定的值表示髒水標在特定時間的相對值以決定一快取元素352是否應該自此寫入資料快取記憶體328釋放至一虛擬磁碟348中。
當接收主機輸入輸出寫入請求332,且寫入至寫入資料快取記憶體328後,快取記憶體的髒部份508會對應地擴展,只要在此寫入資料快取記憶體328之中具有足夠的空間來儲存這些新的寫入資料。當快取記憶體的髒部份508擴展時,快取記憶體的空部份504會縮減。類似地,當儲存元件寫入344自快取記憶體328移轉資料至虛擬磁碟348時,快取記憶體的髒部份508會縮減且快取記憶體的空部份504會對應地擴展。
請參閱第6圖,顯示根據本發明一實施例之一3+1磁碟陣列(RAID)5條紋區域434的一範例資料容器600之示意圖。此3+1磁碟陣列(RAID)5條紋區域434包括四個儲存元件116,其在圖中標示為儲存元件116a、儲存元件116b儲存元件116c和儲存元件116d。此範例條紋區域具有14個條紋604,標示為條紋0到條紋13。必須理解的是一條紋區域434可以視磁碟陣列、條紋區域大小或是其他的限制條件而具有任何數目的儲存元件116或是條紋604。
此條紋604安排至一單一儲存元件116的部份是一區塊。在第6圖的範例中,每一個區塊被分割成八個相同大小的快取元素(CEs)352。然而,在其他的實施例中,每一個區塊可以具有較八個更多或更少數目的快取元素(CEs)352。在較佳實施例中,每一個快取元素(CEs)352是16K位元組。在其他的實施例中,每一個快取元素(CEs)352是較16K位元組更大或更小。每一個快取元素(CEs)352可以具有空616、髒620或是正確624的狀態。只有髒快取元素620包含新的寫入資料。正確快取元素624包含先前已寫入至儲存元件116的寫入資料。0063在第6圖的範例中,條紋區域434根據磁碟陣列5技術被映射,其中一同位區塊根據條紋604在每一個儲存元 件116間旋轉。在一實施例中,同位區塊608a被分配至儲存元件116d的條紋0、同位區塊608b被分配至儲存元件116c的條紋1,其餘類推。
資料容器612是在接收到新寫入資料時分配在條紋604的資料結構,且不會超越條紋604的邊界。資料容器612包括未知、部分或是滿三者之一的狀態808。當資料容器612被初始產生時,此資料容器612具有未知的狀態808。當新寫入資料與資料容器612相關時,且仍具有一個或多個空快取元素(CEs)616,此資料容器612具有部分的狀態808。當新寫入資料與資料容器612相關時,且此資料容器612中的所有快取元素(CEs)352皆是髒快取元素620或是正確快取元素624時,此資料容器612具有滿的狀態808。在較佳實施例中,資料容器612被依序分配。然而,在其他實施例中,資料容器612可以以任何順序被分配只要沒有兩個條紋604具有相同的資料容器612編號即可。
條紋3是第6圖的條紋區域434中第一個即將接收寫入資料的條紋604,且因此是資料容器0。因為條紋3中所有的快取元素(CEs)352皆是髒快取元素620,資料容器0具有滿的狀態808。
條紋9是第6圖的條紋區域434中第二個即將接收寫入資料的條紋604,且因此是資料容器1。因為條紋9中所有的快取元素(CEs)352並非皆是髒快取元素620或是正確快取元素624,資料容器1具有部分的狀態808。
條紋0是第6圖的條紋區域434中第三個即將接收寫入資料的條紋604,且因此是資料容器2。因為條紋0中所有的快取元素(CEs)352並非皆是髒快取元素620或是正確快取元素624,資料容器2具有部分的狀態808。
條紋5是第6圖的條紋區域434中第四個即將接收寫入資料的條紋604,且因此是資料容器3。因為條紋5中所有的快取元素(CEs)352並非皆是髒快取元素620或是正確快取元素624,資料容器3具有部分的狀態808。
條紋13是第6圖的條紋區域434中第五個即將接收寫入資料的條紋604,且因此是資料容器4。因為條紋13中所有的快取元素(CEs)352 並非皆是髒快取元素620或是正確快取元素624,資料容器4具有部分的狀態808。
條紋10是第6圖的條紋區域434中第六個即將接收寫入資料的條紋604,且因此是資料容器5。因為條紋10中所有的快取元素(CEs)352並非皆是髒快取元素620或是正確快取元素624,資料容器5具有部分的狀態808。
條紋4是第6圖的條紋區域434中第七個即將接收寫入資料的條紋604,且因此是資料容器6。因為條紋4中所有的快取元素(CEs)352並非皆是髒快取元素620或是正確快取元素624,資料容器6具有部分的狀態808。
條紋12是第6圖的條紋區域434中第八個即將接收寫入資料的條紋604,且因此是資料容器7。因為條紋12中所有的快取元素(CEs)352皆是髒快取元素620或是正確快取元素624,資料容器7具有滿的狀態808。
條紋6是第6圖的條紋區域434中第九個即將接收寫入資料的條紋604,且因此是資料容器8。因為條紋6中所有的快取元素(CEs)352皆是髒快取元素620或是正確快取元素624,資料容器8具有滿的狀態808。
條紋11是第6圖的條紋區域434中第十個即將接收寫入資料的條紋604,且因此是資料容器9。因為條紋11中所有的快取元素(CEs)352並非皆是髒快取元素620或是正確快取元素624,資料容器9具有部分的狀態808。
因為寫入資料快取記憶體328中只有10個條紋604具有髒快取元素620或是正確快取元素624,因此僅有10個資料容器612被分配。
請參閱第7a圖,顯示根據本發明一實施例之一計算滿條紋寫入百分比724的流程圖。此計算滿條紋寫入百分比724的流程在本發明實施例中的不同節點中被調用以決定當一快取元素352應該自此寫入資料快取記憶體328釋放。此流程自方塊704開始。
在方塊704,對每一個虛擬磁碟348而言此儲存控制器108自資料流大資料320獲得屬於部分條紋712及滿條紋716中的髒或是正確快取元素的計數。流程繼續至方塊708。
在方塊708,對每一個虛擬磁碟348而言此儲存控制器108藉由每一虛擬磁碟720中髒或是正確快取元素的總合除以屬於部分條紋712及滿條紋716中的髒或是正確快取元素的計數,且將結果乘上100。每一虛擬磁碟720中髒或是正確快取元素的計數是和屬於部分條紋712及滿條紋716中的髒或是正確快取元素與屬於滿條紋716及滿條紋716中的髒或是正確快取元素的總和相等。且流程於方塊708結束。
請參閱第7b圖,顯示根據本發明一實施例之一範例計算滿條紋寫入百分比724。此儲存控制器108計算滿條紋寫入百分比724在本發明實施例流程中的不同節點;特別是,在第13圖中的方塊1308及第14圖中的方塊1420。此範例在以下係使用第7a圖中的流程步驟描述。
此儲存控制器108對此寫入資料快取記憶體328中的所有快取元素352維持資料流大資料320中的快取元素統計值。更特定的是,此儲存控制器108維持每一虛擬磁碟屬於部分條紋712中的髒或是正確快取元素的一目前計數,及每一虛擬磁碟屬於滿條紋716中的髒或是正確快取元素的一目前計數。因此,由此儲存控制器108所管理的每一虛擬磁碟348皆具有一個屬於部分條紋712中的髒或是正確快取元素的一目前計數,及每一虛擬磁碟屬於滿條紋716中的髒或是正確快取元素的一目前計數之獨一無二的值。
此儲存控制器108亦對此資料流大資料320中的每一虛擬磁碟720維持全髒或正確之快取元素352的一目前計數。每一虛擬磁碟720之全髒或正確之快取元素352的一目前計數是與每一虛擬磁碟716屬於部分條紋712中的髒或是正確快取元素的一目前計數,及每一虛擬磁碟屬於滿條紋716中的髒或是正確快取元素的一目前計數之總和相等。
在某些實施例中的儲存控制器108對資料流大資料320中的每一虛擬磁碟724維持滿條紋寫入百分比。在另一些實施例中,此儲存控制器108係在需要時才對資料流大資料320中的每一虛擬磁碟724計算其滿條紋寫入百分比,且並未特別儲存資料流大資料320中的每一虛擬磁碟724之滿條紋寫入百分比。在目前的範例中,對一給定虛擬磁碟348屬於部分條紋712中的髒或是正確快取元素有25個而屬於滿條紋716中的髒或是正 確快取元素則有50個。此儲存控制器108藉由將屬於部分條紋712中的25個髒或是正確快取元素加上屬於滿條紋716中的50個髒或是正確快取元素而對一給定虛擬磁碟720計算其髒或正確之快取元素的一目前計數。因此,對一給定虛擬磁碟348而言其一共有75個髒或是正確快取元素。
之後,此儲存控制器108藉由將一給定虛擬磁碟720中屬於滿條紋716中的髒或是正確快取元素之目前計數除上整個虛擬磁碟中的個髒或是正確快取元素之目前計數來計算此給定虛擬磁碟348中的滿條紋寫入百分比724。因此50除以75是0.667,且當乘以100之後,此給定虛擬磁碟中的滿條紋寫入百分比724是67%。
請參閱第8圖,顯示根據本發明實施例之一寫入資料流大資料320之參數示意圖。本發明之儲存控制器108分成三個階層管理大資料320:在快取元素352階層、在資料容器612階層、及在一釋出串流物件828階層。
在快取元素352階層,此儲存控制器108對每一條紋604維持其大資料。特別是,此儲存控制器108根據每一快取元素352是否存在於此條紋604中來辨別每一條紋812中的快取元素。在此說明書中"存在"的意思是一快取元素253具有髒620或是正確624狀態。此外,對每一條紋812中的快取元素而言,此儲存控制器108辨別每一條紋812中的快取元素352是否為髒快取元素(即一快取元素具有髒620狀態)。因為每一條紋604中髒快取元素的數目不可能超過整體快取元素的數目,每一條紋816中髒快取元素的數目總是等於或小於每一條紋812中整體快取元素的數目。此儲存控制器108亦維持辨別一特定快取元素352的一目前快取元素指針820。
在資料容器612階層,此儲存控制器108將相關的快取元素352與特定資料容器612對應。此儲存控制器108也對每一資料容器612維持資料流大資料320,其包括資料容器狀態808。資料容器狀態808辨別每一個資料容器612是滿的或是部分滿的。必須注意的是資料容器612僅在當一給定條紋604的至少一個快取元素352是髒620或是正確624的情況下才會建立,而且資料容器612在假如一區塊中的每一個快取元素352具有空616狀態的情況下並不會建立。因為此目前快取元素指針820辨別一特定快 取元素352,其也辨別一特定資料容器612。舉例而言,此目前快取元素指針820辨別目前資料容器824是資料容器C。
在釋出串流物件828階層,此儲存控制器108辨別滿資料容器612。滿資料容器612是一給定條紋604中的每一個快取元素352皆是髒620或是正確624的資料容器612。若是一給定條紋604中的至少一個快取元素352是空616或是找不到的話,其對應的資料容器612就不是滿的。此儲存控制器108另外會將釋出串流物件828合併成更大的釋出串流物件828假如這些釋出串流物件828在邏輯區塊位址(LBA)中是直接鄰接的話。第8圖顯示資料容器612"E"、"F"、和"G"是滿的資料容器612,每一個具有五個髒快取元素352。因此,此儲存控制器108將"E"、"F"、和"G"合併成一個具有15個快取元素352的大釋出串流物件836。一旦滿資料容器612於此釋出串流內,此儲存控制器108辨別出一最小的釋出串流物件832及一最大的釋出串流物件836兩者。在第8圖的範例實施例中,最小的釋出串流物件832具有五個快取元素352而資料容器612"E"、"F"、和"G"是一具有十五個快取元素352之最大的釋出串流物件836。
此儲存控制器108此外也會為每一個虛擬磁碟348維持一釋出串流梯度840於此資料流大資料320中。此釋出串流梯度840是介於最大釋出串流物件836與最小釋出串流物件832兩者間的差值,其中最大釋出串流物件836包括合併釋出串流物件828。因此,在第8圖的範例實施例中,此釋出串流梯度840相當於15-5或是10個快取元素352。
此儲存控制器108自較低邏輯區塊位址至較高邏輯區塊位址依序管理條紋604、快取元素352、資料容器612和釋出串流物件828。此外,必須需注意的是此儲存控制器108係對每一個虛擬磁碟348獨立地管理第8圖中的大資料。
請參閱第9a圖,顯示根據本發明實施例之一資料流整體大資料320a的示意圖。整體大資料320a是用來橫跨由此儲存控制器108所控制的所有虛擬磁碟348和儲存元件116的大資料。
資料流整體大資料320a包括一髒水標百分比512及一最大髒水標百分比516。此髒水標百分比512及最大髒水標百分比516會搭配第 5圖做更詳細的描述。
資料流整體大資料320a包括一滿條紋寫入親和力值904。此滿條紋寫入親和力值904是此儲存控制器108僅會操作用來自寫入資料快取記憶體328發出滿條紋寫入的臨界值。此值最佳係利用經驗測試來決定,且會依賴主機資料寫入332參考的區域化和頻率、此寫入資料快取記憶體328以及自此寫入資料快取記憶體328釋出部分或滿條紋808所需的時間。在較佳實施例中,此滿條紋寫入親和力值904是50%。在另一實施例中,此滿條紋寫入親和力值904是60%。然而,在其他的實施例中,此滿條紋寫入親和力值904可以是與50%或是60%不同的值。
資料流整體大資料320a也包括一主機寫入需求中斷時間908。此主機寫入需求中斷時間908是一事先決定的時間區間其用來作為決定當一快取元素352是否應該自此寫入資料快取記憶體328釋出的條件之一。以下會搭配第11圖做更詳細的描述。
資料流整體大資料320a還包括一有效有效釋出計數最大值912,其是對所有虛擬磁碟348而言能夠自此寫入資料快取記憶體328釋出的最大釋出串流物件928的數目。
最後,資料流整體大資料320a還包括一釋出串流梯度臨界值916,其是一個事先決定的值與釋出串流梯度840比較以決定除了由目前快取元素指針820辨別的目前快取元素352之外的哪一個快取元素352是可以自寫入資料快取記憶體328釋出的最佳快取元素352。此釋出串流梯度臨界值916會搭配第14圖做更詳細的描述。
請參閱第9b圖,顯示根據本發明實施例之一資料流虛擬磁碟大資料320b的示意圖。資料流虛擬磁碟大資料320b是由此儲存控制器108對其所控制的每一個虛擬磁碟348獨立地管理。因此,此儲存控制器108對一第一虛擬磁碟348a管理資料流虛擬磁碟大資料320b是與其所控制之一第二虛擬磁碟348b或是其他虛擬磁碟348n管理的資料流虛擬磁碟大資料320b無關的。
請參閱第10圖,顯示根據本發明實施例之一資料流大資料320初始過程的流程圖。大資料320於儲存控制器108開機時及其他特定指 定的時間進行初始化。流程自方塊1004開始。
在方塊1004,此儲存控制器108初始化所有的每一-虛擬磁碟大資料320b參數。此每一-虛擬磁碟大資料320b參數會搭配第9b圖做更詳細的描述。流程前進至方塊1008。
在方塊1008,此儲存控制器108初始化所有的快取元素352和資料容器612。假如還沒有資料容器612已經被建立的話,則也還不會存在快取元素352和資料容器612。假如快取元素352和資料容器612在開機循環事件之前已經存在的話,此儲存控制器108恢復兩者於即將開機循環之前的狀態。流程在方塊1008結束。
請參閱第11圖,顯示根據本發明實施例之一串流釋放初始過程的流程圖。流程自方塊1104、1116或決定方塊1120開始。
在方塊1104,此儲存控制器108完成將一個或多個條紋604自寫入資料快取記憶體328釋放至一虛擬磁碟348。流程前進至方塊1108。
在方塊1108,此儲存控制器108將對應虛擬磁碟348的有效釋出計數減少。流程前進至決定方塊1112。
在決定方塊1112,此儲存控制器108決定此對應虛擬磁碟348的有效釋出計數值920是否小於一有效釋出計數最大值912。假如此對應虛擬磁碟348的有效釋出計數值920是小於一有效釋出計數最大值912的話,則流程前進至第12圖中的決定方塊1204。假如此對應虛擬磁碟348的有效釋出計數值920不小於一有效釋出計數最大值912的話,則流程結束。
在方塊1116,此儲存控制器108決定已完成一主機輸入輸出寫入請求332。因此,對應此主機輸入輸出寫入請求332的資料已被寫入一虛擬磁碟348中。流程前進至決定方塊1112。
在決定方塊1120,此儲存控制器108決定一主機輸入輸出寫入請求332是否在超過一主機寫入需求中斷時間908內接收到。假如一主機輸入輸出寫入請求332是在超過一主機寫入需求中斷時間908接收到,則此流程前進至決定方塊1112。假如一主機輸入輸出寫入請求332是在小於一主機寫入需求中斷時間908接收到,則此流程結束。
請參閱第12圖,顯示根據本發明實施例之一主要流程的流 程圖。所示的流程是接續自第11圖中的決定方塊1112。流程自決定方塊1204開始。
在決定方塊1204,此儲存控制器108決定一髒水標百分比512是否在大於一髒水標百分比最大值516。假如此髒水標百分比512大於此水標百分比最大值516,則此流程前進至決定方塊1208。假如此髒水標百分比512不大於此水標百分比最大值516,則此流程結束。
在決定方塊1208,此儲存控制器108決定目前快取元素352是否足以釋出。此目前特定快取元素352是由一目前快取元素指針820辨別。決定方塊1208會在第13圖的流程圖中做更詳細的描述。假如目前快取元素352足以釋出,則此流程前進至決定方塊1216。假如此目前快取元素352不足以釋出,則此流程前進至方塊1212。
在方塊1212,此儲存控制器108辨別一較佳的快取元素352可以自寫入資料快取記憶體328釋出。方塊1212會在第14圖的流程圖中做更詳細的描述。流程前進至決定方塊1216。
在決定方塊1216,此儲存控制器108決定目前資料容器824是否是滿的。此目前資料容器824是包括由目前快取元素指針820所辨別之快取元素352的資料容器612。假如資料容器612中的所有快取元素352皆在寫入資料快取記憶體328內,則資料容器612是滿的,且每一個快取元素352具有髒620或是正確624的狀態。假如目前資料容器824是滿的,則此流程前進至方塊1220。假如目前資料容器824不是滿的,則此流程前進至方塊1224和1228。
在方塊1220,此儲存控制器108將此滿的和目前資料容器824自釋出串流828移出。此流程前進至方塊1224和1228。
在方塊1224,此儲存控制器108將此目前資料容器824釋出至對應的虛擬磁碟348且將此對應虛擬磁碟348的實際釋出計數920增加。此流程前進至方塊1232。
在方塊1228,此儲存控制器108將此目前資料容器824自此虛擬磁碟大資料320b的資料容器612清單中移除。此流程前進至方塊1232。
在方塊1232,此儲存控制器108藉由邏輯區塊位址(LBA)辨 別下一個髒快取元素620。目前快取元素指針820被更新以反映被辨別之下一個髒快取元素620,且此目前資料容器824可以是與先前的資料容器612不同的。此流程前進至決定方塊1236。
在決定方塊1236,此儲存控制器108決定對應虛擬磁碟348的實際釋出計數920是否小於一實際釋出計數最大值912。假如此對應虛擬磁碟348的實際釋出計數920小於實際釋出計數最大值912的話,則此流程前進至第12圖中的決定方塊1204以嘗試釋出下一個快取元素352。假如此對應虛擬磁碟348的實際釋出計數920不小於實際釋出計數最大值912的話,則此流程結束。
請參閱第13圖,顯示根據本發明實施例之一決定此目前快取元素352是否能有效率地釋出之主要流程的流程圖。在第13圖中所示的流程是對應第12圖中的決定方塊1208。流程自決定方塊1304開始。
在決定方塊1304,此儲存控制器108決定資料容器824是否是滿的。此目前資料容器824是包括由目前快取元素指針820所辨別之快取元素352的資料容器612。假如資料容器612中的所有快取元素352皆在寫入資料快取記憶體328內,則資料容器612是滿的,且每一個快取元素352具有髒620或是正確624的狀態。假如目前資料容器824是滿的,則此流程前進至方塊1316。假如目前資料容器824不是滿的,則此流程前進至決定方塊1308。
在決定方塊1308,此儲存控制器108決定此對應虛擬磁碟348的條紋寫入百分比724是否大於一滿條紋寫入親和力值904。在另一實施例中,此儲存控制器108決定此對應虛擬磁碟348的條紋寫入百分比724是否大於或等於一滿條紋寫入親和力值904。此滿條紋寫入親和力值904是此儲存控制器108僅會操作用來自寫入資料快取記憶體328發出滿條紋寫入的臨界值。此值最佳係利用經驗測試來決定,且會依賴主機資料寫入332參考的區域化和頻率、此寫入資料快取記憶體328以及自此寫入資料快取記憶體328釋出部分或滿條紋808所需的時間。在較佳實施例中,此滿條紋寫入親和力值904是50%。在另一實施例中,此滿條紋寫入親和力值904是60%。然而,在其他的實施例中,此滿條紋寫入親和力值904可以是與 50%或是60%不同的值。假如此對應虛擬磁碟348的條紋寫入百分比724是大於或等於一滿條紋寫入親和力值904的話,則此流程前進至方塊1312。假如此對應虛擬磁碟348的條紋寫入百分比724不大於一滿條紋寫入親和力值904的話,則此流程前進至方塊1316。
在方塊1312,此儲存控制器108辨別目前快取元素352不足以釋出。此目前特定快取元素352是由一目前快取元素指針820辨別。此流程於方塊1312結束,因此控制回到第12圖中的方塊1212。
在方塊1316,此儲存控制器108辨別目前快取元素352足以釋出。此流程於方塊1316結束,因此控制回到第12圖中的方塊1216。
請參閱第14圖,顯示根據本發明實施例之一辨別一較佳快取元素352可以被釋出之主要流程的流程圖。在第14圖中所示的流程是對應第12圖中的方塊1212。流程自方塊1404開始。
在方塊1404,此儲存控制器108決定此釋出串流梯度840。此釋出串流梯度840是介於最大釋出串流物件836與最小釋出串流物件832兩者間的差值。此決定此釋出串流梯度840的流程會搭配第15圖做更詳細的描述。流程前進至方塊1408。
在方塊1408,此儲存控制器108決定此釋出串流梯度840是否大於一釋出串流梯度臨界值916。假如此釋出串流梯度840大於此釋出串流梯度臨界值916的話,則流程前進至方塊1412。假如此釋出串流梯度840不大於此釋出串流梯度臨界值916的話,則流程前進至決定方塊1420。
在方塊1408,此儲存控制器108辨別最大的釋出串流物件836。此最大釋出串流物件836是包含最多數目快取元素352的釋出串流物件828。在第8圖的範例中,此最大的釋出串流物件836具有15個快取元素352。流程前進至方塊1416。
在方塊1416,此儲存控制器108辨別在最大的釋出串流物件836中具有最小邏輯區塊位址(LBA)的快取元素352為釋出的較佳快取元素352。在第8圖的範例中,此較佳快取元素352則會是最大的釋出串流物件836中最左邊的快取元素352,即資料容器E 612中的最左邊快取元素。流程在方塊1416結束,控制回到第12圖中的方塊1216。
在決定方塊1420,此儲存控制器108決定此對應虛擬磁碟348的條紋寫入百分比724是否大於一滿條紋寫入親和力值904。在另一實施例中,此儲存控制器108決定此對應虛擬磁碟348的條紋寫入百分比724是否大於或等於一滿條紋寫入親和力值904。此滿條紋寫入親和力值904是此儲存控制器108僅會操作用來自寫入資料快取記憶體328發出滿條紋寫入的臨界值。此值最佳係利用經驗測試來決定,且會依賴主機資料寫入332參考的區域化和頻率、此寫入資料快取記憶體328以及自此寫入資料快取記憶體328釋出部分或滿條紋808所需的時間。在較佳實施例中,此滿條紋寫入親和力值904是50%。在另一實施例中,此滿條紋寫入親和力值904是60%。然而,在其他的實施例中,此滿條紋寫入親和力值904可以是與50%或是60%不同的值。假如此對應虛擬磁碟348的條紋寫入百分比724是大於或等於一滿條紋寫入親和力值904的話,則此流程前進至方塊1428。假如此對應虛擬磁碟348的條紋寫入百分比724不大於或等於一滿條紋寫入親和力值904的話,則此流程前進至方塊1424。
在方塊1424,此儲存控制器108辨別目前快取元素352為釋出的較佳快取元素352。此目前快取元素352是由一目前快取元素指針820辨別。此流程於方塊1424結束,因此控制回到第12圖中的方塊1216。
在方塊1428,此儲存控制器108藉由邏輯區塊位址(LBA)辨別下一個滿的資料容器612。此下一個滿的資料容器612是釋出串流828具有下一個最高起始邏輯區塊位址(LBA)的資料容器612。此流程前進至方塊1432。
在方塊1432,此儲存控制器108辨別下一個滿的資料容器612中具有最低邏輯區塊位址(LBA)的快取元素352為釋出的較佳快取元素352。此儲存控制器108改變目前快取元素指針820以指向此下一個滿的資料容器612中具有最低邏輯區塊位址(LBA)的快取元素352。此流程於方塊1432結束,因此控制回到第12圖中的方塊1216。
請參閱第15圖,顯示根據本發明實施例之一決定對應虛擬磁碟348的釋出串流梯度840之主要流程的流程圖。在第15圖中所示的流程是對應第14圖中的方塊1404。流程自方塊1504開始。
在方塊1504,此儲存控制器108辨別此釋出串流828中最大的釋出串流物件836。在第8圖的範例中,此最大的釋出串流物件會是包含15個快取元素352的釋出串流物件828。此流程前進至方塊1508。
在方塊1508,此儲存控制器108辨別此釋出串流828中最小釋出串流物件832。在第8圖的範例中,此最小的釋出串流物件會是包含5個快取元素352的釋出串流物件828。此流程前進至方塊1512。
在方塊1512,此儲存控制器108自最大釋出串流物件836減去最小釋出串流物件832以獲得釋出串流梯度840。在第8圖的範例中,對應虛擬磁碟348的釋出串流梯度840是15-5或是10個快取元素352。流程在方塊1412結束,因此控制回到第14圖中的決定方塊1408。
最後,在不脫離本發明之精神及範圍內,如同以下所述之申請範圍,在該領域中具有通常技藝者應能輕易地應用本發明揭露之概念及特定實施例,以作為設計或修改其它架構之基礎,並用以達成與本發明之目的相同之功用。
1204~1236‧‧‧主要流程步驟

Claims (20)

  1. 一種有效率地自一儲存控制器釋出寫入資料至儲存元件的方法,包含:由該儲存控制器決定一快取元素應該自該儲存控制器的一寫入快取記憶體移轉至該儲存元件,其中該快取元素為該寫入快取記憶體的一固定部分大小;由該儲存控制器計算出一髒水標是在一髒水標最大值之上,其中該髒水標辨別在該寫入快取記憶體中的髒資料數目,其中該髒資料是在該寫入快取記憶體中尚未被寫入該儲存元件內的資料;由該儲存控制器辨別一第一快取元素將自該寫入快取記憶體釋出至該儲存元件;由該儲存控制器將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件;由該儲存控制器將一有效釋出計數增加,其中該有效釋出計數是發至一虛擬磁碟中尚未被完成的主機寫入請求的一目前數目,其中該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組;以及假如該有效釋出計數是小於一有效釋出計數最大值的話,則由該儲存控制器重複該決定、計算、辨別、移轉和增加等動作。
  2. 如申請專利範圍第1項所述之方法,其中假如一釋出串流包含該第一資料容器,該方法更包含:由該儲存控制器將該第一資料容器自該釋出串流中移除,其中該釋出串流及該第一資料容器與該虛擬磁碟對應,其中該釋出串流僅包括滿的資料容器,其中一個滿的資料容器包含在該磁碟陣列群組的一條紋中的所有該快取元素。
  3. 如申請專利範圍第2項所述之方法,其中該釋出串流包括該第一資料容器,其中該儲存控制器連接複數個滿的資料容器以產生該第一資料容器,若是該複數個滿的資料容器中之每一個滿的資料容器具有鄰接邏輯區塊位址的話。
  4. 如申請專利範圍第1項所述之方法,其中由該儲存控制器決定一快取元素應該自該儲存控制器的該寫入快取記憶體移轉至該儲存元件,包含下列步驟之一:由該儲存控制器完成自該寫入快取記憶體釋出一條紋至該儲存元件且將該有效釋出計數減少;由該儲存控制器完成一主機寫入請求,其中完成該主機寫入請求包含寫入對應該主機寫入請求的資料於該儲存元件中;以及由該儲存控制器驗證在一主機輸入輸出請求期限區間內並沒有接收到主機輸入輸出請求,其中主機輸入輸出請求包括主機寫入請求和主機讀取請求;於完成該完成釋出、完成一主機寫入請求或驗證三者之一後:由該儲存控制器進行該決定、計算、辨別、移轉和增加等動作,假如該有效釋出計數是小於一有效釋出計數最大值的話。
  5. 如申請專利範圍第1項所述之方法,其中由該儲存控制器辨別一第一快取元素自該寫入快取記憶體釋出至該儲存元件包含:由該儲存控制器決定該第一資料容器是否是滿的,其中一個滿的資料容器包含一條紋中的所有快取元素,其中一條紋包含具有鄰接邏輯區塊位址的複數個快取元素;假如該第一資料容器不是滿的,則: 由該儲存控制器計算一滿條紋寫入百分比是否小於一滿條紋寫入親和力值;假如該滿條紋寫入百分比不小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一較佳快取元素以供釋出;以及假如該滿條紋寫入百分比是小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一目前快取元素作為該第一快取元素,其中一目前快取元素指針辨別該目前快取元素及該第一資料容器;以及假如該第一資料容器是滿的,則:由該儲存控制器辨別該目前快取元素作為該第一快取元素。
  6. 如申請專利範圍第5項所述之方法,其中該滿條紋寫入百分比是屬於該虛擬磁碟中滿條紋的髒快取元素數目除以該虛擬磁碟中的髒快取元素數目,其中髒快取元素是包含尚未被寫入該儲存元件內資料的快取元素,其中一滿條紋中的所有資料位置由該寫入快取記憶體中的快取元素代表,其中該滿條紋寫入親和力值是辨別該儲存控制器僅會操作用來自該寫入資料快取記憶體發出滿條紋寫入的一臨界值,其中該目前條紋是一滿條紋和一部份條紋兩者之一。
  7. 如申請專利範圍第6項所述之方法,其中由該儲存控制器辨別一較佳快取元素以釋出包含:由該儲存控制器計算一釋出串流梯度;由該儲存控制器決定該釋出串流梯度是否大於一釋出串流梯度臨界值,其中該釋出串流梯度臨界值是該虛擬磁碟條紋大小的倍數; 假如該釋出串流梯度大於該釋出串流梯度臨界值,則:由該儲存控制器辨別一最大釋出串流物件;及由該儲存控制器辨別該最大釋出串流物件中的具有最小邏輯區塊位址的一快取元素是該較佳快取元素以供釋出;假如該釋出串流梯度不大於該釋出串流梯度臨界值,則:由該儲存控制器計算一滿條紋寫入百分比是否小於一滿條紋寫入親和力值;假如該滿條紋寫入百分比不小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一下一個滿資料容器,其中該下一個滿資料容器是與該第一資料容器相較具有第二大尺寸的釋出串流物件;以及由該儲存控制器辨別在該下一個滿資料容器中具有最小邏輯區塊位址的一快取元素是該較佳快取元素以供釋出;以及假如該滿條紋寫入百分比是小於該滿條紋寫入親和力值,則:由該儲存控制器辨別該目前快取元素是該較佳快取元素以供釋出。
  8. 如申請專利範圍第7項所述之方法,其中計算該釋出串流梯度包含:由該儲存控制器辨別該虛擬磁碟中該最大釋出串流物件,其中該釋出串流僅包含滿的資料容器;由該儲存控制器辨別該虛擬磁碟中一最小釋出串流物件;以及由該儲存控制器將該最大釋出串流物件減去該最小釋出串流物件以獲得該釋出串流梯度。
  9. 如申請專利範圍第8項所述之方法,其中由該儲存控制器將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件包含:由該儲存控制器將該第一資料容器自該寫入快取記憶體釋出至該虛擬磁碟;由該儲存控制器將該有效釋出計數增加;以及由該儲存控制器將該資料容器自一資料容器清單中移除,其中該資料容器清單包含一狀態、一髒快取元素計數、及每一有效資料容器的一整體快取元素計數,其中該狀態辨別一資料容器是滿的或是部分滿的。
  10. 一種有效率地釋出寫入資料至儲存元件的儲存控制器,包含:一處理器;以及一記憶體,與該處理器耦接,該記憶體包含:一寫入寫入快取記憶體,包含:複數個快取元素,其中該快取元素為該寫入快取記憶體的一固定部分大小;其中該儲存控制器決定一快取元素應該自該寫入快取記憶體移轉至該儲存元件,計算出一髒水標是在一髒水標最大值之上,辨別一第一快取元素自該寫入快取記憶體釋出至該儲存元件,將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件,將一有效釋出計數增加,以及重複該決定、計算、辨別、移轉和增加等動作,假如該有效釋出計數是小於一有效釋出計數最大值的話,其中該髒水標辨別在該寫入快取記憶體中的髒資料數目,其中該髒資料是在該寫入快取記憶體中尚未被寫入該儲存元件內的資料,其中該有效釋出計數是發至一虛擬磁碟中尚未被完成的主機寫入請求的一目前數目, 其中該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組。
  11. 如申請專利範圍第10項所述之儲存控制器,其中該儲存控制器決定一快取元素應該自該寫入快取記憶體移轉至該儲存元件,包括下列之一:由該儲存控制器完成自該寫入快取記憶體釋出一釋出串流物件至該儲存元件且將該有效釋出計數減少,其中該釋出串流物件是滿的資料容器;由該儲存控制器完成一主機寫入請求,其中完成該主機寫入請求包含寫入對應該主機寫入請求的資料於該儲存元件中;以及由該儲存控制器驗證在超過一主機輸入輸出請求期限區間接收到主機輸入輸出請求;於完成該完成釋出、完成一主機寫入請求或驗證三者之一後:由該儲存控制器進行該決定、計算、辨別、移轉和增加等動作,假如該有效釋出計數是小於一有效釋出計數最大值的話。
  12. 如申請專利範圍第10項所述之儲存控制器,其中該儲存控制器辨別一第一快取元素自該寫入快取記憶體釋出至該儲存元件包含:由該儲存控制器決定該第一資料容器是否是滿的,其中一個滿的資料容器包含一條紋中的所有快取元素,其中一條紋包含具有鄰接邏輯區塊位址的複數個快取元素;假如該第一資料容器不是滿的,則:由該儲存控制器計算一滿條紋寫入百分比是否小於一滿條紋寫入親和力值;假如該滿條紋寫入百分比不小於該滿條紋寫入親和力值,則: 由該儲存控制器辨別一較佳快取元素以供釋出;以及假如該滿條紋寫入百分比是小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一目前快取元素作為該第一快取元素,其中一目前快取元素指針辨別該目前快取元素及該第一資料容器;以及假如該第一資料容器是滿的,則:由該儲存控制器辨別該目前快取元素作為該第一快取元素。
  13. 如申請專利範圍第12項所述之儲存控制器,其中該滿條紋寫入百分比是屬於該虛擬磁碟中滿條紋的髒快取元素數目除以該虛擬磁碟中的髒快取元素數目,其中髒快取元素是包含尚未被寫入該儲存元件內資料的快取元素,其中一滿條紋中的所有資料位置由該寫入快取記憶體中的資料元素代表,其中該滿條紋寫入親和力值是辨別該儲存控制器僅會操作用來自該寫入資料快取記憶體發出滿條紋寫入的一臨界值,其中該目前條紋是一滿條紋和一部份條紋兩者之一。
  14. 如申請專利範圍第13項所述之儲存控制器,其中該儲存控制器辨別一較佳快取元素以釋出包含:由該儲存控制器計算一釋出串流梯度;由該儲存控制器決定該釋出串流梯度是否大於一釋出串流梯度臨界值,其中該釋出串流梯度臨界值是該虛擬磁碟條紋大小的倍數;假如該釋出串流梯度大於該釋出串流梯度臨界值,則:由該儲存控制器辨別一最大釋出串流物件;由該儲存控制器辨別該最大釋出串流物件中具有最小邏輯區塊位址的一快取元素是該較佳快取元素以供釋出; 假如該釋出串流梯度不大於該釋出串流梯度臨界值,則:由該儲存控制器計算一滿條紋寫入百分比是否小於一滿條紋寫入親和力值;假如該滿條紋寫入百分比不小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一下一個滿資料容器,其中該下一個滿資料容器是相較於該第一資料容器具有第二大尺寸的釋出串流物件;以及由該儲存控制器辨別在該下一個滿資料容器中的具有最小邏輯區塊位址的一快取元素是該較佳快取元素以供釋出;以及假如該滿條紋寫入百分比是小於該滿條紋寫入親和力值,則:由該儲存控制器辨別該目前快取元素是該較佳快取元素以供釋出。
  15. 如申請專利範圍第14項所述之儲存控制器,其中該儲存控制器計算該釋出串流梯度包含:由該儲存控制器辨別該虛擬磁碟中該最大釋出串流物件,其中該釋出串流僅包含滿的資料容器;由該儲存控制器辨別該虛擬磁碟中一最小釋出串流物件;以及由該儲存控制器將該最大釋出串流減去該最小釋出串流物件以獲得該釋出串流梯度。
  16. 如申請專利範圍第15項所述之儲存控制器,其中該儲存控制器將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件包含: 由該儲存控制器將該第一資料容器自該寫入快取記憶體釋出至該虛擬磁碟;由該儲存控制器將該有效釋出計數增加;以及由該儲存控制器將該資料容器自一資料容器清單中移除,其中該資料容器清單包含一狀態、一髒快取元素計數、及每一有效資料容器的一快取元素計數,其中該狀態辨別一資料容器是滿的或是部分滿的。
  17. 一種有效率釋出寫入資料至儲存元件的系統,包含:一主機電腦;一儲存控制器,與該主機電腦耦接,包含:一處理器;以及一記憶體,與該處理器耦接,該記憶體包含:一寫入寫入快取記憶體,包含:複數個記憶元素,其中該快取元素為該寫入快取記憶體的一固定部分大小;一虛擬磁碟包括一個或多個儲存元件,與該儲存控制器耦接,其中該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組,其中該主機電腦傳送一寫入請求至該儲存控制器,其中為了響應接收該寫入請求,該儲存控制器儲存該寫入請求所對應的寫入資料至複數個快取元素中,其中該儲存控制器決定一快取元素應該自該寫入快取記憶體移轉至該儲存元件,計算一髒水標是在一髒水標最大值之上,辨別一第一快取元素自該寫入快取記憶體釋出至該儲存元件,將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件,將一有效釋出計數增加,以及重複該決定、計算、辨別、移轉和增加等動作,假如該有效釋出計數是小於一有效釋出計數最大值的話, 其中該髒水標辨別在該寫入快取記憶體中的髒資料數目,其中該髒資料是在該寫入快取記憶體中尚未被寫入該儲存元件內的資料,其中該有效釋出計數是發至一虛擬磁碟中尚未被完成的主機寫入請求的一目前數目,其中該虛擬磁碟是包含一個或多個特定儲存元件的一磁碟陣列群組。
  18. 如申請專利範圍第17項所述之系統,其中該儲存控制器辨別一第一快取元素自該寫入快取記憶體釋出至該儲存元件包含:由該儲存控制器決定該第一資料容器是否是滿的,其中一個滿的資料容器包含一條紋中的所有快取元素,其中一條紋包含具有鄰接邏輯區塊位址的複數個快取元素;假如該第一資料容器不是滿的,則:由該儲存控制器計算一滿條紋寫入百分比是否小於一滿條紋寫入親和力值,其中該滿條紋寫入百分比是屬於該虛擬磁碟中滿條紋的髒快取元素數目除以該虛擬磁碟中的髒快取元素數目,其中髒快取元素是包含尚未被寫入該儲存元件內資料的快取元素,其中一滿條紋中的所有資料位置由該寫入快取記憶體中的快取元素代表,其中該滿條紋寫入親和力值是反映該儲存控制器僅會操作用來自該寫入資料快取記憶體發出滿條紋寫入的一臨界值;假如該滿條紋寫入百分比不小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一較佳快取元素以供釋出;以及假如該滿條紋寫入百分比是小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一目前快取元素作為該第一快取 元素,其中一目前快取元素指針辨別該目前快取元素及該第一資料容器;以及假如該第一資料容器是滿的,則:由該儲存控制器辨別該目前快取元素作為該第一快取元素。
  19. 如申請專利範圍第18項所述之系統,其中該儲存控制器辨別一較佳快取元素以釋出包含:由該儲存控制器計算一釋出串流梯度,其中該儲存控制器計算該釋出串流梯度包含:由該儲存控制器辨別該虛擬磁碟中該最大釋出串流物件,其中該釋出串流僅包含滿的資料容器;由該儲存控制器辨別該虛擬磁碟中一最小釋出串流物件;以及由該儲存控制器將該最大釋出串流物件減去該最小釋出串流物件以獲得該釋出串流梯度;由該儲存控制器決定該釋出串流梯度是否大於一釋出串流梯度臨界值,其中該釋出串流梯度臨界值是該虛擬磁碟條紋大小的倍數;假如該釋出串流梯度大於該釋出串流梯度臨界值,則:由該儲存控制器辨別一最大釋出串流物件;由該儲存控制器辨別該最大釋出串流物件中具有最小邏輯區塊位址的一快取元素是該較佳快取元素以供釋出;假如該釋出串流梯度不大於該釋出串流梯度臨界值,則:由該儲存控制器計算一滿條紋寫入百分比是否小於一滿條紋寫入親和力值;假如該滿條紋寫入百分比不小於該滿條紋寫入親和力值,則:由該儲存控制器辨別一下一個滿資料容器,其中該下一 個滿資料容器是相較於該第一資料容器具有第二大尺寸的釋出串流物件;以及由該儲存控制器辨別在該下一個滿資料容器中的具有最小邏輯區塊位址的一快取元素是該較佳快取元素以供釋出;以及假如該滿條紋寫入百分比是小於該滿條紋寫入親和力值,則:由該儲存控制器辨別該目前快取元素是該較佳快取元素以供釋出。
  20. 如申請專利範圍第17項所述之系統,其中該儲存控制器將包含該第一快取元素的一第一資料容器自該寫入快取記憶體移轉至該儲存元件包含:由該儲存控制器將該第一資料容器自該寫入快取記憶體釋出至該虛擬磁碟;由該儲存控制器將該有效釋出計數增加;以及由該儲存控制器將該資料容器自一資料容器清單中移除,其中該資料容器清單包含一狀態、一髒快取元素計數、及每一有效資料容器的一快取元素計數,其中該狀態辨別一資料容器是滿的或是部分滿的。
TW104124802A 2014-08-21 2015-07-30 有效率釋出序列輸人輸出串流的方法、儲存控制器及系統 TWI544401B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/465,291 US8930619B2 (en) 2012-05-29 2014-08-21 Method and apparatus for efficiently destaging sequential I/O streams

Publications (2)

Publication Number Publication Date
TW201608469A true TW201608469A (zh) 2016-03-01
TWI544401B TWI544401B (zh) 2016-08-01

Family

ID=53483683

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104124802A TWI544401B (zh) 2014-08-21 2015-07-30 有效率釋出序列輸人輸出串流的方法、儲存控制器及系統

Country Status (6)

Country Link
EP (1) EP2988222B1 (zh)
JP (1) JP6154433B2 (zh)
CN (1) CN105389121B (zh)
CA (1) CA2896567A1 (zh)
HK (1) HK1215611A1 (zh)
TW (1) TWI544401B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110275670B (zh) 2018-03-16 2021-02-05 华为技术有限公司 控制存储设备中数据流的方法、装置、存储设备及存储介质
US11055001B2 (en) 2018-05-30 2021-07-06 Seagate Technology Llc Localized data block destaging
KR102541897B1 (ko) * 2018-08-27 2023-06-12 에스케이하이닉스 주식회사 메모리 시스템
US11656792B2 (en) * 2021-06-29 2023-05-23 International Business Machines Corporation Mirroring data in write caches of a controller of a non-volatile memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04114228A (ja) * 1990-09-05 1992-04-15 Nec Corp ディスクキャッシュシステム
US7539815B2 (en) * 2004-12-29 2009-05-26 International Business Machines Corporation Method, system and circuit for managing task queues in a disk device controller
JP4440803B2 (ja) * 2005-03-03 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
JP5026102B2 (ja) * 2007-02-07 2012-09-12 株式会社日立製作所 ストレージ制御装置及びデータ管理方法
JP2012234254A (ja) * 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
US8886880B2 (en) * 2012-05-29 2014-11-11 Dot Hill Systems Corporation Write cache management method and apparatus

Also Published As

Publication number Publication date
CN105389121B (zh) 2019-06-07
HK1215611A1 (zh) 2016-09-02
JP6154433B2 (ja) 2017-06-28
EP2988222B1 (en) 2019-12-11
TWI544401B (zh) 2016-08-01
CA2896567A1 (en) 2016-02-21
JP2016045935A (ja) 2016-04-04
CN105389121A (zh) 2016-03-09
EP2988222A1 (en) 2016-02-24

Similar Documents

Publication Publication Date Title
US8930619B2 (en) Method and apparatus for efficiently destaging sequential I/O streams
US10698818B2 (en) Storage controller caching using symmetric storage class memory devices
US9317436B2 (en) Cache node processing
US8886880B2 (en) Write cache management method and apparatus
US9053038B2 (en) Method and apparatus for efficient read cache operation
US9483404B2 (en) Write admittance policy for a memory cache
US9274713B2 (en) Device driver, method and computer-readable medium for dynamically configuring a storage controller based on RAID type, data alignment with a characteristic of storage elements and queue depth in a cache
TWI570562B (zh) 處理慢速不常用串流的方法、裝置及系統
US10303362B2 (en) Methods for reducing initialization duration and performance impact during configuration of storage drives
US9836223B2 (en) Changing storage volume ownership using cache memory
US20150339058A1 (en) Storage system and control method
JP5853734B2 (ja) 仮想ストレージ装置,制御装置及び制御プログラム
TWI544401B (zh) 有效率釋出序列輸人輸出串流的方法、儲存控制器及系統
US20170220481A1 (en) Raid Data Migration Through Stripe Swapping
US8799573B2 (en) Storage system and its logical unit management method
US20180032433A1 (en) Storage system and data writing control method
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US11055001B2 (en) Localized data block destaging
GB2522742A (en) Nonvolatile storage thresholding for ultra-SSD, SSD, and HDD drive intermix
US20170097887A1 (en) Storage Controller Cache Having Reserved Parity Area
US9830094B2 (en) Dynamic transitioning of protection information in array systems
JP2014182812A (ja) データ記憶装置
US10452306B1 (en) Method and apparatus for asymmetric raid
US11436151B2 (en) Semi-sequential drive I/O performance

Legal Events

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