處理序列輸入/輸出串流的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明有關(guān)于存儲電腦數(shù)據(jù)的裝置及方法,尤指一種處理序列輸入/輸出串流的裝置及方法。
【背景技術(shù)】
[0002]存儲數(shù)字檔案、數(shù)字文件、數(shù)字圖片、數(shù)字影像及其他數(shù)字數(shù)據(jù)的需求持續(xù)地快速增加。連接于數(shù)據(jù)的電子存儲,包含有一個或多個的數(shù)據(jù)存儲控制器的系統(tǒng)已經(jīng)設(shè)計出來。存儲控制器接收來自于主機電腦的數(shù)據(jù)讀取請求以及數(shù)據(jù)寫入請求,并且控制一個或多個有形的存儲裝置,以便有利于存儲來自主機電腦的請求數(shù)據(jù)或者提供請求數(shù)據(jù)至主機電腦。
[0003]存儲控制器通常會緩沖讀取數(shù)據(jù)請求與寫入數(shù)據(jù)請求,經(jīng)常將主機數(shù)據(jù)讀取請求以及主機數(shù)據(jù)寫入請求轉(zhuǎn)變?yōu)槿蒎e式磁盤陣列、存儲裝置讀取請求、或存儲裝置寫入請求。許多的存儲控制器將讀取數(shù)據(jù)以及寫入數(shù)據(jù)存儲于數(shù)個快取記憶體,該些快取記憶體包含一部分的存儲控制器??烊∮洃涹w的體積相較于外部存儲裝置(例如硬盤)較小,而且通常數(shù)量級較快。然而,快取記憶體每一位元組的成本明顯地大于存儲裝置,因此快取記憶體的存儲空間相對應(yīng)的較小,以便降低成本。目前有需要一種快取記憶體,其可以有效率的運作,以便所有連接于主機電腦的存儲控制器的效能能夠最大化。
[0004]主機電腦通過提供隨機或序列的輸入/輸出請求來與數(shù)據(jù)存儲系統(tǒng)相互作用。關(guān)于序列的輸入/輸出串流請求,希望存儲控制器盡可能處理許多序列的輸入/輸出串流,以使得效能最大化。序列的輸入/輸出串流包含連續(xù)輸入/輸出請求的序列,而該序列針對相同的存儲裝置、邏輯區(qū)域或虛擬磁盤。當(dāng)相同的序列的輸入/輸出串流可為讀取請求,其他序列的輸入/輸出串流可為寫入請求。
【發(fā)明內(nèi)容】
[0005]本發(fā)明解決現(xiàn)有技術(shù)的缺點。在本發(fā)明的實施例中,提供一種于存儲控制器中有效處理序列輸入/輸出串流的方法。當(dāng)存儲控制器接收來自主機電腦的主機輸入/輸出請求時,則通過存儲控制器判斷主機輸入/輸出請求是否與有效串流相符。如果主機輸入/輸出請求與有效串流相符,則通過存儲控制器對于與有效串流相符的有效表的現(xiàn)存的有效表入口進行更新。如果主機輸入/輸出請求與有效串流不相符,則通過存儲控制器將非有效表的非有效表入口轉(zhuǎn)變?yōu)橛行П淼男碌挠行П砣肟?。非有效表存儲可用但未配置的存儲控制器記憶體資源,而有效表存儲配置存儲控制器記憶體資源。有效表的相對兩端包含有有效表頭以及有效表尾。有效表頭與最近使用最多的有效表入口相符,而有效表尾與最近使用最少的有效表入口相符。
[0006]在本發(fā)明的其他實施例中,提供一種存儲控制器,使得電腦可以有效率處理序列輸入/輸出串流。該存儲控制器包含一處理器以及一記憶體,而記憶體與處理器耦接。記憶體包含一有效表,該有效表存儲配置的存儲控制器記憶體資源。有效表的相對兩端分別包含一有效表頭以及一有效表尾,而有效表頭與最近使用最多的有效表入口相符。有效表尾與最近最少使用的有效表入口相符。記憶體也包含一非有效表,非有效表存儲可用但不配置的記憶體資源。當(dāng)存儲控制器接收來自主機電腦的主機輸入/輸出請求,存儲控制器判斷主機輸入/輸出請求是否與有效串流相符。如果主機輸入/輸出串流與有效串流相符,存儲控制器對于與有效串流相符的有效表的現(xiàn)存的有效表入口進行更新。如果主機輸入/輸出請求與有效串流不相符,存儲控制器將非有效表的非有效表入口轉(zhuǎn)變?yōu)橛行П淼男碌挠行П砣肟?,而且架?gòu)新的有效表入口。
[0007]在本發(fā)明的其他實施例中,提供一種可有效處理序列輸入/輸出請求的系統(tǒng)。該系統(tǒng)包含一主機電腦、一耦接于主機電腦的存儲控制器、以及一個或多個耦接于存儲控制器的存儲裝置。存儲控制器包含一處理器以及一耦接于處理器的記憶體。該記憶體包含數(shù)個有效表入口,對于主機輸入/輸出請求的不相同的序列輸入/輸出串流,每個有效表入口與配置的記憶體資源相符。每個有效表入口包含一時間上次選中(time last hit),時間上次選中為針對于序列輸入/輸出串流的最近接收的主機輸入/輸出請求的時間標記。記憶體也包含數(shù)個非有效表入口,為了新的序列輸入/輸出串流,每個非有效表入口與可用記憶體資源相符。當(dāng)存儲控制器接收來自主機電腦的主機輸入/輸出請求,判斷出主機輸入/輸出請求不相符于有效表中的序列輸入/輸出串流,以及非有效表中沒有非有效表入口之時,存儲控制器將現(xiàn)存的有效表入口轉(zhuǎn)變?yōu)橐粋€新的有效表入口。該新的有效表入口與接收的主機輸入/輸出請求相符。
[0008]本發(fā)明的優(yōu)點在于:針對序列輸入/輸出讀取以及寫入串流,有效率地使用存儲控制器記憶體資源。在任何已知時序,所有的存儲控制器具有一定量的機上記憶體資源。本發(fā)明將有限的記憶體資源配置于序列輸入/輸出串流,使得資源的使用效率達到極致。
[0009]本發(fā)明的另一優(yōu)點在于:利用限量的歷史數(shù)據(jù)來管理進行中的序列輸入/輸出串流。因此,小的記憶空間被配置于串流追蹤大數(shù)據(jù)(stream tracking metadata),意指有更多可用的空間作其他使用,包含存儲讀取與寫入快取數(shù)據(jù)。
[0010]本發(fā)明的實施例的附加特征與優(yōu)點明顯地揭露于說明書,特別是可與附圖共同參酌。
【附圖說明】
[0011]圖la繪示本發(fā)明第一實施例的非主機為基礎(chǔ)型的數(shù)據(jù)存儲系統(tǒng)的方塊圖;
[0012]圖lb繪示本發(fā)明第二實施例的非主機為基礎(chǔ)型的數(shù)據(jù)存儲系統(tǒng)的方塊圖;
[0013]圖lc繪示本發(fā)明第三實施例的非主機為基礎(chǔ)型的數(shù)據(jù)存儲系統(tǒng)的方塊圖;
[0014]圖2a繪示本發(fā)明第一實施例的主機為基礎(chǔ)型的數(shù)據(jù)存儲系統(tǒng)的方塊圖;
[0015]圖2b繪示本發(fā)明第二實施例的主機為基礎(chǔ)型的數(shù)據(jù)存儲系統(tǒng)的方塊圖;
[0016]圖2c繪示本發(fā)明第三實施例的主機為基礎(chǔ)型的數(shù)據(jù)存儲系統(tǒng)的方塊圖;
[0017]圖3繪示本發(fā)明一實施例的數(shù)據(jù)存儲系統(tǒng)的方塊圖;
[0018]圖4繪示本發(fā)明一實施例的主機數(shù)據(jù)串流的方塊圖;
[0019]圖5繪示本發(fā)明第一實施例的主機數(shù)據(jù)串流的示意圖;
[0020]圖6a繪示本發(fā)明第二實施例的主機數(shù)據(jù)串流的示意圖;
[0021]圖6b繪示本發(fā)明一實施例的叢發(fā)參數(shù)的示意圖;
[0022]圖7繪示本發(fā)明一實施例的每個叢發(fā)中未處理輸入/輸出的示意圖;
[0023]圖8繪示本發(fā)明一實施例的邏輯區(qū)域、虛擬磁盤與存儲裝置大數(shù)據(jù)的示意圖;
[0024]圖9a繪示本發(fā)明一實施例的存儲于數(shù)據(jù)串流大數(shù)據(jù)記憶體內(nèi)的有效表與非有效表的不意圖;
[0025]圖9b繪不本發(fā)明一實施例的存儲于有效表入口的串流大數(shù)據(jù)的不意圖;
[0026]圖10繪示本發(fā)明一實施例的指令完成步驟的流程圖;
[0027]圖11繪示本發(fā)明一實施例的新的輸入/輸出請求更新步驟的流程圖;
[0028]圖12繪示本發(fā)明一實施例的指令完成步驟的流程圖;
[0029]圖13繪示本發(fā)明一實施例的輸入/輸出請求更新步驟的流程圖;
[0030]圖14繪示本發(fā)明一實施例的串流群集處理的流程圖;
[0031]圖15a繪示本發(fā)明第一實施例的單一舊串流再利用步驟的流程圖;
[0032]圖15b繪示本發(fā)明第二實施例的預(yù)定數(shù)目舊串流再利用步驟的流程圖;
[0033]圖15c繪示本發(fā)明第三實施例的所有舊串流再利用步驟的流程圖;
[0034]圖16繪示本發(fā)明一實施例的有效串流架構(gòu)步驟的流程圖;以及
[0035]圖17繪示本發(fā)明一實施例的移動視窗調(diào)整步驟的流程圖。
[0036]其中,附圖標記說明如下:
[0037]100數(shù)據(jù)存儲系統(tǒng)104主機電腦
[0038]108存儲控制器108a冗余存儲控制器
[0039]108b冗余存儲控制器112主機匯流排
[0040]116a_ 116η存儲裝置120存儲裝置匯流排[0041 ] 124存儲子系統(tǒng)128數(shù)據(jù)存儲系統(tǒng)
[0042]132存儲子系統(tǒng)136數(shù)據(jù)存儲系統(tǒng)
[0043]140內(nèi)部控制器通訊鏈路
[0044]200數(shù)據(jù)存儲系統(tǒng)204數(shù)據(jù)存儲系統(tǒng)
[0045]208數(shù)據(jù)存儲系統(tǒng)
[0046]300數(shù)據(jù)存儲系統(tǒng)308、308a、308b主機數(shù)據(jù)串流
[0047]312中央處理器316記憶體
[0048]324讀取數(shù)據(jù)快取記憶體328寫入數(shù)據(jù)快取記憶體
[0049]320數(shù)據(jù)串流大數(shù)據(jù)332主機輸入/輸出請求
[0050]340計時器
[0051]404主機叢發(fā)0 412主機叢發(fā)1
[0052]420主機叢發(fā)2 428主機叢發(fā)3
[0053]440輸入/輸出長度444輸入/輸出地址
[0054]504、504a-504c、504g-504j、504n-504q 主機輸入 / 輸出請求
[0055]504d、504e、504f、504k、5041、504m 非序列主機輸入 / 輸出請求
[0056]508串流視窗512移動視窗
[0057]516輸入/輸出空間520邏輯區(qū)塊地址范圍
[0058]524開啟邏輯區(qū)塊地址528指定時間
[0059]532結(jié)束邏輯區(qū)塊地址
[0060]608叢發(fā)尺寸612時差[0061 ] 616 叢發(fā) 616a 叢發(fā) 0
[0062]616b 叢發(fā) 1 616c 叢發(fā) 2
[0063]616d 叢發(fā) 3 616e 叢發(fā) 4
[0064]616f叢發(fā)5 620叢發(fā)長度
[0065]624上次叢發(fā)后的時間
[0066]704逾期輸入/輸出708指令完成
[0067]712停止計時器720存儲停止時間標記
[0068]804a-804e邏輯區(qū)域808a_808e大數(shù)據(jù)集合
[0069]904非有效表904a_904j串流資源
[0070]908有效表912a_912j有效串流
[0071]924串流時間上次選中928串流視窗邏輯區(qū)塊地址上限
[0072]932串流視窗邏輯區(qū)塊地址下限
[0073]936移動視窗邏輯區(qū)塊地址上限
[0074]940移動視窗邏輯區(qū)塊地址下限
[0075]944串流回收利用時間
[0076]948上次叢發(fā)序列后的時間
[0077]948a-948j上次叢發(fā)后的時間
[0078]952上次叢發(fā)指標后的目前時間
[0079]960串流逾期輸入/輸出
[0080]964a叢發(fā)開始時間
[0081]964b叢發(fā)停止時間
【具體實施方式】
[0082]針對主機電腦序列讀取請求與寫入請求,本發(fā)明提出一種存儲控制器的序列輸入/輸出串流的資源配置的改良方法。為了達成通過限制主機板上記憶體資源的數(shù)量,來降低存儲控制器的成本之目的,需要改良序列輸入/輸出的處理效率。
[0083]改良序列輸入/輸出效能的一種簡單方法,就是盡可能地增加存儲控制器記憶體的數(shù)量,以便對于目前所有有效的輸入/輸出串流進行追蹤以及提供快取記憶體配置。然而,這樣通常會使得存儲控制器記憶體的內(nèi)部,裝滿了一些主機電腦不曾請求或很晚請求的很少取用的數(shù)據(jù)或沒有價值的數(shù)據(jù)。此外,系統(tǒng)內(nèi)的存儲控制器與復(fù)數(shù)個主機電腦相耦合,將快取記憶體內(nèi)裝滿指定主機電腦之大量的數(shù)據(jù),會妨礙其他的主機電腦來使用此存儲控制器記憶體內(nèi)的資源,嚴重地限制其他主機電腦的讀取及/或?qū)懭胄堋?br>[0084]每個主機電腦通過執(zhí)行應(yīng)用程序或其他程序來發(fā)出讀取數(shù)據(jù)請求與寫入數(shù)據(jù)請求。在大部分的情況下,不相同的主機電腦所執(zhí)行的應(yīng)用程序也不相同。因此,每個主機電腦發(fā)出不同的序列讀取請求集或?qū)懭胝埱蠹?即為已知的主機串流)。已知的主機電腦可發(fā)出復(fù)數(shù)個主機串流。
[0085]對于提供相對穩(wěn)定讀取請求串流的主機電腦而言,靜態(tài)的讀取快取記憶體之大小是可以勝任的,但對于發(fā)出讀取請求叢發(fā)(burst)至存儲控制器的主機電腦而言,卻不是這么一回事。叢發(fā)為來自相同主機電腦的序列主機讀取請求的連序群組。主機讀取請求叢發(fā)創(chuàng)造了高的初始序列深度(queue depth)。如果主機讀取請求叢發(fā)增加至大于讀取快取的靜態(tài)先行讀取空間,則主機串流終究會追上預(yù)先讀取,而快取失誤將隨著每個叢發(fā)發(fā)生,因此降低了讀取效能。
[0086]存儲控制器有需要對于所有的主機串流維持重要統(tǒng)計數(shù)字的追蹤,并且配置限量的記憶體資源至最有效的序列輸入/輸出串流。非有效串流,或較少利用的串流,或較舊的串流會被回收以提供記憶體資源給較新以及較有效的串流。
[0087]圖la繪示本發(fā)明第一實施例的非主機為基礎(chǔ)型的數(shù)據(jù)存儲系統(tǒng)100的元件方塊圖。
[0088]數(shù)據(jù)存儲系統(tǒng)100包含一個或數(shù)個主機電腦104。主機電腦104—般為伺服器,但是也可為桌上型電腦或行動型電腦。主機電腦104執(zhí)行應(yīng)用程序而產(chǎn)生讀取請求以及寫入請求,通過主機匯流排112(或網(wǎng)絡(luò))將讀取請求以及寫入請求傳送至存儲控制器108。在本實施例中,主