數據鏡像控制設備和方法
【專利摘要】提供一種數據鏡像控制設備和方法。所述數據鏡像控制設備包括:命令分發(fā)單元,被構造為將第一寫入命令發(fā)送到多個鏡像存儲裝置,第一寫入命令包括用于主機所請求寫入的數據的指令;內存鎖定設置單元,被構造為對存儲在主機存儲器中的數據之中主機所請求寫入的數據設置內存鎖定,并被構造為在具有內存鎖定的數據被寫入到所述多個鏡像存儲裝置之后解除對數據的內存鎖定。
【專利說明】數據鏡像控制設備和方法
[0001]本申請要求于2013年9月27日提交到韓國知識產權局的第10_2013_0115579號韓國專利申請的優(yōu)先權,所述專利申請的公開內容通過引用全部合并于此。
【技術領域】
[0002]本發(fā)明構思的至少一個示例實施例涉及數據鏡像技術。
【背景技術】
[0003]幾十年來,硬盤驅動器(HDD)已經被用作典型存儲裝置。HDD的示例是使用以特定速度旋轉的磁盤的磁頭執(zhí)行讀取/寫入操作的機械裝置??紤]到其容量,HDD可以相對地便宜。然而,由于HDD的讀取/寫入性能取決于磁盤的旋轉速度,因此HDD的讀取/寫入性能(特別是隨機讀取/寫入性能)可比基于半導體的存儲裝置的讀取/寫入性能(特別是隨機讀取/寫入性能)更加受限。另外,HDD可比基于半導體的存儲裝置具有更高的故障率。存儲裝置中的故障是有害的,因為其能夠導致用戶數據的丟失。
[0004]為了克服HDD的受限制的性能和可靠性,已經廣泛地使用了獨立磁盤冗余陣列(RAID)技術。RAID技術通過連接多個HDD裝置形成HDD陣列,并將讀取/寫入操作適當地分布在HDD陣列中。RAID技術根據HDD裝置之間的數據排列策略被分類為多種具體技術,例如,RAID O (條帶化)、RAID I (鏡像)、RAID 5 (具有分布式奇偶校驗的條帶化)、RAID10(鏡像和條帶化)等。具體地講,鏡像技術可包括將相同的數據存儲在兩個或更多個HDD中。因此,即使所述兩個或更多個HDD中的一個HDD發(fā)生故障,也可因為還沒有發(fā)生故障的HDD能夠持續(xù)地提供數據服務而防止數據丟失。
[0005]同時,對固態(tài)驅動器(SSD)的利用正在持續(xù)地增加。SSD與HDD兼容,并可比HDD具有更好的性能和可靠性。與HDD不同,SSD可不具有機械裝置。因此,SSD可比HDD具有更低的故障率。此外,SSD的讀取/寫入性能(具體地講,隨機讀取/寫入性能)可高于HDD的讀取/寫入性能。雖然SSD可在性能和可靠性方面優(yōu)于HDD,但是RAID技術也能夠通過形成SSD陣列而應用于SSD,以實現額外性能提高或者防止由于SSD的故障而導致的數據丟失。
【發(fā)明內容】
[0006]本發(fā)明構思的至少一個示例實施例提供一種數據鏡像控制設備和方法。
[0007]本發(fā)明構思的至少一個示例實施例提供一種數據鏡像控制設備,包括:命令分發(fā)單元,將主機所請求寫入的數據的寫入命令發(fā)送到多個鏡像存儲裝置;內存鎖定設置單元,對存儲在主機存儲器中的數據之中主機所請求寫入的數據設置內存鎖定,并且在具有內存鎖定的數據被寫入到所述多個鏡像存儲裝置之后解除對數據的內存鎖定。
[0008]本發(fā)明構思的至少一個示例實施例提供一種數據鏡像控制設備,包括:快速存儲裝置設置單元,將多個鏡像存儲裝置中的至少一個設置為快速存儲裝置;命令分發(fā)單元,將主機所請求寫入的數據的寫入命令發(fā)送到快速存儲裝置;內存鎖定設置單元,對存儲在主機存儲器中的數據之中主機所請求寫入的數據設置內存鎖定,并且在具有內存鎖定的數據被寫入到所述多個鏡像存儲裝置之后解除對數據的內存鎖定。
[0009]本發(fā)明構思的至少一個示例實施例提供一種數據鏡像控制方法,包括:將主機所請求寫入的數據的寫入命令發(fā)送到多個鏡像存儲裝置;對存儲在主機存儲器中的數據之中主機所請求寫入的數據設置內存鎖定,并且在具有內存鎖定的數據被寫入到所述多個鏡像存儲裝置之后解除對數據的內存鎖定。
[0010]本發(fā)明構思的至少一個示例實施例提供一種數據鏡像控制方法,包括:將多個鏡像存儲裝置中的至少一個設置為快速存儲裝置;將主機所請求寫入的數據的寫入命令發(fā)送到快速存儲裝置;對存儲在主機存儲器中的數據之中主機所請求寫入的數據設置內存鎖定,并且在具有內存鎖定的數據被寫入到所述多個鏡像存儲裝置之后解除對數據的內存鎖定。
[0011]本發(fā)明構思的至少一個示例實施例提供一種數據鏡像控制設備,包括:命令分發(fā)單元,將主機所請求寫入的數據的寫入命令發(fā)送到多個鏡像存儲裝置,并在請求的數據被寫入到所述多個鏡像存儲裝置之一之后,發(fā)送請求的數據的寫入完成消息;修剪命令發(fā)送單元,基于與將請求的數據寫入到所述多個鏡像存儲裝置之一的寫入有關的信息,將修剪命令發(fā)送到未接收到請求的數據的寫入命令的存儲裝置。
[0012]本發(fā)明構思的至少一個示例實施例提供一種數據鏡像控制設備,包括:命令分發(fā)單元,被構造為響應于來自主機的寫入請求將第一寫入命令發(fā)送到多個鏡像存儲裝置,其中,第一寫入命令指示所述多個鏡像存儲裝置存儲請求的數據,請求的數據是在主機存儲的第一數據,寫入請求表示第一數據被寫入到所述多個鏡像存儲裝置中的至少一個存儲裝置的請求;內存鎖定設置單元,被構造為響應于寫入請求對位于主機中的第一數據設置內存鎖定,并被構造為響應于第一數據被寫入到所述多個鏡像存儲裝置,解除對位于主機中的第一數據的內存鎖定。
[0013]命令分發(fā)單元可被構造為在接收到表示所述多個鏡像存儲裝置中的第一鏡像存儲裝置完成第一數據的寫入的寫入完成消息之后,將第二寫入命令發(fā)送到第一鏡像存儲裝置,其中,第一鏡像存儲裝置是所述多個鏡像存儲裝置中的相對于所述多個鏡像存儲裝置中的其余鏡像存儲裝置在最早的時間點完成第一數據的寫入的存儲裝置。
[0014]內存鎖定設置單元可被構造為響應于確定所述多個鏡像存儲裝置中的接收到第一寫入命令且未被禁用的每個裝置已經完成第一數據的寫入,解除對位于主機中的第一數據的內存鎖定。
【專利附圖】
【附圖說明】
[0015]通過參照附圖詳細地描述本發(fā)明構思的示例實施例,本發(fā)明構思的示例實施例的上述和其他特征和優(yōu)點將變得更加清楚。附圖意圖描繪本發(fā)明構思的示例實施例,不應被解釋為限制權利要求的預期范圍。附圖不用被視為按比例繪制,除非明確地指出。
[0016]圖1是示出根據本發(fā)明構思的至少一個示例實施例的數據鏡像存儲系統(tǒng)的配置的示圖。
[0017]圖2是示出根據本發(fā)明構思的至少一個示例實施例的數據鏡像控制設備的配置的示圖。
[0018]圖3A至圖3C是示出在沒有應用內存鎖定的情況下數據丟失的示圖。
[0019]圖4A和圖4B是示出設置內存鎖定和發(fā)送寫入完成消息的處理的示圖。
[0020]圖5A和圖5B是示出在以非阻止方式(non-blocking manner)發(fā)送寫入命令的情況下設置內存鎖定和發(fā)送寫入完成消息的處理的示圖。
[0021]圖6A和圖6B是示出發(fā)送修剪命令(trim command)的處理的示圖。
[0022]圖7A至圖7C是示出快速存儲裝置的示圖。
[0023]圖8是示出在主機發(fā)生故障的情況下數據恢復的示圖。
[0024]圖9是示出在多個存儲裝置包括固態(tài)驅動器(SSD)和硬盤驅動器(HDD)的情況下數據鏡像控制的示圖。
[0025]圖10是示出根據本發(fā)明構思的至少一個示例實施例的設置內存鎖定的處理的流程圖。
[0026]圖11是示出根據本發(fā)明構思的至少一個示例實施例的發(fā)送寫入命令和寫入完成消息的處理的流程圖。
[0027]圖12是示出根據本發(fā)明構思的至少一個示例實施例的發(fā)送寫入命令和寫入完成消息的處理的流程圖。
[0028]圖13是示出根據本發(fā)明構思的至少一個示例實施例的改變快速存儲裝置的處理的流程圖。
[0029]圖14是示出根據本發(fā)明構思的至少一個示例實施例的改變快速存儲裝置的處理的流程圖。
[0030]圖15是示出根據本發(fā)明構思的至少一個示例實施例的改變快速存儲裝置的處理的流程圖。
[0031]圖16是示出根據本發(fā)明構思的至少一個示例實施例的在快速存儲裝置發(fā)生故障的情況下數據恢復處理的流程圖。
[0032]圖17是示出根據本發(fā)明構思的至少一個示例實施例的在主機發(fā)生故障的情況下數據恢復處理的流程圖。
【具體實施方式】
[0033]這里公開本發(fā)明構思的詳細示例實施例。然而,出于描述本發(fā)明構思的示例實施例的目的,這里公開的特定結構和功能細節(jié)僅是代表。然而,本發(fā)明構思的示例實施例可以以多種替代形式實現,并且不應被解釋為僅限于這里闡述的實施例。
[0034]因此,雖然本發(fā)明構思的示例實施例能夠具有各種修改和替代形式,但是本發(fā)明構思的實施例在附圖中通過示例的方式被示出并且將在這里被詳細地描述。然而,應當理解的是,不意圖將本發(fā)明構思的示例實施例限制到所公開的具體形式,而是相反,本發(fā)明構思的示例實施例將涵蓋落入本發(fā)明構思的示例實施例的范圍內的所有修改、等同物和替代。貫穿附圖的描述,相同的標號表示相同的元件。
[0035]將理解的是,雖然術語“第一”、“第二”等可在這里用于描述各種元件,但是這些元件不應受這些術語限制。這些術語僅用于區(qū)分一個元件與另一元件。例如,在不脫離本發(fā)明構思的示例實施例的范圍的情況下,第一元件可被命名為第二元件,類似地,第二元件可被命名為第一元件。如這里使用的,術語“和/或”包括相關聯列出項目中的一個或更多個的任何和所有組合。
[0036]將理解的是,當元件被稱為“連接”或“耦合”到另一元件時,其可直接連接或耦合到該另一元件,或者可存在中間元件。相反,當元件被稱為“直接連接”或“直接耦合”到另一元件時,不存在中間元件。用于描述元件之間的關系的其他詞語應以類似的方式被解釋(例如,“在…之間”對“直接在…之間”、“相鄰”對“直接相鄰”等)。
[0037]這里使用的術語僅是為了描述特定實施例的目的,不意圖限制本發(fā)明構思的示例實施例。如這里使用的,除非上下文另外明確地指示,否則單數形式還意圖包括復數形式。將進一步理解的是,當在這里使用時,術語“包括”和/或“包含”指定存在所陳述的特征、整體、步驟、操作、元件和/或組件,但是不排除存在或添加一個或更多個其他特征、整體、步驟、操作、元件、組件和/或它們的組。
[0038]還應注意的是,在一些替代實施方式中,所記錄的功能/動作可以不按附圖中所述的順序發(fā)生。例如,根據涉及的功能/動作,連續(xù)示出的兩幅附圖事實上可以基本上同時被執(zhí)行或者有時可以按相反的順序被執(zhí)行。
[0039]為了便于描述,諸如“在…之下”、“在…下方”、“下面”、“在…上方”、“上面”等的空間相對術語可在這里用于描述附圖中示出的一個元件或特征與另一元件或特征的關系。將理解的是,除了附圖中描繪的方位之外,空間相對術語還意圖包含裝置在使用或操作中的不同方位。例如,如果附圖中的裝置被翻轉,則被描述為“在”其他元件或特征“下方”或“在”其他元件或特征“之下”的元件將隨后被定向為“在”所述其他元件或特征“上方”。因此,示例性術語“在…下方”可包含上方和下方兩個方位。裝置可另外被定向(旋轉90度或在其他方位)并且這里使用的空間相對描述符被相應地解釋。
[0040]這里參照截面圖示(和中間結構)描述實施例,所述截面圖示是理想化實施例的示意性圖示。如此,將預期由例如制造技術和/或容差導致的圖示的形狀的變化。因此,這些實施例不應被解釋為限于這里示出的區(qū)域的特定形狀,而是應包括例如制造所導致的形狀上的偏差。例如,通常,被示出為矩形的注入區(qū)域將在其邊緣具有圓形或彎曲的特征和/或注入濃度的梯度,而不是從注入到非注入區(qū)域的二元變化。同樣地,通過注入形成的掩埋區(qū)域可在掩埋區(qū)域和注入發(fā)生的表面之間的區(qū)域中導致一些注入。因此,附圖中示出的區(qū)域本質上是示意性的,它們的形狀不意圖示出裝置的區(qū)域的實際形狀,也不意圖限制本發(fā)明構思的示例實施例的范圍。
[0041]除非另外定義,否則這里使用的所有術語(包括技術和科學術語)具有與本發(fā)明構思的示例實施例所屬領域的普通技術人員通常理解的含義相同的含義。將進一步理解的是,除非這里明確地這樣定義,否則諸如在通用字典中定義的那些術語應被解釋為具有與在相關領域的上下文和本說明書中的含義一致的含義,并且將不被解釋為理想化或過于形式化的意義。下文中,將參照附圖詳細地描述本發(fā)明構思的至少一些示例實施例。
[0042]圖1是示出根據本發(fā)明構思的至少一個示例實施例的數據鏡像存儲系統(tǒng)的配置的示圖。參照圖1,數據鏡像存儲系統(tǒng)可包括數據鏡像控制設備110、主機120和多個存儲裝置130。
[0043]多個存儲裝置130通過數據鏡像重復地存儲相同的數據,以防止數據在多個存儲裝置130中的一個存儲裝置發(fā)生故障時丟失。根據本發(fā)明構思的至少一個示例實施例,存儲裝置130可包括固態(tài)驅動器(SSD)的陣列。然而,本發(fā)明構思的示例實施例不限于此,存儲裝置130還可包括一個或更多個SSD以及一個或更多個硬盤驅動器(HDD)。
[0044]主機120可將對存儲在主機存儲器中的數據的寫入請求發(fā)送到數據鏡像控制設備110。這里,主機120可以以阻止方式(blocking manner)或非阻止方式將寫入請求發(fā)送到數據鏡像控制設備110。具體地講,利用非阻止方式,主機120可不管是否已經接收到主機120先前請求寫入的數據的寫入完成消息而將對數據的寫入請求發(fā)送到數據鏡像控制設備110。另一方面,利用阻止方式,主機120不做出對數據的寫入請求,直到接收到主機120先前請求寫入的數據的寫入完成消息為止。
[0045]數據鏡像控制設備110可對存儲在主機存儲器(host memory,主機內存)中的數據之中主機120所請求寫入的數據設置內存鎖定(存儲鎖定)。
[0046]另外,在具有內存鎖定的數據被寫入到所有的鏡像存儲裝置130之后,數據鏡像控制設備110可解除對數據的內存鎖定。
[0047]內存鎖定可防止存儲在主機存儲器的特定地址處的數據之中主機120所請求寫入的數據從主機存儲器被擦除或在數據被寫入到存儲裝置130之前被修改。
[0048]根據本發(fā)明構思的至少一個示例實施例,數據鏡像控制設備110可將主機120所請求寫入的數據的寫入命令發(fā)送到存儲裝置130。
[0049]這里,寫入命令可以以阻止方式或非阻止方式被發(fā)送到存儲裝置130中的每個存儲裝置。具體地講,利用阻止方式,當其他數據當前正被寫入到存儲裝置130時,數據鏡像控制設備110可不發(fā)送數據的寫入命令。一旦其他數據被寫入到存儲裝置130,數據鏡像控制設備110就可發(fā)送數據的寫入命令。
[0050]另一方面,利用非阻止方式,數據鏡像控制設備110可不管其他數據是否正被寫入到存儲裝置130而將另一數據的寫入命令發(fā)送到存儲裝置130中的每個存儲裝置。存儲裝置130中的每個存儲裝置按照命令隊列存儲接收到的寫入命令,完成當前數據的寫入,然后,通過執(zhí)行存儲在命令隊列中的寫入命令來寫入其他數據。
[0051]在主機120所請求寫入的數據被寫入到存儲裝置130之一時,數據鏡像控制設備110可將數據的寫入完成消息發(fā)送到主機120。
[0052]根據本發(fā)明構思的至少一個示例實施例,數據鏡像控制設備110可將主機120所請求寫入的數據的寫入命令發(fā)送到存儲裝置130之中被設置為快速存儲裝置的存儲裝置。具體地講,數據鏡像控制設備110可將寫入命令發(fā)送到存儲裝置130中的每個存儲裝置。然后,當存儲裝置130之一完成對寫入命令的執(zhí)行時,數據鏡像控制設備110可將寫入完成消息發(fā)送到主機120。
[0053]根據本發(fā)明構思的至少一個其他示例實施例,數據鏡像控制設備110可將寫入命令發(fā)送到存儲裝置130之中的快速存儲裝置,并且當快速存儲裝置完成對寫入命令的執(zhí)行時,將寫入完成消息發(fā)送到主機120。
[0054]數據鏡像控制設備110可被實現為與主機120分開的設備。然而,本發(fā)明構思的示例實施例不限于此,數據鏡像控制設備I1還可包括在主機120中。
[0055]圖2是示出根據本發(fā)明構思的至少一個示例實施例的數據鏡像控制設備110的配置的不圖。
[0056]參照圖2,內存鎖定設置單元112可對存儲在主機存儲器中的數據之中主機120所請求寫入的數據設置內存鎖定。
[0057]另外,在具有內存鎖定的數據被寫入到所有的存儲裝置130之后,內存鎖定設置單元112可解除對數據的內存鎖定。
[0058]換言之,在數據被寫入到所有的存儲裝置130 (不只是存儲裝置130中的任何一個存儲裝置)之后,可解除對主機120所請求寫入的數據的內存鎖定。
[0059]根據本發(fā)明構思的至少一個示例實施例,當從主機120接收到對數據的寫入請求時,命令分發(fā)單元111可將請求的數據的寫入命令發(fā)送到存儲裝置130中的每個存儲裝置。
[0060]當存儲裝置130之一完成對寫入命令的執(zhí)行時,命令分發(fā)單元111可將寫入完成消息發(fā)送到主機120。
[0061]根據本發(fā)明構思的至少一個示例實施例,命令分發(fā)單元111可將主機120所請求寫入的數據的寫入命令發(fā)送到存儲裝置130之中被設置為快速存儲裝置的存儲裝置。
[0062]在此情況下,在請求的數據被寫入到快速存儲裝置之后,命令分發(fā)單元111可將數據的寫入完成消息發(fā)送到主機120。
[0063]快速存儲裝置設置單元113可將存儲裝置130中的至少一個存儲裝置設置為快速存儲裝置。這里,快速存儲裝置可以是存儲裝置130之中存儲最新的數據的存儲裝置。
[0064]根據本發(fā)明構思的至少一個示例實施例,快速存儲裝置設置單元113可基于響應于寫入命令的寫入完成速度來將存儲裝置130之中的存儲裝置設置為快速存儲裝置。
[0065]具體地講,快速存儲裝置設置單元113可將存儲裝置130之中的以最高速度寫入相同數據的存儲裝置設置為快速存儲裝置。
[0066]另外,如果首先完成相同數據的寫入的存儲裝置不是快速存儲裝置,則快速存儲裝置設置單元113可將該存儲裝置改變?yōu)榭焖俅鎯ρb置。
[0067]根據本發(fā)明構思的至少一個示例實施例,快速存儲裝置設置單元113可將存儲裝置130之中的任意存儲裝置設置為快速存儲裝置,并且周期性地或非周期性地改變快速存儲裝置。
[0068]例如,快速存儲裝置設置單元113可從存儲裝置130中的每個存儲裝置周期性地接收寫入加速因子(WAF)值,并將具有最高WAF值的存儲裝置設置為快速存儲裝置。WAF意指存儲裝置的寫入速度。
[0069]作為另一示例,當快速存儲裝置具有寫入延遲時,快速存儲裝置設置單元113可改變快速存儲裝置。
[0070]作為另一示例,當自由塊由于通過快速存儲裝置執(zhí)行寫入命令而減小到預定大小或(可選地)參考大小或者更小時,快速存儲裝置設置單元113可改變快速存儲裝置。
[0071]根據本發(fā)明構思的至少一個示例實施例,可使用在存儲裝置130中的每個存儲裝置中存儲的快速存儲裝置指示符來設置快速存儲裝置。具體地講,快速存儲裝置設置單元113可通過將在存儲裝置130中的每個存儲裝置中存儲的快速存儲裝置指示符的值設置為一或零來設置或改變快速存儲裝置。
[0072]根據本發(fā)明構思的至少一個示例實施例,當快速存儲裝置發(fā)生故障時,命令分發(fā)單元111可將具有內存鎖定的數據的寫入命令發(fā)送到沒有發(fā)生故障的另一存儲裝置。
[0073]對數據設置的內存鎖定表示數據尚未被寫入到存儲裝置130中的至少一個存儲裝置。因此,當快速存儲裝置發(fā)生故障時,如果具有內存鎖定的數據被發(fā)送到沒有發(fā)生故障的另一存儲裝置,則可防止由于快速存儲裝置的故障而導致的數據的丟失。
[0074]根據本發(fā)明構思的至少一個示例實施例,當主機120發(fā)生故障時,命令分發(fā)單元111可對存儲在存儲裝置130中的數據進行匹配。
[0075]具體地講,當主機120由于意外故障而重新啟動時,命令分發(fā)單元111可將存儲在快速存儲裝置中的數據與存儲在其他存儲裝置130中的數據進行比較,以確定存儲在快速存儲裝置中的數據是否與存儲在其他存儲裝置130中的數據匹配。
[0076]當存儲在快速存儲裝置中的數據不與存儲在其他存儲裝置130中的數據匹配時,命令分發(fā)單元111可基于存儲在快速存儲裝置中的數據將重寫(overwrite)命令發(fā)送到其他存儲裝置130,以便與存儲在快速存儲裝置中的數據匹配。
[0077]修剪命令發(fā)送單元114可基于與將數據寫入到存儲裝置130之一的寫入有關的信息將修剪命令發(fā)送到尚未接收到數據的寫入命令的存儲裝置。
[0078]具體地講,可能難以或者不可能就地更新作為SSD的組件的NAND閃存。因此,為了在特定位置執(zhí)行寫入操作,包括所述位置的整個塊應當被預先擦除。這里,不再使用的無效數據被擦除,有效數據被傳送到另一塊。
[0079]因此,當存儲裝置130之一完成數據寫入時,修剪命令發(fā)送單元114通過使用修剪命令向未接收到數據的寫入命令的存儲裝置通知無效數據區(qū)域,從而提高存儲裝置的性能并減少存儲裝置的損耗。
[0080]當被設置為快速存儲裝置的存儲裝置被改變?yōu)槁俅鎯ρb置時,垃圾回收命令發(fā)送單元115可將垃圾回收命令發(fā)送到被改變?yōu)槁俅鎯ρb置的存儲裝置。
[0081]具體地講,在主機120所請求寫入的數據的寫入命令僅被發(fā)送到快速存儲裝置的情況下,寫入命令不被發(fā)送到已經被改變?yōu)槁俅鎯ρb置的存儲裝置。在此情況下,使被改變?yōu)槁俅鎯ρb置的存儲裝置執(zhí)行垃圾回收,以預先確保備用空間(spare space)。因此,這提高了當存儲裝置被再次設置為快速存儲裝置時存儲裝置的寫入性能。
[0082]慢速存儲裝置可以是沒有被設置為快速存儲裝置的存儲裝置。
[0083]圖3A至圖3C是示出在沒有應用內存鎖定的情況下數據丟失的示圖。
[0084]圖3A示出在主機所請求寫入的數據被寫入到所有鏡像存儲裝置之后寫入完成消息被發(fā)送到主機的情況的示例。在圖3A的示例中,當SSD I和SSD2完成主機所請求寫入的數據的寫入的時候,寫入完成消息被發(fā)送到主機。
[0085]具體地講,當具有慢寫入完成速度的SSD 2完成數據I的寫入時,數據I的寫入完成消息被發(fā)送到主機。同樣地,當具有慢寫入完成速度的SSD 2完成數據2的寫入時,數據2的寫入完成消息被發(fā)送到主機。
[0086]主機可以以阻止方式將數據寫入請求發(fā)送到SSD I和SSD 2。具體地講,主機可僅在接收到主機先前請求寫入的數據的寫入完成消息之后將對數據的寫入請求發(fā)送到SSD I和 SSD 2。
[0087]在圖3A的示例中,在SSD 2完成數據I的寫入之后,主機將對數據2的寫入請求發(fā)送到SSD I和SSD 2。在圖3A中示出的示例中,即使SSD I在完成數據I的寫入之后發(fā)生故障,由于數據I的寫入完成消息未被發(fā)送到主機直到SSD 2完成數據I的寫入為止,因此主機存儲器中的數據I不被擦除或修改。因此,數據2的寫入命令可被發(fā)送到SSD 2,從而防止數據2的丟失。
[0088]然而,即使SSD I較早地完成數據寫入,也不發(fā)送對下一數據的寫入請求,直到SSD 2完成數據寫入為止。因此,整個存儲裝置的寫入完成速度降低。
[0089]圖3B示出在多個鏡像存儲裝置之一完成數據寫入之后寫入完成消息被立即發(fā)送到主機的情況的示例。
[0090]與圖3A的情況不同,在圖3B的情況下,在SSD I和SSD 2中的任一個完成數據寫入之后,寫入完成消息被立即發(fā)送到主機。另外,當接收到寫入完成消息時,主機發(fā)送對另一數據的寫入請求(因而以阻止方式操作)。
[0091]具體地講,由于對于主機所請求寫入的數據1、2和3,SSD I的寫入完成速度快于SSD 2寫入完成速度,因此,當SSD I完成數據1、數據2和數據3中的每個數據的寫入的時候,數據1、數據2和數據3中的每個數據的寫入完成消息被發(fā)送到主機。
[0092]當接收到數據I的寫入完成消息時,主機做出對數據2的寫入請求,數據2的寫入命令被發(fā)送到SSD I。另外,當接收到數據2的寫入完成消息時,主機做出對數據3的寫入請求,數據3的寫入命令被發(fā)送到SSD I。
[0093]在此情況下,與圖3A的情況相比,整個存儲裝置的寫入完成速度提高。然而,如果在數據2和數據3中的每個數據的寫入命令被發(fā)送到SSD 2之前SSD I發(fā)生故障,則數據2和數據3會丟失。
[0094]具體地講,如果主機已經接收到數據1、數據2和數據3中的每個數據的寫入完成消息,則存儲在主機存儲器中的數據2和數據3可被擦除或修改。因此,當如圖3B的示例中SSD I在完成數據3的寫入之后發(fā)生故障時,如果數據2和數據3未被保持在主機存儲器中,則數據2和數據3的寫入命令不能被發(fā)送到尚未接收到數據2和數據3的寫入命令的SSD 2。在此情況下,數據2和數據3會丟失。
[0095]圖3C示出以非阻止方式發(fā)送寫入請求的情況的示例。
[0096]參照圖3C,主機可在接收到寫入完成消息之前做出對另一數據的寫入請求。如圖3C的示例中,主機可在接收到請求寫入的數據I的寫入完成消息之前做出與每個SSD的命令隊列的深度相應的對另一數據的寫入請求。
[0097]SSD I和SSD 2中的每一個可將主機所請求寫入的數據的寫入命令存儲在其命令隊列中,然后,寫入數據。另外,當SSD I和SSD 2之一完成數據寫入時,其可將寫入完成消息發(fā)送到主機。
[0098]即使在此情況下,仍然存在超過命令隊列的深度的數據丟失的風險。在圖3C中,假設SSD I和SSD 2中的每一個的命令隊列的深度是四。在此情況下,當SSD I完成數據I的寫入時,數據I的寫入完成消息被發(fā)送到主機,數據5的寫入命令被發(fā)送到SSD I的命令隊列。另外,當SSD I完成數據2的寫入時,數據2的寫入完成消息被發(fā)送到主機,數據6的寫入命令被發(fā)送到SSD I的命令隊列。
[0099]然而,由于當SSD I完成數據6的寫入并且SSD 2的命令隊列的深度是四的時候SSD 2正在寫入數據1,因此數據5和數據6的寫入命令不能被發(fā)送到SSD 2。
[0100]因此,當SSD I在完成數據5和數據6的寫入之后發(fā)生故障時,如果數據5和數據6未被存儲在主機存儲器中,則數據5和數據6的寫入命令不能被發(fā)送到SSD 2。在此情況下,數據5和數據6會丟失。
[0101]圖4A和圖4B是示出設置內存鎖定和發(fā)送寫入完成消息的處理的示圖。
[0102]在圖4A和圖4B的示例中,為了便于描述而假設多個鏡像存儲裝置包括兩個SSD。然而,本發(fā)明構思的示例實施例不限于該假設,鏡像存儲裝置也可包括兩個或更多個SSD,或者也可包括一個或更多個SSD以及一個或更多個HDD。
[0103]參照圖4A,當從主機120接收到數據寫入請求時,數據鏡像控制設備110可對存儲在主機存儲器中的數據之中主機120所請求寫入的數據設置內存鎖定。
[0104]例如,在圖4A中,當從主機120接收到對數據I的寫入請求時,數據鏡像控制設備110可對存儲在主機存儲器中的數據I設置內存鎖定。同樣地,當從主機120接收到對數據2至數據4中的每個數據的寫入請求時,數據鏡像控制設備110可對數據2至數據4中的每個數據設置內存鎖定。
[0105]當SSD I和SSD 2完成數據寫入時,解除對數據的內存鎖定。在圖4A的示例中,由于SSD 2的數據寫入完成速度慢于SSD I的數據寫入完成速度,因此數據鏡像控制設備110可在SSD 2完成數據I的寫入之后解除對數據I的內存鎖定。另外,可在SSD 2完成數據2至數據4中的每個數據的寫入之后解除對數據2至數據4中的每個數據的內存鎖定。
[0106]當SSD I和SSD 2之一完成數據寫入時,數據鏡像控制設備110可將數據的寫入完成消息立即發(fā)送到主機120。在圖4A的示例中,由于對于數據I至數據4中的每個數據,SSD I的寫入完成速度快于SSD 2的寫入完成速度,因此當SSD I完成數據I的寫入時,數據鏡像控制設備110將數據I的寫入完成消息發(fā)送到主機120。同樣地,當SSD I完成數據2至數據4中的每個數據的寫入時,數據鏡像控制設備110將數據2至數據4中的每個數據的寫入完成消息發(fā)送到主機120。
[0107]主機120不發(fā)送對另一數據的寫入請求,直到其接收到請求寫入的數據的寫入完成消息為止(因而以阻止方式操作)。具體地講,主機120僅在從數據鏡像控制設備110接收到數據I的寫入完成消息之后將對數據2的寫入請求發(fā)送到數據鏡像控制設備110。同樣地,主機120僅在接收到數據2的寫入完成消息之后將對數據3的寫入請求發(fā)送到數據鏡像控制設備110,并且僅在接收到數據3的寫入完成消息之后將對數據4的寫入請求發(fā)送到數據鏡像控制設備HO。
[0108]數據鏡像控制設備110將主機120所請求寫入的數據的寫入命令發(fā)送到SSD I和SSD 2。具體地講,數據鏡像控制設備110不發(fā)送下一數據的寫入命令,直到先前接收的寫入命令的執(zhí)行完成為止(因而以阻止方式操作)。在圖4A的示例中,在SSD I完成數據I的寫入之后,數據2的寫入命令被發(fā)送到SSD I。同樣地,在SSD 2完成數據I的寫入之后,數據2的寫入命令被發(fā)送到SSD 2。
[0109]參照圖4B,假設在數據2至數據4的寫入命令被發(fā)送到SSD 2之前SSDl發(fā)生故障。
[0110]在此情況下,不解除對數據2至數據4中的每個數據設置的內存鎖定,直到SSD 2完成數據2至數據4的寫入為止。因此,數據鏡像控制設備110可將存儲在主機存儲器中的數據2至數據4的寫入命令發(fā)送到SSD 2。因此,與圖3B的情況不同,可防止由于SSD I的故障而導致的數據丟失。
[0111]換言之,保持對正被寫入的數據的內存鎖定,直到兩個SSD全部完成對數據的寫入命令的執(zhí)行為止。因此,即使處理寫入命令的SSD首先發(fā)生故障,也可防止數據丟失。
[0112]另外,當兩個SSD之一完成數據寫入時,寫入完成消息被立即發(fā)送到主機120,從而可寫入下一數據。這可提高整個存儲裝置的寫入完成速度。
[0113]圖5A和圖5B是示出在以非阻止方式發(fā)送寫入命令的情況下設置內存鎖定和發(fā)送寫入完成消息的處理的示圖。
[0114]參照圖5A,主機120可不管是否已經接收到主機120先前請求寫入的其他數據的寫入完成消息而將對數據的寫入請求發(fā)送到數據鏡像控制設備110。
[0115]另外,數據鏡像控制設備110可不管SSD I和SSD 2是否正在寫入數據而將主機120所請求寫入的數據的寫入命令發(fā)送到SSD I和SSD 2中的每一個。
[0116]具體地講,主機120所請求寫入的數據的寫入命令被存儲在SSD I和SSD2中的每一個的命令隊列中。另外,SSD I和SSD 2中的每一個使用存儲在命令隊列中的寫入命令來寫入數據。
[0117]根據本發(fā)明構思的至少一個示例實施例,可考慮SSD I和SSD 2中的每一個的命令隊列的深度來將寫入命令發(fā)送到SSD I和SSD 2中的每一個。
[0118]在圖5A的示例中,SSD I和SSD 2中的每一個的命令隊列的深度是四,數據I至數據4的寫入命令首先被發(fā)送到SSD I和SSD 2的命令隊列。在SSDl完成對數據I的寫入命令的執(zhí)行之后,數據5的寫入命令被發(fā)送到SSD I的命令隊列。另外,在SSD I完成對數據2的寫入命令的執(zhí)行之后,數據6的寫入命令被發(fā)送到SSD I的命令隊列。
[0119]同樣地,當SSD 2完成對數據I的寫入命令的執(zhí)行時,數據5的寫入命令被發(fā)送到SSD 2的命令隊列。另外,在SSD 2完成對數據2的寫入命令的執(zhí)行之后,數據6的寫入命令被發(fā)送到SSD 2的命令隊列。
[0120]當從主機120發(fā)送了對數據I至數據6中的每個數據的寫入請求時,對存儲在主機存儲器中的數據I至數據6中的每個數據設置內存鎖定,并且當SSD I和SSD 2完成數據I至數據6中的每個數據的寫入時,解除內存鎖定。
[0121]另外,當SSD I和SSD 2之一完成主機120所請求寫入的數據的寫入時,數據鏡像控制設備110可將數據的寫入完成消息發(fā)送到主機120。
[0122]具體地講,在圖5A的示例中,當SSD I完成數據I至數據6中的每個數據的寫入時,數據鏡像控制設備110可將數據I至數據6中的每個數據的寫入完成消息發(fā)送到主機120。
[0123]另一方面,當所有存儲裝置完成數據I至數據6中的每個數據的寫入時(也就是說,當在圖5A中示出的示例中相對于SSD I較慢的裝置SSD 2完成數據I至數據6中的每個數據的寫入時),解除對數據I至數據6中的每個數據設置的內存鎖定。
[0124]參照圖5B,在數據5和數據6的寫入命令被發(fā)送到SSD 2的命令隊列之前,SSD I
發(fā)生故障。
[0125]在此情況下,不解除對存儲在主機存儲器中的數據5和數據6中的每個數據設置的內存鎖定,直到SSD 2完成數據5和數據6中的每個數據的寫入為止。因此,數據鏡像控制設備110可通過將具有內存鎖定的數據5和數據6的寫入命令發(fā)送到SSD 2來控制SSD2寫入數據5和數據6。
[0126]也就是說,與圖3C的情況不同,即使SSD I發(fā)生故障,由于對存儲在主機存儲器中的數據5和數據6中的每個數據設置的內存鎖定被保持,因此具有內存鎖定的數據5和數據6的寫入命令也可被發(fā)送到SSD 2,從而防止數據5和數據6的丟失。
[0127]另外,當兩個SSD之一完成數據寫入時,數據的寫入完成消息被立即發(fā)送到主機120,從而可寫入下一數據。這可提高整個存儲裝置的寫入完成速度。
[0128]圖6A和圖6B是示出發(fā)送修剪命令(trim command)的處理的示圖。
[0129]參照圖6A,在數據2的寫入命令被發(fā)送到SSD 2之前,SSD I完成數據I至數據4的與入。
[0130]這里,數據鏡像控制設備110可基于與將數據2至數據4寫入到SSD I的寫入有關的信息來將修剪命令發(fā)送到SSD 2。
[0131]與HDD不同,諸如SSD的基于閃存的存儲裝置不能立即將數據記錄在非空的頁中。這樣的存儲裝置可僅在現有數據被擦除之后記錄數據。具體地講,以逐塊為基礎擦除SSD。因此,為了將數據重寫到非空的塊,從存儲在該塊中的數據排除了無效數據之外的數據應當被傳送到另一塊或SSD內的緩存,然后,存儲在該塊中的數據應當被擦除。
[0132]這里,如果通過使用修剪命令能夠明確地通知哪個數據是無效數據,則可減小在為了重寫的擦除操作期間應當被傳送到另一塊的數據的量。具體地講,將相同的數據存儲在SSD I和SSD 2中。因此,如果數據2至數據4被重寫到SSD 1,則在SSD 2的將寫入數據2至數據4的塊中存儲的數據可被理解為無效數據。
[0133]例如,如果數據被重寫到SSD I的第1000塊至第1500塊,則在尚未執(zhí)行數據2至數據4的寫入命令的SSD 2的第1000塊至第1500塊中存儲的數據是無效數據。
[0134]因此,在數據2至數據4的寫入命令被發(fā)送到SSD 2之前,數據鏡像控制設備110可使用修剪命令明確地通知SSD 2在數據2至數據4將被寫入到的地址存儲的數據是無效數據。修剪命令使SSD 2能夠減小在為了重寫的擦除操作期間應當被傳送到其他塊的數據的量,從而提高SSD 2的性能并減少SSD 2的損耗。
[0135]參照圖6B,當尚未接收到數據5和數據6的寫入命令的SSD 2完成對數據I的寫入命令的執(zhí)行的時候,SSD I完成數據5和數據6的寫入。
[0136]因此,數據鏡像控制設備110可基于與將數據5和數據6寫入到SSD I的寫入有關的信息來將修剪命令發(fā)送到SSD 2。
[0137]圖7A至圖7C是示出快速存儲裝置的示圖。
[0138]參照圖7A,數據鏡像控制設備110可將對于完成主機120所請求寫入的數據的寫入最快的存儲裝置設置為快速存儲裝置。
[0139]具體地講,在圖7A中,由于SSD I首先完成數據I和數據2的寫入,因此SSD I可被設置為快速存儲裝置。
[0140]另一方面,由于SSD 2首先完成數據3和數據4的寫入,因此當SSD 2完成數據3的寫入的時候,數據鏡像控制設備110可將快速存儲裝置改變?yōu)镾SD 2。
[0141]參照圖7B,數據鏡像控制設備110可將寫入命令發(fā)送到被設置為快速存儲裝置的SSD 1,將讀取命令發(fā)送到SSD 2。例如,根據至少一個示例實施例,當讀取和寫入命令被同時發(fā)送時,寫入命令可被發(fā)送到被設置為快速存儲裝置的存儲裝置,讀取命令可被發(fā)送到被設置為慢速存儲裝置(或未被設置為快速存儲裝置)的存儲裝置。
[0142]可根據(例如)WAF、自由塊的大小、寫入延遲的發(fā)生等,周期性地或非周期性地設置和改變快速存儲裝置。
[0143]在圖7B的示例中,當初始被設置為快速存儲裝置的SSD I的WAF值低于SSD 2的WAF值時,快速存儲裝置可改變?yōu)镾SD 2。
[0144]此外,根據本發(fā)明構思的至少一個示例實施例,當SSD I具有寫入延遲時或者當自由塊的大小由于通過SSD I執(zhí)行寫入命令而減小到預定大小或(可選地)參考大小或更小時,快速存儲裝置可改變?yōu)镾SD 2。
[0145]在圖7B的示例中,在SSD I完成數據2的寫入之后,快速存儲裝置改變?yōu)镾SD 2。因此,寫入命令可被發(fā)送到SSD 2。
[0146]這里,數據鏡像控制設備110可將具有內存鎖定的數據I和數據2的寫入命令發(fā)送到SSD 2。
[0147]在此情況下,在快速存儲裝置改變之后,數據I和數據2的寫入命令可與主機120所請求寫入的數據3和數據4的寫入命令交替地發(fā)送。然而,根據本發(fā)明構思的至少一個示例實施例,在圖7B中示出的示例的替代示例中,寫入到SSD I的數據I和數據2的寫入命令可被優(yōu)先發(fā)送到SSD 2。
[0148]當快速存儲裝置改變?yōu)镾SD 2時,數據鏡像控制設備110可在將數據I和數據2的寫入命令發(fā)送到SSD 2之前,基于與將數據I和數據2寫入到SSDl的寫入有關的信息來將修剪命令發(fā)送到SSD 2。具體地講,如果數據I和數據2的寫入命令是重寫命令,則可以理解的是,在數據I和數據2被寫入到的SSD I中的地址先前存儲的數據是無效數據。因此,數據鏡像控制設備110可使用修剪命令明確地通知SSD 2在數據I和數據2將被寫入到的SSD 2中的地址存儲的數據是無效數據。接收修剪命令的SSD 2可減小在重寫數據2至數據4所需的擦除操作期間應當被傳送到其他塊的數據的量。結果,可提高SSD 2的性能,并可減少SSD 2的損耗。
[0149]當快速存儲裝置改變?yōu)镾SD 2時,數據鏡像控制設備110可通過將垃圾回收命令發(fā)送到SSD I來控制SSD I執(zhí)行垃圾回收。
[0150]例如,當快速存儲裝置改變?yōu)镾SD 2時,寫入命令被發(fā)送到SSD 2,讀取命令被發(fā)送到SSD I。因此,SSD I不執(zhí)行寫入操作。這里,在快速存儲裝置再次改變?yōu)镾SD I之前,數據鏡像控制設備110控制SSD I執(zhí)行垃圾回收。由于存儲無效數據的頁通過垃圾回收而被回收和擦除,因此可預先確保自由空間。這可提高在快速存儲裝置再次改變?yōu)镾SD I時SSD I的寫入性能。
[0151]在圖7B的示例中,即使快速存儲裝置改變?yōu)镾SD 2,最新的數據也被存儲在SSD I中,直到SSD 2完成數據I和數據2的寫入為止。
[0152]因此,如圖7C的示例中,數據鏡像控制設備110可通過在將快速存儲裝置改變?yōu)镾SD 2之前將具有內存鎖定的數據I和數據2的寫入命令發(fā)送到SSD 2,來對存儲在SSD 2中的數據和存儲在SSD I中的數據進行匹配。
[0153]然后,當SSD 2完成數據I和數據2的寫入時,數據鏡像控制設備110可將快速存儲裝置改變?yōu)镾SD 2。
[0154]在此情況下,與圖7B的情況不同,最新的數據可被一直存儲在快速存儲裝置中。
[0155]數據鏡像控制設備110可在將數據I和數據2的寫入命令發(fā)送到SSD 2之前,基于與將數據I和數據2寫入到SSD I的寫入有關的信息來將修剪命令發(fā)送到SSD 2。
[0156]另外,當快速存儲裝置改變?yōu)镾SD 2時,數據鏡像控制設備110可通過將垃圾回收命令發(fā)送到SSD I來控制SSD I執(zhí)行垃圾回收。
[0157]在圖7B和圖7C中,只有寫入命令被發(fā)送到快速存儲裝置,讀取命令被發(fā)送到其他存儲裝置。然而,本發(fā)明構思的示例實施例不限于此。
[0158]例如,當負載平衡在存儲裝置之間是必需的或期望的時或者當存在對最近寫入到快速存儲裝置的數據的讀取請求時,讀取命令可被發(fā)送到快速存儲裝置。
[0159]圖8是示出在主機120發(fā)生故障的情況下數據恢復的示圖。
[0160]參照圖8,當主機120由于意外故障而重新啟動時,數據鏡像控制設備110可基于存儲在快速存儲裝置中的數據,對存儲在多個存儲裝置中的數據進行匹配。
[0161]由于最新的數據被存儲在快速存儲裝置中,因此存儲在存儲裝置中的數據可與存儲在快速存儲裝置中的數據匹配。
[0162]具體地講,當主機120重新啟動時,可將存儲在快速存儲裝置中的數據與存儲在其他存儲裝置中的數據進行比較,以確定這兩組存儲的數據是否匹配。
[0163]這里,可通過存儲在每個存儲裝置中的快速存儲裝置指示符710識別存儲裝置中的哪個存儲裝置是快速存儲裝置。在圖8的示例中,具有設置為一的快速存儲裝置指示符710的SSD I是快速存儲裝置。
[0164]可使用更新位圖720確定在SSD I和SSD 2之間是否存在不匹配的數據。
[0165]具體地講,數據鏡像控制設備110可將多個存儲裝置130中的每個存儲裝置的整個數據區(qū)域劃分為N個塊(chunk),并通過使用與N個塊中的每個塊相應的更新比特來確定在每個存儲裝置130的N個塊中的每個塊中存儲的數據是否與在另一存儲裝置130的N個塊中的相應塊中存儲的數據匹配。
[0166]在圖8的示例中,SSD I和SSD 2中的每一個的數據區(qū)域被劃分為八個塊,并示出了用于八個塊的更新位圖720。
[0167]包括在更新位圖720中的每個比特對應于一個塊,并表示在SSD I的塊中存儲的數據是否與在SSD 2的相應塊中存儲的數據匹配。
[0168]具體地講,如果數據僅被寫入到SSD I和SSD 2中的SSD I (即,快速存儲裝置),則用于數據被寫入到的塊730和740的更新比特可被設置為一。
[0169]另一方面,如果數據被寫入到SSD I和SSD 2兩者,則用于數據被寫入到的塊的更新比特可被設置為零。此外,沒有數據寫入到的塊可被設置為零。
[0170]因此,不需要比較存儲在SSD I和SSD 2中的全部數據。而是可比較僅僅存儲在更新位圖720中的更新比特被設置為一的塊中的數據,從而減少數據恢復時間。
[0171]當主機120發(fā)生故障時對存儲在多個存儲裝置中的數據進行匹配的方法不限于以上使用圖8中示出的更新位圖720的方法。
[0172]例如,由于對存儲在主機存儲器中的數據之中寫入到快速存儲裝置(而不是寫入到慢速存儲裝置)的數據保持內存鎖定,因此具有內存鎖定的數據不被擦除或修改,直到其被寫入到慢速存儲裝置為止。因此,數據鏡像控制設備110可記錄存儲在主機存儲器中的具有內存鎖定的數據的列表,并將數據的列表存儲在非易失性存儲器或存儲裝置的區(qū)域中。然后,當主機120重新啟動時,數據鏡像控制設備110可將列表上的數據的寫入命令發(fā)送到慢速存儲裝置,以對存儲在慢速存儲裝置中的數據與存儲在快速存儲裝置中的數據進行匹配。
[0173]圖9是示出在多個存儲裝置包括SSD和HDD的情況下數據鏡像控制的示圖。
[0174]參照圖9,多個鏡像存儲裝置可包括至少一個HDD和至少一個SSD。
[0175]數據鏡像控制設備110可將HDD設置為快速存儲裝置,使得數據可被首先寫入到HDD。然后,數據鏡像控制設備110可將快速存儲裝置改變?yōu)镾SD,使得與寫入到HDD的數據相同的數據可被寫入到SSD。
[0176]數據鏡像控制設備110可將主機120隨機地請求寫入的數據的寫入命令轉換為順序寫入命令,并將順序寫入命令發(fā)送到HDD。
[0177]具體地講,在圖9的示例中,寫入請求I’、2’和3’是對存儲了數據1、2和3的地址的重寫請求。這里,數據鏡像控制設備I1可將與對主機120所請求的數據的寫入請求1’、2’和3’相應的寫入命令轉換為順序的寫入命令4、5和6,并將順序的寫入命令4、5和6發(fā)送到HDD。
[0178]通常,HDD比SSD具有更大的可用空間。因此,如果在HDD和SSD之間應用數據鏡像,則在HDD中創(chuàng)建更多的可用空間。另外,根據HDD的物理屬性,HDD的順序寫入性能優(yōu)于HDD的隨機寫入性能。因此,數據鏡像控制設備110可將主機120隨機地請求寫入的數據轉換為日志形式(log form),使得數據可被連續(xù)地存儲。相應地,HDD的寫入性能可提高。
[0179]當快速存儲裝置被改變?yōu)镾SD時,數據鏡像控制設備110可基于與將數據寫入到HDD的寫入有關的信息,使用修剪命令將關于無效數據的信息發(fā)送到SSD。
[0180]在圖9的示例中,數據鏡像控制設備110可將表示存儲在HDD中的數據之中的數據1、2和3是無效數據的修剪命令發(fā)送到SSD,然后,將數據1、2和3的寫入命令發(fā)送到SSD。
[0181]以上方法可提聞HDD的與入性能并減少SSD的損耗。
[0182]圖10是示出根據本發(fā)明構思的至少一個示例實施例的設置內存鎖定的處理的流程圖。
[0183]參照圖10,當從主機120接收到寫入請求(步驟910)時,數據鏡像控制設備110可對存儲在主機存儲器中的數據之中主機120所請求寫入的數據設置內存鎖定(步驟920)。
[0184]在具有內存鎖定的數據被寫入到全部的多個存儲裝置130 (步驟930)之后,數據鏡像控制設備110可解除對數據的內存鎖定(步驟940)。
[0185]換言之,不解除對數據的內存鎖定,直到數據被寫入到全部的存儲裝置130為止。
[0186]圖11是示出根據本發(fā)明構思的至少一個示例實施例的發(fā)送寫入命令和寫入完成消息的處理的流程圖。參照圖11,數據鏡像控制設備110可將主機120所請求寫入的數據的寫入命令發(fā)送到多個存儲裝置130 (步驟1010)。
[0187]這里,主機120的寫入請求和主機120所請求寫入的數據的寫入命令可以以阻止方式或非阻止方式被發(fā)送到存儲裝置130中的每個存儲裝置。
[0188]當存儲裝置130中的至少一個存儲裝置完成主機120所請求寫入的數據的寫入(步驟1020)時,數據鏡像控制設備110可將數據的寫入完成消息發(fā)送到主機120 (步驟1030)。
[0189]根據本發(fā)明構思的至少一個示例實施例,當存儲裝置130中的至少一個存儲裝置完成主機120所請求寫入的數據的寫入時,數據鏡像控制設備110可基于與將數據寫入到完成了寫入數據的存儲裝置的寫入有關的信息,將修剪命令發(fā)送到尚未接收到數據的寫入命令的存儲裝置(步驟1040)。
[0190]圖12是示出根據本發(fā)明構思的至少一個示例實施例中的另一實施例的發(fā)送寫入命令和寫入完成消息的處理的流程圖。
[0191]參照圖12,數據鏡像控制設備110可將主機120所請求寫入的數據的寫入命令發(fā)送到快速存儲裝置(步驟1110)。
[0192]換言之,數據鏡像控制設備110可將寫入命令僅發(fā)送到多個存儲裝置130之中被設置為快速存儲裝置的存儲裝置。
[0193]根據本發(fā)明構思的至少一個示例實施例,如果存儲裝置130包括至少一個HDD和至少一個SSD,則數據鏡像控制設備110可將HDD設置為快速存儲裝置,將主機120所請求的數據的寫入命令轉換為順序寫入命令,并將順序寫入命令發(fā)送到HDD。
[0194]數據鏡像控制設備110可將存儲裝置130中的至少一個存儲裝置設置為快速存儲裝置,并且周期性地或非周期性地改變快速存儲裝置。
[0195]另外,根據本發(fā)明構思的至少一個示例實施例,數據鏡像控制設備110可將讀取命令發(fā)送到存儲裝置130之中未被設置為快速存儲裝置的每個存儲裝置。
[0196]然而,本發(fā)明構思的示例實施例不限于此。當在存儲裝置130之間需要或期望負載平衡時或者當存在對最近寫入到快速存儲裝置的數據的讀取請求時,讀取命令可被發(fā)送到快速存儲裝置。
[0197]當快速存儲裝置完成主機120所請求寫入的數據的寫入(步驟1120)時,數據鏡像控制設備I1可將寫入完成消息發(fā)送到主機120 (步驟1130)。
[0198]圖13是示出根據本發(fā)明構思的至少一個示例實施例的改變快速存儲裝置的處理的流程圖。參照圖13,數據鏡像控制設備110可將主機120所請求寫入的數據的寫入命令發(fā)送到多個鏡像存儲裝置130 (步驟1210)。
[0199]根據本發(fā)明構思的至少一個示例實施例,最快地寫入請求的數據的存儲裝置可被設置為快速存儲裝置。
[0200]因此,當存儲裝置130中的一個存儲裝置完成主機120所請求寫入的數據的寫入(步驟1220)時,可確定該存儲裝置是否是快速存儲裝置(步驟1230)。
[0201]如果多個存儲裝置中的首先完成請求的數據的寫入的存儲裝置當前未被設置為快速存儲裝置,則可由例如數據鏡像控制設備110將快速存儲裝置改變?yōu)槭紫韧瓿烧埱蟮臄祿膶懭氲拇鎯ρb置(步驟1240)。
[0202]圖14是示出根據本發(fā)明構思的至少一個示例實施例的改變快速存儲裝置的處理的流程圖。
[0203]參照圖14,數據鏡像控制設備110可將主機120所請求寫入的數據的寫入命令發(fā)送到快速存儲裝置(步驟1310)。
[0204]然后,數據鏡像控制設備110可周期性地或非周期性地確定是否需要改變快速存儲裝置(步驟1320),并基于確定結果改變快速存儲裝置(步驟1330)。
[0205]具體地講,與圖12的情況不同,可根據例如WAF、自由塊的大小、寫入延遲的發(fā)生等來周期性地或非周期性地確定是否需要改變快速存儲裝置。
[0206]例如,當快速存儲裝置的WAF值低于另一存儲裝置的WAF值時,數據鏡像控制設備110可改變快速存儲裝置。
[0207]在另一示例中,當快速存儲裝置具有寫入延遲時或者當自由塊的大小由于通過快速存儲裝置執(zhí)行寫入命令而減小到預定大小或(可選地)參考大小或更小時,數據鏡像控制設備110可改變快速存儲裝置。
[0208]當快速存儲裝置改變?yōu)镾SD時,數據鏡像控制設備110可基于與將數據寫入到先前快速存儲裝置的寫入有關的信息來將修剪命令發(fā)送到SSD (步驟1340)。
[0209]另外,當被設置為快速存儲裝置的SSD變?yōu)槁俅鎯ρb置時,數據鏡像控制設備110可將垃圾回收命令發(fā)送到SSD (步驟1350)。
[0210]圖15是是示出根據本發(fā)明構思的至少一個示例實施例的改變快速存儲裝置的處理的流程圖。
[0211]參照圖15,數據鏡像控制設備110可將主機120所請求寫入的數據的寫入命令發(fā)送到快速存儲裝置(步驟1410)。
[0212]然后,數據鏡像控制設備110可周期性地或非周期性地確定是否需要改變快速存儲裝置(步驟1420)。
[0213]具體地講,可根據WAF、自由塊的大小、寫入延遲的發(fā)生等來周期性地或非周期性地確定是否需要改變快速存儲裝置。
[0214]例如,當快速存儲裝置的WAF值低于另一存儲裝置的WAF值時,數據鏡像控制設備110可確定需要改變快速存儲裝置。
[0215]在另一示例中,當快速存儲裝置具有寫入延遲時或者當自由塊的大小由于通過快速存儲裝置執(zhí)行寫入命令而減小到預定大小或(可選地)參考大小或更小時,數據鏡像控制設備110可確定需要改變快速存儲裝置。
[0216]然后,數據鏡像控制設備110可將具有內存鎖定的數據的寫入命令發(fā)送到將被設置為快速存儲裝置的存儲裝置(步驟1440)。
[0217]根據本發(fā)明構思的至少一個示例實施例,如果將被設置為快速存儲裝置的存儲裝置是SSD,則數據鏡像控制設備110可在將具有內存鎖定的數據的寫入命令發(fā)送到將被設置為快速存儲裝置的SSD之前,基于與將數據寫入到當前快速存儲裝置的寫入有關的信息來將修剪命令發(fā)送到SSD (步驟1430)。
[0218]當將被設置為快速存儲裝置的存儲裝置完成具有內存鎖定的數據的寫入(步驟1450)時,數據鏡像控制設備110可將快速存儲裝置改變?yōu)樵摯鎯ρb置(步驟1460)。
[0219]這里,根據本發(fā)明構思的至少一個示例實施例,當被設置為快速存儲裝置的SSD變?yōu)槁俅鎯ρb置時,數據鏡像控制設備110可將垃圾回收命令發(fā)送到SSD (步驟1470)。
[0220]圖16是示出根據本發(fā)明構思的至少一個示例實施例的在快速存儲裝置發(fā)生故障的情況下數據恢復處理的流程圖。參照圖16,當多個存儲裝置130之一發(fā)生故障(步驟1510)時,數據鏡像控制設備110可確定發(fā)生故障的存儲裝置是否是快速存儲裝置(步驟1520)。
[0221]如果發(fā)生故障的存儲裝置是快速存儲裝置,則數據鏡像控制設備110可將具有內存鎖定的數據的寫入命令發(fā)送到沒有發(fā)生故障的另一存儲裝置(步驟1530)。
[0222]對主機存儲器中數據的內存鎖定表示數據尚未被寫入到存儲裝置130中的至少一個存儲裝置。
[0223]因此,數據鏡像控制設備110將具有內存鎖定的數據的寫入命令發(fā)送到尚未接收到數據的寫入命令的存儲裝置,從而防止由于快速存儲裝置的故障而導致的數據的丟失。
[0224]對數據設置的內存鎖定還表示數據的寫入命令已經被發(fā)送到快速存儲裝置。因此,如果發(fā)生故障的存儲裝置不是快速存儲裝置,則不需要數據恢復過程。
[0225]圖17是示出根據本發(fā)明構思的至少一個示例實施例的在主機120發(fā)生故障的情況下數據恢復處理的流程圖。
[0226]參照圖17,當主機120由于故障(例如,意外故障)而重新啟動(步驟1610)時,數據鏡像控制設備110可確定存儲在多個存儲裝置130中的數據是否匹配(步驟1620)。
[0227]這里,根據本發(fā)明構思的至少一個示例實施例,數據鏡像控制設備110可將存儲裝置130中的每個存儲裝置的整個數據區(qū)域劃分為多個塊,并通過使用與每個塊相應的更新比特來確定存儲在存儲裝置130中的數據是否匹配。
[0228]根據另一實施例,數據鏡像控制設備110可記錄存儲在主機存儲器中的具有內存鎖定的數據的列表,并將數據的列表存儲在非易失性存儲器或快速存儲裝置的區(qū)域中。因此,當主機120重新啟動時,數據鏡像控制設備110可通過參考列表來確定存儲在存儲裝置130中的數據是否匹配。
[0229]當存儲在存儲裝置130中的數據不匹配(步驟1630)時,數據鏡像控制設備110可基于存儲在快速存儲裝置中的數據將重寫命令發(fā)送到其他存儲裝置(步驟1640)。
[0230]具體地講,由于最新的數據被存儲在快速存儲裝置中,因此當在快速存儲裝置的塊中存儲的數據與在另一存儲裝置的相應塊中存儲的數據不匹配時,數據鏡像控制設備110可將在快速存儲裝置的塊中存儲的數據重寫到該另一存儲裝置的相應塊,從而使在快速存儲裝置的塊中存儲的數據與在該另一存儲裝置的相應塊中存儲的數據匹配。
[0231]根據本發(fā)明構思的至少一個示例實施例,主機所請求寫入的數據被存儲在主機存儲器中,直到該數據被寫入到所有鏡像存儲裝置。因此,可防止由于存儲裝置中的任何一個的故障而導致的數據丟失。
[0232]另外,當多個鏡像存儲裝置之一完成數據寫入時,數據的寫入完成消息被立即發(fā)送到主機。這可提高寫入性能。
[0233]此外,在適當的時候發(fā)送修剪命令和垃圾回收命令。因此,SSD的性能和壽命可提聞。
[0234]本發(fā)明構思的至少一個示例實施例還可被實現為計算機可讀記錄介質上的計算機可讀代碼。計算機可讀記錄介質可以是能夠存儲之后可由計算機系統(tǒng)讀取的數據的任何數據存儲裝置。計算機可讀記錄介質的示例包括只讀存儲器(ROM)、隨機存取存儲器(RAM)、⑶-ROM、磁帶、軟盤和光學數據存儲裝置。此外,用于完成實施本發(fā)明構思的示例實施例的功能程序、代碼和代碼段可由本發(fā)明構思的示例實施例所屬領域的編程技術人員容易地解釋。
[0235]根據至少一個示例實施例,數據鏡像控制設備110可包括控制數據鏡像控制設備110的操作的處理器。如這里使用的,術語“處理器”表示包括在結構上被構造為實施特定操作或在結構上被構造為執(zhí)行從計算機可讀代碼讀取的指令的電路的機器。上述處理器的示例包括(但不限于)微處理器、多處理器、中央處理單元(CPU)、數字信號處理器(DSP)、專用集成電路(ASIC)和場可編程門陣列(FPGA)。
[0236]根據至少一個示例實施例,控制主機120的操作的處理器也可以是控制數據鏡像控制設備110的處理器。根據至少一個示例實施例,控制主機120的操作的處理器可與控制數據鏡像控制設備110的處理器分開。
[0237]根據至少一個示例實施例,由數據鏡像控制設備110或其組件之一執(zhí)行的在此例如參照圖1至圖17中的任何一個描述的任何操作可由包括在數據鏡像控制設備110中的上述處理器執(zhí)行。例如,根據至少一個示例實施例,數據鏡像控制設備110可在軟件和/或硬件方面被編程,以執(zhí)行由數據鏡像控制設備110執(zhí)行的在此描述的功能中的任何或所有功能。
[0238]現在,將在下面論述數據鏡像控制設備110在軟件方面被編程以執(zhí)行由數據鏡像控制設備110執(zhí)行的在此描述的功能中的任何或所有功能的示例。例如,數據鏡像控制設備110可包括程序存儲單元,程序存儲單元可存儲包括與由數據鏡像控制設備110執(zhí)行的參照圖1至圖15描述的操作中的任何或所有操作相應的可執(zhí)行指令的程序。根據至少一個示例實施例,除了被存儲在程序存儲單元中之外或者作為被存儲在程序存儲單元中的替代,可執(zhí)行指令可被存儲在計算機可讀介質中,計算機可讀介質包括例如光盤、閃存驅動器、SD卡等,并且數據鏡像控制設備110可包括用于讀取存儲在計算機可讀介質上的數據的硬件。此外,包括在數據鏡像控制設備110中的處理器可被構造為例如通過讀取和執(zhí)行在上述程序存儲單元和計算機可讀存儲介質中的至少一個中存儲的可執(zhí)行指令,來執(zhí)行由數據鏡像控制設備110執(zhí)行的參照圖1至圖15描述的操作中的任何或所有操作,其中,計算機可讀存儲介質被裝載到在數據鏡像控制設備110中包括的用于讀取計算機可讀介質的硬件中。
[0239]現在,將在下面論述數據鏡像控制設備110在硬件方面被編程以執(zhí)行由數據鏡像控制設備110執(zhí)行的在此描述的功能中的任何或所有功能的示例。除了如上所述與由數據鏡像控制設備110執(zhí)行的參照圖1至圖17描述的功能對應的存儲在程序存儲單元或計算機可讀介質中的可執(zhí)行指令之外或作為其替代,包括在數據鏡像控制設備110中的處理器可包括具有專門用于執(zhí)行由數據鏡像控制設備110執(zhí)行的參照圖1至圖17描述的操作中的任何或所有操作的結構設計的電路。例如,包括在數據鏡像控制設備I1的處理器中的上述電路可以是在物理上被編程為執(zhí)行由數據鏡像控制設備110執(zhí)行的參照圖1至圖17描述的操作中的任何或所有操作的FPGA或ASIC。
[0240]已經這樣描述了示例實施例,將顯然的是,示例實施例可以以多種方式變化。這樣的變化不應被視為脫離本發(fā)明構思的示例實施例的期望的精神和范圍,并且將對本領域技術人員顯然的所有這樣的修改意在被包括在權利要求的范圍內。
【權利要求】
1.一種數據鏡像控制設備,包括: 命令分發(fā)單元,被構造為將第一寫入命令發(fā)送到多個鏡像存儲裝置,第一寫入命令包括用于主機所請求寫入的數據的指令; 內存鎖定設置單元,被構造為對存儲在主機存儲器中的數據之中主機所請求寫入的數據設置內存鎖定,并被構造為在具有內存鎖定的數據被寫入到所述多個鏡像存儲裝置之后解除對數據的內存鎖定。
2.如權利要求1所述的數據鏡像控制設備,其中,命令分發(fā)單元被構造為當所述多個鏡像存儲裝置之一完成請求的數據的寫入時,將請求的數據的寫入完成消息發(fā)送到主機。
3.如權利要求1所述的數據鏡像控制設備,還包括:修剪命令發(fā)送單元,被構造為基于與將請求的數據寫入到所述多個鏡像存儲裝置之一的寫入有關的信息,將修剪命令發(fā)送到尚未接收到用于請求的數據的第一寫入命令的存儲裝置。
4.如權利要求1所述的數據鏡像控制設備,其中,命令分發(fā)單元被構造為將用于具有內存鎖定的數據的第一寫入命令發(fā)送到尚未接收到用于具有內存鎖定的數據的第一寫入命令的存儲裝置。
5.如權利要求1所述的數據鏡像控制設備,還包括: 快速存儲裝置設置單元,被構造為將所述多個鏡像存儲裝置中的至少一個設置為快速存儲裝置, 其中,命令分發(fā)單元被構造為將第一寫入命令發(fā)送到快速存儲裝置。
6.如權利要求5所述的數據鏡像控制設備,其中,快速存儲裝置設置單元被構造為基于響應于寫入命令的寫入完成速度來設置快速存儲裝置。
7.如權利要求5所述的數據鏡像控制設備,其中,命令分發(fā)單元被構造為在請求的數據被寫入到快速存儲裝置之后將寫入完成消息發(fā)送到主機,寫入完成消息表示請求的數據已經被寫入。
8.如權利要求5所述的數據鏡像控制設備,其中,快速存儲裝置設置單元被構造為周期性地或非周期性地改變快速存儲裝置。
9.如權利要求8所述的數據鏡像控制設備,其中,所述設備被構造為使得當快速存儲裝置改變時,命令分發(fā)單元將用于具有內存鎖定的數據的第一寫入命令發(fā)送到新的快速存儲裝置。
10.如權利要求8所述的數據鏡像控制設備,其中,所述設備被構造為使得當所述設備確定改變快速存儲裝置的條件已經滿足時,命令分發(fā)單元將用于具有內存鎖定的數據的第一寫入命令發(fā)送到第一存儲裝置,并且當第一存儲裝置完成具有內存鎖定的數據的寫入時,快速存儲裝置設置單元通過將第一存儲裝置設置為快速存儲裝置來改變快速存儲裝置。
11.如權利要求5所述的數據鏡像控制設備,其中,所述設備被構造為使得當快速存儲裝置發(fā)生故障時,命令分發(fā)單元將用于具有內存鎖定的數據的第一寫入命令發(fā)送到沒有發(fā)生故障的另一存儲裝置。
12.如權利要求5所述的數據鏡像控制設備,其中,所述設備被構造為使得當主機發(fā)生故障時,命令分發(fā)單元確定在所述多個鏡像存儲裝置的每個鏡像存儲裝置中存儲的數據是否相同,如果在所述多個鏡像存儲裝置中存儲的數據不相同,則基于存儲在快速存儲裝置中的數據將寫入命令發(fā)送到一個或更多個其他存儲裝置,其中,所述一個或更多個其他存儲裝置是所述多個鏡像存儲裝置中的未被設置為快速存儲裝置的存儲裝置。
13.如權利要求5所述的數據鏡像控制設備,其中, 所述多個鏡像存儲裝置包括至少一個硬盤驅動器HDD, 所述設備被構造為使得當HDD是由快速存儲裝置設置單元設置為快速存儲裝置的鏡像存儲裝置時,命令分發(fā)單元將隨機寫入命令轉換為順序寫入命令,并將順序寫入命令發(fā)送到HDD,其中,隨機寫入命令包括用于主機請求隨機地寫入的數據的指令,順序寫入命令包括用于主機請求順序地寫入的數據的指令。
14.一種數據鏡像控制設備,包括: 命令分發(fā)單元,被構造為將主機所請求寫入的數據的寫入命令發(fā)送到多個鏡像存儲裝置,并在請求的數據被寫入到所述多個鏡像存儲裝置之一之后,發(fā)送請求的數據的寫入完成消息; 修剪命令發(fā)送單元,被構造為基于與將請求的數據寫入到所述多個鏡像存儲裝置之一的寫入有關的信息,將修剪命令發(fā)送到未接收到請求的數據的寫入命令的存儲裝置。
15.如權利要求14所述的數據鏡像控制設備,還包括: 快速存儲裝置設置單元,被構造為將所述多個鏡像存儲裝置中的至少一個設置為快速存儲裝置,并被構造為周期性地或非周期性地改變快速存儲裝置,其中,命令分發(fā)單元被構造為將主機所請求寫入的數據的寫入命令發(fā)送到快速存儲裝置。
16.如權利要求15所述的數據鏡像控制設備,其中,所述設備被構造為使得當快速存儲裝置從所述多個鏡像存儲裝置中的第一鏡像存儲裝置改變?yōu)樗龆鄠€鏡像存儲裝置中的不同的鏡像存儲裝置時,修剪命令發(fā)送單元基于與將請求的數據寫入到先前快速存儲裝置的寫入有關的信息,將修剪命令發(fā)送到新的快速存儲裝置。
17.如權利要求15所述的數據鏡像控制設備,還包括: 垃圾回收命令發(fā)送單元,被構造為使得當快速存儲裝置從所述多個鏡像存儲裝置中的第一鏡像存儲裝置改變?yōu)樗龆鄠€鏡像存儲裝置中的不同的鏡像存儲裝置時,垃圾回收命令發(fā)送單元將垃圾回收命令發(fā)送到不再是快速存儲裝置的存儲裝置。
18.一種數據鏡像控制設備,包括: 命令分發(fā)單元,被構造為響應于來自主機的寫入請求將第一寫入命令發(fā)送到多個鏡像存儲裝置,其中,第一寫入命令指示所述多個鏡像存儲裝置存儲請求的數據,請求的數據是在主機存儲的第一數據,寫入請求表示第一數據被寫入到所述多個鏡像存儲裝置中的至少一個鏡像存儲裝置的請求; 內存鎖定設置單元,被構造為響應于寫入請求對位于主機中的第一數據設置內存鎖定,并被構造為響應于第一數據被寫入到所述多個鏡像存儲裝置,解除對位于主機中的第一數據的內存鎖定。
19.如權利要求18所述的數據鏡像控制設備,其中,命令分發(fā)單元被構造為在接收到表示所述多個鏡像存儲裝置中的第一鏡像存儲裝置完成第一數據的寫入的寫入完成消息之后,將第二寫入命令發(fā)送到第一鏡像存儲裝置,其中,第一鏡像存儲裝置是所述多個鏡像存儲裝置中的相對于所述多個鏡像存儲裝置中的其余存儲裝置在最早的時間點完成第一數據的寫入的存儲裝置。
20.如權利要求18所述的數據鏡像控制設備,其中,內存鎖定設置單元被構造為響應于確定所述多個鏡像存儲裝置中的接收到第一寫入命令且未被禁用的每個裝置已經完成第一數據的寫入,解除對位于主機中的第一數據的內存鎖定。
【文檔編號】G06F12/02GK104516793SQ201410509938
【公開日】2015年4月15日 申請日期:2014年9月28日 優(yōu)先權日:2013年9月27日
【發(fā)明者】李柱坪 申請人:三星電子株式會社