專利名稱:將閃存高速緩存集成到大型存儲系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲系統(tǒng),更具體地說,涉及將基于閃存的高速緩存集成到大型存儲系統(tǒng)。
背景技術(shù):
基于閃存的固態(tài)驅(qū)動器(“SSD”)的出現(xiàn)徹底改變了從筆記本電腦到企業(yè)存儲系統(tǒng)的主存儲計算機架構(gòu)?;陂W存的SSD提供的隨機I/O性能和訪問延遲優(yōu)于旋轉(zhuǎn)硬盤驅(qū)動器(“HDD”)幾個數(shù)量級。此外,基于閃存的SSD顯著降低了功耗?;陂W存的存儲器擴展卡成為用于存儲器擴展和改進的工具,即使在網(wǎng)絡(luò)環(huán)境中也是如此。通常,使用快速外圍組件互連(PCI-e)插槽直接將這些擴展卡放置到主機中,從而將這些卡放置在更靠近主機的處理器的位置,而不是更靠近由主機通過網(wǎng)絡(luò)訪問的存儲盤的位置。將擴展卡放置得更靠近處理器可防止來自盤陣列控制器和網(wǎng)絡(luò)協(xié)議的額外延 遲。即使基于閃存的SSD和基于閃存的存儲器擴展卡提供的隨機輸入/輸出(I/O)性能和訪問延遲優(yōu)于HDD幾個數(shù)量級,但隨機讀取/寫入I/O性能在很大程度上取決于與設(shè)備關(guān)聯(lián)的固態(tài)存儲控制器的架構(gòu)。例如,如所指出的,基于閃存的SSD的讀取和寫入延遲通常比HDD低兩個數(shù)量級,但在諸如使用HDD進行存儲的企業(yè)存儲系統(tǒng)之類的大型存儲系統(tǒng)中,動態(tài)隨機存取存儲器(DRAM)高速緩存的延遲仍然優(yōu)于基于閃存的SSD兩個數(shù)量級。就每秒I/O操作數(shù)(“I0PS”)和延遲而言,整體系統(tǒng)性能不僅取決于固態(tài)存儲器控制器的內(nèi)部架構(gòu),而且還在很大程度上取決于整體系統(tǒng)架構(gòu),例如基于閃存的存儲器擴展如何集成到系統(tǒng)以及提供哪些接口。圖I是示出根據(jù)現(xiàn)有技術(shù)的常規(guī)存儲系統(tǒng)100的一個實施例的示意性方塊圖。系統(tǒng)100包括多個I/O機柜(enclosure) 102a-n,它們在一個或多個主機104a_n與一個或多個存儲設(shè)備106a-n之間提供接口。存儲設(shè)備106a-n可以容納在機柜(例如容納一個或多個HDD的盤機柜)中。如在此使用的,I/O機柜指容納各種I/O適配器和連接性設(shè)備以在I/O存儲單元處理器與I/O適配器之間提供通信的設(shè)備。通常,I/O機柜102a-n成對安裝以提供冗余保護。包含在I/O機柜中的I/O適配器通常是主機適配器108a-n或設(shè)備適配器110a-n。I/0機柜具有多個可用插槽,主機適配器108a-n或設(shè)備適配器110a_n可以附接到這些插槽。然而,在許多情況下,I/O機柜保留幾個空置插槽(open slot)以用于擴展或其他用途。主機適配器108a-n是在主機104a_n與I/O機柜102a_n之間提供連接性的適配器。主機104a-n通??缇W(wǎng)絡(luò)112連接到主機適配器108a_n,網(wǎng)絡(luò)112包括諸如路由器、交換機之類的各種設(shè)備。主機104a-n通常使用諸如光纖通道、光纖連接性(FIC0N)、企業(yè)系統(tǒng)連接(ESCON)之類的網(wǎng)絡(luò)技術(shù)或本領(lǐng)域技術(shù)人員知道的其他連接性協(xié)議連接到主機適配器108a-n。設(shè)備適配器110a-n是在設(shè)備(例如存儲設(shè)備106a_n)與1/0機柜102a_n之間提供連接性的設(shè)備。在一個實施例中,設(shè)備適配器110a-n可以是光纖通道仲裁環(huán)(FC-AL)設(shè)備適配器。在一個典型實施例中,每個設(shè)備適配器110a-n可以連接到為存儲設(shè)備106a-n提供通信的兩個單獨交換網(wǎng)絡(luò)。當設(shè)備適配器110a-n連接到存儲設(shè)備106a-n時,它可以使用交換連接通過最短可能路徑傳輸數(shù)據(jù)。通過一個或多個處理器復(fù)合體114a_b促進系統(tǒng)100的各種組件之間的通信。在以典型企業(yè)存儲系統(tǒng)實現(xiàn)的通用架構(gòu)中,使用兩個處理器復(fù)合體114a_b提高可靠性并改進性能。處理器復(fù)合體114a-b通常連接到每個I/O機柜102a-n并包括在主機適配器108a_n與設(shè)備適配器110a-n之間提供通信所必需的邏輯,從而使連接到主機適配器108a-n的主機104a-n能夠經(jīng)由設(shè)備適配器110a-n訪問存儲設(shè)備106a_n。處理器復(fù)合體114a_n在此也可以稱為中央電子設(shè)備復(fù)合體(CEC)。在常規(guī)系統(tǒng)中,處理器復(fù)合體通常包括諸如DRAM 116a_b之類的易失性存儲器以及稱為非易失性存儲裝置(NVS) 118a-b的非易失性存儲器,非易失性存儲器通常被配置為帶后備電源的DRAM。處理器復(fù)合體的存儲器116、118通常用于緩存與通過系統(tǒng)100處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。 在操作中,主機適配器108a-n首先處理來自主機104a_n的讀取和寫入請求,主機適配器108&-11又與處理器復(fù)合體114&交互。處理器復(fù)合體114a管理去往存儲設(shè)備106a-n的邏輯卷的所有讀取和寫入請求。在寫入請求期間,處理器復(fù)合體114a可以使用快速寫入,其中數(shù)據(jù)被緩存到一個處理器復(fù)合體114a的易失性存儲器116a,并且還被寫入到另一個處理器復(fù)合體114b的永久性存儲器118b。處理器復(fù)合體114a然后可以甚至在實際寫入到盤之前,將該寫入報告為完成。這將提供快速寫入延遲。然而,當處理器復(fù)合體存儲器116、118用作數(shù)據(jù)高速緩存時,大小、時間和功率限制可能限制該存儲器的效率。當主機104a_n執(zhí)行讀取操作時,處理器復(fù)合體114a_b使用高性能交換網(wǎng)絡(luò)架構(gòu)從存儲設(shè)備106a-n取回數(shù)據(jù)。當數(shù)據(jù)被取回并返回到主機104a-n時,該數(shù)據(jù)還可以被緩存到易失性存儲器116a-b,以防在未來讀取請求中再次需要該數(shù)據(jù)。在一個實施例中,處理器復(fù)合體114a-b嘗試通過使用諸如自適應(yīng)替換高速緩存中的順序預(yù)取(SARC)之類的算法來預(yù)計未來讀取。只要可能使用此類算法,數(shù)據(jù)便會保存在高速緩存中。如果在被請求數(shù)據(jù)已在高速緩存中的情況下發(fā)生高速緩存命中,則主機104a-n不必等待從存儲設(shè)備106a-n取回數(shù)據(jù)。然而,由于處理器復(fù)合體存儲器116、118的大小、時間和功率限制,這些存儲器的緩存能力可能不會在所有情況下都令人滿意。美國專利7,421,552-B2 (Long, M. , “Techniques for Managing Data within aData Storage System using a Flash-based Memory Vault (使用基于閃存的存儲器庫在數(shù)據(jù)存儲系統(tǒng)中管理數(shù)據(jù)的技術(shù))”)披露了以下技術(shù)使用基于閃存的存儲器管理數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù);使用易失性存儲器存儲高速緩存代表一組主機以及在數(shù)據(jù)存儲系統(tǒng)由主電源供電時代表一組盤驅(qū)動器來執(zhí)行數(shù)據(jù)存儲操作。因此,本領(lǐng)域中需要解決上述問題。
發(fā)明內(nèi)容
從上述討論應(yīng)顯而易見的是,需要一種改進當前存儲架構(gòu)和數(shù)據(jù)緩存系統(tǒng)的裝置、系統(tǒng)和方法。有利的,此類裝置、系統(tǒng)和方法將基于閃存的存儲設(shè)備集成到1/0機柜的一個或多個空閑插槽,以提供改進本領(lǐng)域公知的架構(gòu)和緩存功能的緩存和存儲能力。
開發(fā)了本發(fā)明以響應(yīng)本領(lǐng)域的目前狀況,具體地說,以響應(yīng)本領(lǐng)域中尚未完全由當前可用的存儲系統(tǒng)架構(gòu)解決的問題和需求。相應(yīng)地,開發(fā)了本發(fā)明的一個優(yōu)選實施例,以提供一種用于將閃存高速緩存(flash cache)集成到大型存儲系統(tǒng)的裝置、系統(tǒng)和方法,其克服了上面討論的本領(lǐng)域中許多或全部缺點。用于集成基于閃存的高速緩存的裝置具備多個模塊和設(shè)備。所述實施例中的這些模塊和設(shè)備包括輸入/輸出(“I/O”)機柜模塊、主機適配器、設(shè)備適配器、基于閃存的緩存設(shè)備(“閃存高速緩存”)以及主處理器復(fù)合體。所述I/O機柜模塊包括一個或多個I/O機柜,所述I/O機柜具有多個插槽以容納電子設(shè)備。所述主機適配器連接到所述I/o機柜模塊的第一插槽并被配置為將主機連接到所述I/o機柜。所述設(shè)備適配器連接到所述I/O機柜模塊的第二插槽并被配置為將存儲設(shè)備連接到所述I/o機柜模塊。所述閃存高速緩存連接到所述I/O機柜模塊的第三插槽,并包括被配置為緩存與通過所述I/o機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器。所述主處理器復(fù)合體管理通過所述I/o機柜模塊處理的數(shù)據(jù)請求,方式為與所述主機適配器、設(shè)備適配器以及閃存高速緩存通信以處理所述數(shù)據(jù)請求。 在一個實施例中,所述主處理器復(fù)合體進一步包括動態(tài)隨機存取存儲器(“DRAM”)高速緩存以臨時緩存與通過所述I/O機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。在進一步的實施例中,其中所述主處理器復(fù)合體進一步包括非易失性存儲裝置(“NVS”)高速緩存,所述非易失性存儲裝置(“NVS”)高速緩存包括非易失性存儲設(shè)備以緩存與由所述I/O機柜處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。在一個實施例中,所述主處理器復(fù)合體被配置為將緩存在所述DRAM高速緩存和NVS高速緩存之一中的數(shù)據(jù)離臺到所述閃存高速緩存。在一個實施例中,所述裝置被進一步配置為包括輔助處理器復(fù)合體,所述輔助處理器復(fù)合體用作通過所述I/o機柜模塊處理的數(shù)據(jù)請求的輔助管理器,使得所述輔助處理器復(fù)合體響應(yīng)于所述主處理器復(fù)合體的故障而與所述主機適配器、設(shè)備適配器以及至少一個閃存高速緩存通信以管理數(shù)據(jù)請求。在進一步的實施例中,所述輔助處理器復(fù)合體進一步包括DRAM高速緩存以臨時緩存與由所述I/O機柜處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。在進一步的實施例中,所述輔助處理器復(fù)合體進一步包括NVS高速緩存,所述NVS高速緩存包括非易失性存儲設(shè)備以緩存與由所述I/O機柜處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。在一個實施例中,將所述閃存高速緩存恰好分配給所述主處理器復(fù)合體和輔助處理器復(fù)合體中的一個,其中所述主處理器復(fù)合體和輔助處理器復(fù)合體均被配置為管理通過所述I/O機柜處理的數(shù)據(jù)請求。在進一步的實施例,響應(yīng)于所述主處理器復(fù)合體的故障,將首先分配給所述主處理器復(fù)合體的所述至少一個閃存高速緩存重新分配給所述輔助處理器復(fù)合體。在所述裝置的一個實施例中,將所述閃存高速緩存分成多個區(qū)域,所述區(qū)域包括緩存與讀取數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的讀取緩存區(qū)域以及緩存與寫入數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的寫入緩存區(qū)域。在進一步的實施例中,將所述閃存高速緩存進一步分成補充讀取緩存區(qū)域,所述補充讀取緩存區(qū)域維護已離臺到存儲設(shè)備的數(shù)據(jù)的緩存,以便可以從所述補充讀取緩存區(qū)域取回所述數(shù)據(jù);以及存儲區(qū)域,所述存儲區(qū)域存儲未離臺到存儲設(shè)備的數(shù)據(jù),以便從所述存儲區(qū)域取回所述數(shù)據(jù)。在一個實施例中,所述主處理器復(fù)合體被配置為獨占地使用所述閃存高速緩存以緩存通過所述I/o機柜模塊處理的操作,以便所述主處理器復(fù)合體不使用單獨的DRAM高速緩存和/或NVS高速緩存來緩存操作。還提供了本發(fā)明的一種用于將基于閃存的高速緩存集成到存儲系統(tǒng)的系統(tǒng)。所披露的實施例中的方法實質(zhì)上包括執(zhí)行以上針對所述裝置的操作提供的功能所必需的步驟。所述系統(tǒng)可以包含在各種配置中以將閃存高速緩存集成到I/O機柜的額外插槽。具體地說,在一個實施例中,所述系統(tǒng)包括具有一個或多個I/O機柜的I/O機柜模塊,所述I/O機柜具有多個插槽以容納電子設(shè)備。所述系統(tǒng)優(yōu)選地具有連接到所述I/O機柜模塊的第一插槽的至少一個主機適配器,所述主機適配器被配置為將主機連接到所述I/0機柜模塊。至少一個主機連接到所述至少一個主機適配器。至少一個設(shè)備適配器連接到所述I/O機柜模塊的第二插槽,并且所述設(shè)備適配器被配置為將存儲設(shè)備連接到所述I/O機柜模塊。所述系統(tǒng)還包括連接到所述至少一個設(shè)備適配器的至少一個存儲設(shè)備。所述系統(tǒng) 還包括連接到所述I/O機柜模塊的第三插槽的至少一個基于閃存的緩存設(shè)備(“閃存高速緩存”)。所述閃存高速緩存包括被配置為緩存與通過所述I/o機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器。所述系統(tǒng)還可以包括管理通過所述I/o機柜模塊處理的數(shù)據(jù)請求的主處理器復(fù)合體。所述主處理器復(fù)合體與所述至少一個主機適配器、所述至少一個設(shè)備適配器以及所述至少一個閃存高速緩存通信以管理所述數(shù)據(jù)請求。在所述系統(tǒng)的一個實施例中,所述主機是計算機系統(tǒng),其中所述計算機系統(tǒng)包括至少一個處理器和存儲器。在進一步的實施例中,所述存儲設(shè)備包括硬盤驅(qū)動器和磁帶驅(qū)動器中的一個或多個。還提供了本發(fā)明的一種用于將基于閃存的高速緩存集成到存儲系統(tǒng)的方法。所披露的實施例中的方法實質(zhì)上包括執(zhí)行以上針對所述裝置和系統(tǒng)的操作提供的功能所必需的步驟。在一個實施例中,所述方法包括將至少一個基于閃存的緩存設(shè)備(“閃存高速緩存”)連接到I/o機柜模塊,所述閃存高速緩存包括被配置為緩存與通過所述I/O機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器。所述方法還可以包括在連接到所述I/o機柜模塊的第一插槽的主機適配器處接收數(shù)據(jù)請求。所述主機適配器被配置為將主機連接到所述I/o機柜模塊。所述I/O機柜模塊包括一個或多個I/O機柜,所述I/O機柜具有多個插槽以容納電子設(shè)備,并且所述I/o機柜模塊具有連接到所述I/O機柜模塊的第二插槽的至少一個設(shè)備適配器。所述設(shè)備適配器被配置為將存儲設(shè)備連接到所述I/O機柜模塊。所述方法還可以包括將所述數(shù)據(jù)請求傳送到管理通過所述I/O機柜模塊處理的數(shù)據(jù)請求的主處理器復(fù)合體,以及訪問至少一個基于閃存的緩存設(shè)備(“閃存高速緩存”)以執(zhí)行與所述數(shù)據(jù)請求關(guān)聯(lián)的一個或多個緩存操作。所述閃存高速緩存連接到所述I/o機柜模塊的第三插槽。所述閃存高速緩存包括被配置為緩存與通過所述I/o機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器。在所述方法的進一步實施例中,所述數(shù)據(jù)請求可以是讀取請求,并且訪問所述至少一個閃存高速緩存以執(zhí)行一個或多個緩存操作可以包括從所述閃存高速緩存取回數(shù)據(jù)。在另一個實施例中,所述數(shù)據(jù)請求可以是寫入請求,并且訪問所述至少一個閃存高速緩存以執(zhí)行一個或多個緩存操作可以包括將與所述寫入請求關(guān)聯(lián)的數(shù)據(jù)存儲在所述閃存高速緩存中。在進一步的實施例中,所述方法還可以包括將存儲在所述閃存高速緩存中的數(shù)據(jù)離臺到連接到所述設(shè)備適配器的所述存儲設(shè)備。從其他方面看,本發(fā)明提供了一種存儲在計算機可讀介質(zhì)上并可加載到數(shù)字計算機的內(nèi)部存儲器中的計算機程序,所述計算機程序包括軟件代碼部分,當所述程序在計算機上運行時,所述軟件代碼部分用于執(zhí)行本發(fā)明的步驟。本說明書中對特性、優(yōu)點的引用或類似語言并非暗示可以與本發(fā)明一起實現(xiàn)的所有特性和優(yōu)點應(yīng)在本發(fā)明的任何單個實施例中。相反,將理解,引用所述特性和優(yōu)點的語言指與實施例一起描述的特定特性、優(yōu)點或特征包括在本發(fā)明的 至少一個實施例中。因此,本說明書中對特性、優(yōu)點的討論和類似語言可以(但并不一定)指同一實施例。此外,本發(fā)明的所述特性、優(yōu)點和特性可以以任何適當?shù)姆绞浇M合在一個或多個實施例中。本領(lǐng)域的技術(shù)人員將認識到,可以在沒有特定實施例的一個或多個特定特性或優(yōu)點的情況下實現(xiàn)本發(fā)明。在其他情況下,可以在特定實施例中認識到可能不存在于本發(fā)明的所有實施例中的其他特性和優(yōu)點。
現(xiàn)在將僅通過實例的方式參考下面附圖中示出的優(yōu)選實施例描述本發(fā)明,這些附圖是圖I是示出根據(jù)現(xiàn)有技術(shù)并且其中可以實現(xiàn)本發(fā)明的一個優(yōu)選實施例的常規(guī)存儲系統(tǒng)的一個實施例的示意性方塊圖;圖2是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的具有集成的基于閃存的高速緩存的存儲系統(tǒng)的一個實施例的示意性方塊圖;圖3是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的基于閃存的緩存設(shè)備的一個實施例的示意性方塊圖;圖4是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的具有集成的基于閃存的高速緩存而沒有非易失性存儲高速緩存的存儲系統(tǒng)的一個實施例的示意性方塊圖;圖5是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的僅使用集成的基于閃存的高速緩存的存儲系統(tǒng)的一個實施例的示意性方塊圖;圖6是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于將閃存高速緩存集成到存儲系統(tǒng)的方法的一個實施例的示意性流程圖;以及圖7是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于在存儲系統(tǒng)中處理數(shù)據(jù)請求的方法的一個實施例的示意性流程圖。
具體實施例方式如本領(lǐng)域的技術(shù)人員將理解的,本發(fā)明的各方面可以體現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各方面可以采取完全硬件實施例、完全軟件實施例(包括固件、駐留軟件、微代碼等)或組合了軟件和硬件方面(在此通常被稱為“電路”、“模塊”或“系統(tǒng)”)的實施例的形式。此外,本發(fā)明的各方面可以采取體現(xiàn)在一個或多個計算機可讀介質(zhì)(在介質(zhì)中包含計算機可讀程序代碼)中的計算機程序產(chǎn)品的形式。將本說明書中描述的多個功能單元標記為模塊,以便更具體地強調(diào)它們的實現(xiàn)無關(guān)性。例如,模塊可以被實現(xiàn)為包括定制VLSI電路或門陣列、諸如邏輯芯片、晶體管或其他分離組件之類的現(xiàn)用半導(dǎo)體的硬件電路。模塊還可以在諸如現(xiàn)場可編程門陣列、可編程陣列邏輯、可編程邏輯器件之類的可編程硬件器件中實現(xiàn)。模塊還可以在軟件中實現(xiàn)以便由各種類型的處理器執(zhí)行。例如,標識的可執(zhí)行代碼模塊可以包括一個或多個物理或邏輯的計算機指令塊,所述塊可以例如組織為對象、過程或函數(shù)。然而,標識的模塊的可執(zhí)行代碼不需要在物理上位于一起,而是可以包括存儲在不同位置的不同指令,當所述指令被邏輯地結(jié)合時,將包括所述模塊并實現(xiàn)該模塊的所聲明的目的。實際上,可執(zhí)行代碼的模塊可以是單個指令或多個指令,并且甚至可以分布在數(shù)個不同的代碼段上、多個不同的程序中,以及跨多個存儲設(shè)備。同樣,操作數(shù)據(jù)可以在模塊中被標識和在此示出,并且可以包括在任何適當?shù)男问街胁⒔M織在任何適當類型的數(shù)據(jù)結(jié)構(gòu)中。操作數(shù)據(jù)可以被收集為單個數(shù)據(jù)集,或可以分布在包括不同存儲設(shè)備的不同位置上, 并且可以至少部分地僅作為電子信號存在于系統(tǒng)或網(wǎng)絡(luò)中。如果模塊或模塊部分在軟件中實現(xiàn),則軟件部分存儲在一個或多個計算機可讀介質(zhì)上。 可以使用一個或多個計算機可讀介質(zhì)的任意組合。所述計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是(但不限于)電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置或設(shè)備或它們的任意適當組合。所述計算機可讀存儲介質(zhì)的更具體的實例(非窮舉的列表)將包括以下項具有一條或多條線的電連接、便攜式計算機軟盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式光盤只讀存儲器(⑶-ROM)、光存儲設(shè)備、磁存儲設(shè)備或它們的任意適當組合。在本文檔的上下文中,計算機可讀存儲介質(zhì)可以是任何能夠包含或存儲由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的有形介質(zhì)。計算機可讀信號介質(zhì)可以包括其中包含計算機可讀程序代碼(例如,在基帶中或作為載波的一部分)的傳播數(shù)據(jù)信號。此類傳播信號可以采取各種形式中的任意一種,包括但不限于電磁、光或它們的任意適當組合。計算機可讀信號介質(zhì)可以是任何不同于計算機可讀存儲介質(zhì)并且能夠傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的計算機可讀介質(zhì)。包含在計算機可讀介質(zhì)中的程序代碼可以使用任何適當?shù)慕橘|(zhì)傳輸,包括但不限于無線、線纜、光纜、RF等或它們的任意適當組合。用于執(zhí)行本發(fā)明的各方面的操作的計算機程序代碼可以使用包含一種或多種編程語言的任意組合來編寫,所述編程語言包括諸如Java、Smalltalk、C++之類的面向?qū)ο蟮木幊陶Z言以及諸如“C”編程語言或類似的編程語言之類的常規(guī)過程編程語言。所述程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為獨立的軟件包、部分地在用戶計算機上并部分地在遠程計算機上執(zhí)行,或者完全地在遠程計算機或服務(wù)器上執(zhí)行。在后者的情況中,所述遠程計算機可以通過包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任何類型網(wǎng)絡(luò)與用戶的計算機相連,或者可以與外部計算機進行連接(例如,使用因特網(wǎng)服務(wù)提供商通過因特網(wǎng)連接)。本說明書中對“一個實施例”、“一實施例”的引用或類似語言指結(jié)合該實施例描述的特定特性、結(jié)構(gòu)或特征被包括在本發(fā)明的至少一個實施例中。因此,本說明書中出現(xiàn)的短語“在一個實施例中”、“在一實施例中”和類似語言可以(但是并非一定)都指同一實施例。此外,本發(fā)明的所述特性、結(jié)構(gòu)或特征可以以任何適當?shù)姆绞浇M合在一個或多個實施例中。在以下說明中,提供了大量特定的詳細信息,如編程、軟件模塊、用戶選擇、網(wǎng)絡(luò)事務(wù)、數(shù)據(jù)庫查詢、數(shù)據(jù)庫結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等的實例,以便徹底理解本發(fā)明的實施例。然而,相關(guān)領(lǐng)域的技術(shù)人員將認識到,可以在沒有一個或多個特定的細節(jié)的情況下實現(xiàn)本發(fā)明,或者可以通過其他方法、組件、材料等實現(xiàn)本發(fā)明。在其他情況下,未詳細示出或描述公知的結(jié)構(gòu)、材料或操作以避免使本發(fā)明的各方面變得模糊不清。下面將參考根據(jù)本發(fā)明的實施例的方法、裝置、系統(tǒng)和計算機程序產(chǎn)品的示意性流程圖和/或示意性方塊圖對本發(fā)明的各方面進行描述。將理解,所述示意性流程圖和/或示意性方塊圖的每個方塊以及所述示意性流程圖和/或示意性方塊圖中的方塊的組合 可以由計算機程序指令來實現(xiàn)。這些計算機程序指令可以被提供給通用計算機、專用計算機或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機器,以便通過所述計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的所述指令產(chǎn)生用于實現(xiàn)一個或多個示意性流程圖和/或示意性方塊圖方塊中指定的功能/操作的裝置。這些計算機程序指令也可以被存儲在能夠引導(dǎo)計算機、其他可編程數(shù)據(jù)處理裝置或其他設(shè)備以特定方式執(zhí)行功能的計算機可讀介質(zhì)中,以便存儲在所述計算機可讀介質(zhì)中的所述指令產(chǎn)生一件包括實現(xiàn)在所述一個或多個示意性流程圖和/或示意性方塊圖方塊中指定的功能/操作的指令的制品。所述計算機程序指令還可被加載到計算機、其他可編程數(shù)據(jù)處理裝置或其他設(shè)備,以導(dǎo)致在所述計算機、其他可編程裝置或其他設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的過程,從而在所述計算機或其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程。附圖中的示意性流程圖和/或示意性方塊圖示出了根據(jù)本發(fā)明的各種實施例的裝置、系統(tǒng)、方法和計算機程序產(chǎn)品的可能實施方式的架構(gòu)、功能和操作。在此方面,所述示意性流程圖和/或示意性方塊圖中的每個方塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實現(xiàn)指定的邏輯功能(多個)的一個或多個可執(zhí)行指令。還應(yīng)指出,在某些備選實施方式中,在方塊中說明的功能可以不按圖中說明的順 序發(fā)生。例如,示為連續(xù)的兩個方塊可以實際上被基本同時地執(zhí)行,或者某些時候,取決于所涉及的功能,可以以相反的順序執(zhí)行所述方塊??梢詷?gòu)想其他步驟和方法,它們在功能、邏輯或效果上與所示附圖的一個或多個方塊或其各部分等效。盡管可以在流程圖和/或方塊圖中使用不同的箭頭類型和線條類型,但是應(yīng)理解,它們并非限制相應(yīng)實施例的范圍。實際上,某些箭頭或其他連接器可用來僅指示所述實施例的邏輯流。例如,箭頭可以指示所述實施例的枚舉步驟之間的未指定持續(xù)時間的等待或監(jiān)視周期。還將指出,所述方塊圖和/或流程圖的每個方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執(zhí)行指定功能或操作的基于專用硬件的系統(tǒng)或?qū)S糜布陀嬎? 機指令的組合來實現(xiàn)。圖2是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的具有集成的基于閃存的緩存設(shè)備(“閃存高速緩存”)220a-n的存儲系統(tǒng)200的一個實施例的示意性方塊圖。系統(tǒng)200包括一個或多個I/O機柜202a_n的集合,所述I/O機柜202a_n在一個或多個主機204a-nui —個或多個存儲設(shè)備206a_n之間提供接口。存儲設(shè)備206a_n可以容納在機柜中,例如容納一個或多個HDD或其他類型存儲設(shè)備(例如磁帶驅(qū)動器或光驅(qū)動器)的盤機柜。在一個實施例中,存儲設(shè)備206a-n可以包括可被配置為提供各種類型冗余保護的盤陣列。如在此使用的,I/O機柜集合可以統(tǒng)稱為I/O機柜模塊201。如在此使用的,I/O機柜202a-n指容納各種I/O適配器208a-n、210a_n和連接性設(shè)備以在I/O存儲單元處理器214a-b和I/O適配器208a-n、210a-n之間提供通信的設(shè)備。通常,I/O機柜102a_n成對安裝以提供冗余保護。包含在I/O機柜202a-n中的I/O適配器208a-n、210a_n通常是主機適配器108a_n或設(shè)備適配器210a_n之一。I/O機柜202a_n通常具有多個可用插槽,主機適配器208a-n或設(shè)備適配器210a_n可以附接到這些插槽。然而,如上所述,I/O機柜202a-n可以具備多個空置插槽以用于適配器擴展或其他用途。主機適配器208a_n是在主機204a_n與I/O機柜202a_n之間提供連接性的適配器。主機204a-n通常是諸如個人計算機、膝上型計算機、客戶機之類的計算機器,它們通過 I/O機柜202a-n向各種存儲設(shè)備206a_n或子系統(tǒng)發(fā)出數(shù)據(jù)請求來訪問存儲系統(tǒng)200。主機204a-n通??缇W(wǎng)絡(luò)212連接到主機適配器208a_n,網(wǎng)絡(luò)212通常包括諸如路由器、交換機之類的各種設(shè)備。主機204a-n可以使用諸如光纖通道、光纖連接性(“FIC0N”)、企業(yè)系統(tǒng)連接(“ESC0N”)之類的網(wǎng)絡(luò)技術(shù)或本領(lǐng)域的技術(shù)人員所知的其他連接性協(xié)議連接到主機適配器 108a_n。設(shè)備適配器210a_n是在設(shè)備(例如存儲設(shè)備206a_n)和I/O機柜202a_n之間提供連接性的設(shè)備。在一個實施例中,設(shè)備適配器210a-n可以是光纖通道仲裁環(huán)(“FC-AL”)設(shè)備適配器。一個典型實施例中,每個設(shè)備適配器210a-n可以連接到為存儲設(shè)備206a-n提供通信的兩個單獨交換網(wǎng)絡(luò)。在一個實施例中,當設(shè)備適配器210a-n連接到存儲設(shè)備206a-n時,它可以使用交換連接通過最短可能路徑傳輸數(shù)據(jù)。當然,構(gòu)想了本領(lǐng)域的技術(shù)人員所知的其他類型的連接和通信協(xié)議。通過一個或多個處理器復(fù)合體214a_b促進系統(tǒng)200的各種組件之間的通信。在以典型企業(yè)存儲系統(tǒng)實現(xiàn)的通用架構(gòu)中,使用兩個處理器復(fù)合體214a_b提高可靠性并改進性能。通常一個是主處理器復(fù)合體214a而另一個是輔助處理器復(fù)合體214b。處理器復(fù)合體214a-b通常都連接到每個I/O機柜202a-n并包括在主機適配器208a_n與設(shè)備適配器110a-n之間提供通信的必需邏輯,從而使連接到主機適配器208a-n的主機204a_n能夠經(jīng)由設(shè)備適配器210a-n訪問存儲設(shè)備206a-n。處理器復(fù)合體214a_n在此也可以稱為中央電子復(fù)合體(“CEC”)。在所描述的實施例中,處理器復(fù)合體214a_b包括諸如動態(tài)隨機存取存儲器(“DRAM”)216a-b之類的易失性存儲器以及稱為非易失性存儲裝置(“NVS”)218a_b的非易失性存儲器,非易失性存儲器通常被配置為帶后備電源的DRAM。當然,在其他實施例中,處理器復(fù)合體可以使用本領(lǐng)域的技術(shù)人員所知的其他類型的易失性存儲器和非易失性存儲器。處理器復(fù)合體214a-b的存儲器216、218通常用于緩存與由系統(tǒng)200處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。根據(jù)本發(fā)明的一個優(yōu)選實施例,系統(tǒng)200將閃存高速緩存220a_n結(jié)合到I/O機柜模塊201的空閑插槽中。優(yōu)選地,可以使用多個閃存高速緩存220a-n,并可以將每個閃存高速緩存220a-n分配給特定處理器復(fù)合體214a_b。閃存高速緩存220a_n包括被配置為緩存與通過I/O機柜模塊201處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器。在一個構(gòu)想的實施例中,“基于閃存的”存儲器可以指諸如相變存儲器(“PCM")之類的其他類型的固態(tài)存儲器,這些固態(tài)存儲器可以具有與閃存存儲器類似的屬性,但可以具有改進的性能屬性,具體取決于系統(tǒng)200的配置和架構(gòu)。此外,在某些實施例中,閃存高速緩存220a可以分成兩個或多個部分,每個部分可以由處理器復(fù)合體214a-b之一管理。這樣可使用更少的閃存高速緩存220a-n,從而降低總體成本。在此類實施例中,可以在第二 I/O機柜202b上的第二閃存高速緩存220c中提供數(shù)據(jù)冗余。通過將閃存高速緩存220a_n集成到I/O機柜模塊201的空閑插槽,閃存高速緩存220a-n在不需要對系統(tǒng)200的設(shè)備和組件進行重大修改的情況下與現(xiàn)有架構(gòu)無縫集成的同時,改進了系統(tǒng)200的性能(例如,更好的高速緩存命中率)。此外,閃存高速緩存220a-n可伸縮并可以顯著增長,使之大于常規(guī)系統(tǒng)的DRAM高速緩存216a_b和NVS高速緩存 214a_b。 在所描述的實施例中,閃存高速緩存220a_n作為中間高速緩存運行并與DRAM高速緩存216a-b和NVS高速緩存218a-b —起運行以形成兩層緩存系統(tǒng)。例如,數(shù)據(jù)可以首先緩存在DRAM高速緩存216a-b中,然后在進一步離臺到存儲設(shè)備206a_n之前,離臺到閃存高速緩存220a-n。這允許以就每秒指令數(shù)和延遲而言至少相同的性能特征增強架構(gòu),同時擴展可用高速緩存以改進高速緩存命中率。圖3是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的基于閃存的緩存設(shè)備220a或閃存高速緩存的一個實施例的示意性方塊圖。如示出的,閃存高速緩存220a可以被分為不同的區(qū)域以處理不同的緩存操作。所描述的實施例示出了寫入?yún)^(qū)域302、讀取區(qū)域304、補充讀取區(qū)域306以及存儲區(qū)域308。盡管所述實施例示出了四個不同的區(qū)域,但是構(gòu)想了閃存高速緩存220a可以具備少至一種不同的區(qū)域類型。通常,讀取區(qū)域304用于保存鏡像數(shù)據(jù)副本,其中另一副本或者位于DRAM高速緩存216a、NVS高速緩存218a,或者位于閃存高速緩存220a,而補充讀取區(qū)域306保存不需要鏡像到另一高速緩存中的緩存數(shù)據(jù)。在一個優(yōu)選實施例中,對讀取區(qū)域304的管理由處理器復(fù)合體214a-b之一控制,對補充讀取區(qū)域306的管理由閃存高速緩存200a-n在內(nèi)部完成。寫入?yún)^(qū)域302被配置為臨時存儲與寫入請求關(guān)聯(lián)的數(shù)據(jù)。通常,寫入數(shù)據(jù)被離臺到存儲設(shè)備206a-n或閃存高速緩存220a的讀取區(qū)域。讀取區(qū)域304存儲讀取請求的數(shù)據(jù),以便不需要從存儲設(shè)備206a-n取回數(shù)據(jù),而是直接從閃存高速緩存的讀取區(qū)域304取回數(shù)據(jù)。優(yōu)選地,讀取區(qū)域304可直接由相應(yīng)閃存高速緩存220a-n所在的同一 I/O機柜202a_n中的主機適配器208a-n訪問。補充讀取區(qū)域306用于擴展可用的讀取區(qū)域存儲器以便增加讀取請求的高速緩存命中可能性。存儲區(qū)域308被優(yōu)選地配置為以類似于第0層存儲設(shè)備的方式操作。例如,存儲區(qū)域308可以用于存儲從未離臺到盤的數(shù)據(jù)(例如處理器復(fù)合體214a-b使用的元數(shù)據(jù))或優(yōu)選地存儲在閃存高速緩存220a-n中的數(shù)據(jù)。在一個實施例中,閃存高速緩存220a的存儲區(qū)域308可以被分配邏輯單元編號(“LUN”)以便將區(qū)域作為存儲設(shè)備進行訪問。在某些實施例中,存儲在閃存高速緩存220a的存儲區(qū)域308中的數(shù)據(jù)可以被鏡像到另一閃存高速緩存220b的存儲區(qū)域中以提供冗余保護。因此,寫入請求可以將數(shù)據(jù)存儲在第一閃存高速緩存220a的存儲區(qū)域和第二閃存高速緩存220c的存儲區(qū)域中。優(yōu)選地,第一和第二閃存高速緩存220a、220c位于不同的I/O機柜202a_n中。隨后,讀取請求可以直接從閃存高速緩存220a、220c的存儲區(qū)域取回數(shù)據(jù)。優(yōu)選地,由主機適配器208a接收的讀取請求將從它自身所在的同一 I/O機柜202a中配置的閃存高速緩存220a取回數(shù)據(jù)。在操作中,具有處理器復(fù)合體高速緩存216a-b、218a_b和閃存高速緩存220a_n的系統(tǒng)200以改進的方式處理讀取和寫入請求兩者。對于寫入請求,寫入請求由主機適配器208a接收,并且主機適配器208a詢問主處理器復(fù)合體214a在何處存儲數(shù)據(jù)。處理器復(fù)合體214a發(fā)回響應(yīng),指示應(yīng)將數(shù)據(jù)移動到的位置。通常,處理器復(fù)合體響應(yīng)以兩個位置,即一個易失性DRAM高速緩存216a位置以及輔助處理器復(fù)合體214b的NVS高速緩存218b中的一個非易失性位置,或閃存高速緩存220a-n的寫入?yún)^(qū)域中的一個或兩個位置。在一個實施例中,如果主處理器復(fù)合體214a不可達,則 可以詢問輔助處理器復(fù)合體214b,并且輔助處理器復(fù)合體214b變成新的主處理器復(fù)合體214a。
主處理器復(fù)合體214a將通過在其DRAM高速緩存216a中分配空間來響應(yīng)寫入請求。通常,還將分配輔助處理器復(fù)合體214b的NVS高速緩存218b中的空間以作為緩存數(shù)據(jù)的備份。主機適配器208a然后將數(shù)據(jù)傳輸?shù)接芍魈幚砥鲝?fù)合體214a指示的位置,包括DRAM高速緩存216a和NVS高速緩存218b。隨后,處理器復(fù)合體214a_b則可以將數(shù)據(jù)從DRAM高速緩存216a和NVS高速緩存218b離臺到閃存高速緩存220a-n。處理器復(fù)合體214a_b然后可以將數(shù)據(jù)從閃存高速緩存220a-n離臺到存儲設(shè)備206a_n。為此,通知設(shè)備適配器210a,并且設(shè)備適配器210a將數(shù)據(jù)從閃存高速緩存220a-n離臺到連接到設(shè)備適配器210a的存儲設(shè)備206a-n。優(yōu)選地,使用其中存儲數(shù)據(jù)的閃存高速緩存220a-n所在的同一 I/O機柜202a_n中的設(shè)備適配器210a_n。在某些情況下,可以將數(shù)據(jù)直接從DRAM高速緩存216a或NVS高速緩存218b離臺到存儲設(shè)備206a-n。一旦完成離臺操作,設(shè)備適配器210a就向處理器復(fù)合體214a通知操作完成。一旦將數(shù)據(jù)從閃存高速緩存220a_n離臺到存儲設(shè)備206a_n,主處理器復(fù)合體214a就可以根據(jù)請求相同數(shù)據(jù)的讀取請求,將所述數(shù)據(jù)釋放到閃存高速緩存220a-n的寫入?yún)^(qū)域302中,或?qū)嶋H上將所述數(shù)據(jù)移動到閃存高速緩存220a的補充讀取區(qū)域306以供未來訪問。這允許閃存高速緩存220a-n無效內(nèi)部映射表項,從而減少寫入放大。一旦完成此操作,從閃存高速緩存220a-n向處理器復(fù)合體214a發(fā)送完成消息。在一個實施例中,將數(shù)據(jù)從一個緩存區(qū)域(例如,寫入?yún)^(qū)域302)移動到另一個區(qū)域(例如,補充讀取區(qū)域306)無需實際重新復(fù)制數(shù)據(jù)。相反,更新與閃存高速緩存220a-n關(guān)聯(lián)的元數(shù)據(jù)以反映數(shù)據(jù)的區(qū)域改變。如果主處理器復(fù)合體214a出現(xiàn)故障,則可以將元數(shù)據(jù)信息轉(zhuǎn)儲到輔助處理器復(fù)合體214b的NVS高速緩存218a-b或轉(zhuǎn)儲到閃存高速緩存220a_n自身(例如在存儲區(qū)域308中)。然后,輔助處理器復(fù)合體214b可以接管,從其NVS高速緩存218b或閃存高速緩存220a-n取回元數(shù)據(jù),然后繼續(xù)正常操作。對于讀取請求,主機適配器208a接收讀取請求并詢問處理器復(fù)合體214a以獲得被請求數(shù)據(jù)的位置。處理器復(fù)合體214a_b中的一個或多個響應(yīng)以數(shù)據(jù)位置,所述位置可以在其本地DRAM高速緩存216a-b、其NVS高速緩存218a_b、被分配給處理器復(fù)合體214a_b的閃存高速緩存220a-n的區(qū)域之一中,或在連接到系統(tǒng)200的存儲設(shè)備206a_n上。主機適配器208a然后從所標識的位置取回數(shù)據(jù)并將其提供給主機204a-n。在某些情況下,可能尚未將數(shù)據(jù)從閃存高速緩存的寫入?yún)^(qū)域302移動到讀取區(qū)域304、306。盡管如此,在此類情況下,如果需要,則仍然可以直接從寫入?yún)^(qū)域302取回數(shù)據(jù)。如果從存儲設(shè)備206a-n之一取回數(shù)據(jù),則處理器復(fù)合體214a-b通常使用設(shè)備適配器210a-n取回數(shù)據(jù)。圖4是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的具有集成的基于閃存的高速緩存220a-n而沒有NVS高速緩存218a_b的存儲系統(tǒng)300的一個實施例的示意性方塊圖。在此實施例中,各種閃存高速緩存220a-n仍放置在I/O機柜模塊201的空閑插槽中,但通常連接到處理器復(fù)合體214a-b的NVS高速緩存218a-b被移除。在此實施例中,閃存高速緩存220a-n用作處理器復(fù)合體214a-b的非易失性存儲裝置,以便可以通過避免需要為NVS高速緩存218a-b提供電力而降低成本并提高效率。此外,與包括NVS高速緩存218a-b的實施例相比消耗更少的光纖通道網(wǎng)絡(luò)(fabric)帶寬,同時仍然以閃存高速緩存220a的形式提供可伸縮的寫入高速緩存。系統(tǒng)300的操作也稍有不同,因為從系統(tǒng)300中移除了 NVS高速緩存218a_b。對于寫入請求,主機適配器208a再次詢問主處理器復(fù)合體214a在何處緩存寫入數(shù)據(jù),并且主處理器復(fù)合體214a通過在其DRAM高速緩存216a中以及在閃存高速緩存220a的寫入?yún)^(qū)域302中分配空間來進行響應(yīng)。數(shù)據(jù)被寫入到兩個位置,并且閃存高速緩存220a(而不是NVS高速緩存218b)現(xiàn)在用于提供寫入數(shù)據(jù)的非易失性存儲,而DRAM高速緩存216a用于提供與閃存高速緩存220a相比提高的存儲性能。在一個實施例中,將數(shù)據(jù)直接從DRAM高速緩存216a離臺到存儲設(shè)備206a_n。相應(yīng)地,閃存高速緩存220a-n可以從其寫入?yún)^(qū)域302釋放寫入數(shù)據(jù)。在一個實施例中,通過更新與閃存高速緩存220a關(guān)聯(lián)的元數(shù)據(jù),將數(shù)據(jù)從寫入緩存區(qū)域302移動到補充讀取區(qū)域306 (或讀取區(qū)域304)。然后將此操作完成的信號返回到處理器復(fù)合體214a-b。備選地,在將數(shù)據(jù)離臺到存儲設(shè)備206a-n之前,可以將數(shù)據(jù)從一個閃存高速緩存220a離臺到另一個閃存高速緩存220c。例如,第二閃存高速緩存220c用作第一閃存高速緩存220a與存儲設(shè)備206a-n之間的第二層中間高速緩存。因為數(shù)據(jù)的至少一個副本被存儲在閃存高速緩存220a_n中,所以需要其他智能以隱藏與基于閃存的存儲器關(guān)聯(lián)的明顯過高的寫入延遲(相對于DRAM而言)。在一個實施例中,這可以通過在帶后備電源或通過超級電容器保護的閃存高速緩存中使用環(huán)形緩沖區(qū)來實現(xiàn)。一旦將數(shù)據(jù)傳輸?shù)酱谁h(huán)形緩沖區(qū),閃存高速緩存就可以在數(shù)據(jù)實際被移動到閃存高速緩存之前,立即確認成功的寫入操作。通常,環(huán)形緩沖區(qū)與NVS高速緩存218a-b相比相對較小以便節(jié)省電力和成本,并可以獨立于保存與閃存高速緩存220a-n關(guān)聯(lián)的結(jié)構(gòu)的元數(shù)據(jù)。讀取路徑對應(yīng)于上面針對圖2描述的路徑,只是NVS高速緩存218a_b不再可作為可能的讀取數(shù)據(jù)位置。圖5是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的僅使用閃存高速緩存220a_n而沒有DRAM高速緩存216a-b或NVS高速緩存218a_b的存儲系統(tǒng)400的一個實施例的示意性方塊圖。在所示出的實施例中,先前實施例的DRAM高速緩存216a-b和NVS高速緩存218a_b被連接到I/O機柜模塊201的閃存高速緩存220a-n取代。在一個實施例中,此架構(gòu)利用I/0機柜202a-n之間存在的對等數(shù)據(jù)傳輸可能性,使得系統(tǒng)400能夠在不使用處理器復(fù)合體、214a中的CPU周期而使用到處理器復(fù)合體214a的傳輸帶寬的情況下,將數(shù)據(jù)的第二副本寫入另一 I/O機柜202b中的第二閃存高速緩存220c。在此實施例中,當主機適配器208a接收到寫入請求時,主機適配器208a再次詢問處理器復(fù)合體214a以獲得數(shù)據(jù)所應(yīng)移動到的位置??赡艿奈恢每梢源鎯樵獢?shù)據(jù)402a_b。返回與第一 I/O機柜202a上的第一閃存高速緩存220a對應(yīng)的第一目標位置,并返回與第二 I/O機柜202b上的第二閃存高速緩存220c對應(yīng)的第二目標位置。主機適配器208a然后將寫入數(shù)據(jù)傳輸?shù)絻蓚€不同閃存高速緩存位置上的兩個位置。隨后,可以以類似于上面針對其他實施例描述的方式,將數(shù)據(jù)離臺到盤或移動到閃存高速緩存220a-n中的其他區(qū)域。優(yōu)選地,處理器復(fù)合體214a_b仍然可以維護與閃存高速緩存220a-n關(guān)聯(lián)的元數(shù)據(jù)402a_b的存儲。如果主處理器復(fù)合體214a出現(xiàn)故障,則可以將元數(shù)據(jù)402a-b轉(zhuǎn)儲到輔助處理器復(fù)合體214b或閃存高速緩存220a_n或這兩者。圖6是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于將閃存高速緩存220a_n集成到存儲系統(tǒng)的方法600的一個實施例的示意性流程圖。在披露的實施例中,方法600實 質(zhì)上包括執(zhí)行上面針對所述裝置和系統(tǒng)的操作提供的功能所必需的步驟。方法600開始時,將至少一個閃存高速緩存220a_n連接(602)到I/O機柜模塊201。閃存高速緩存220a-n優(yōu)選地包括被配置為緩存與通過I/O機柜模塊201處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器。I/O機柜模塊201包括一個或多個具有多個插槽以容納電子設(shè)備的I/O機柜2021-n。由連接到I/O機柜模塊201的第一插槽的主機適配器208a接收(604)數(shù)據(jù)請求。所述主機適配器被配置為將主機204a-n連接到I/O機柜模塊201。I/O機柜模塊201具有至少一個連接到I/O機柜模塊201的第二插槽的設(shè)備適配器210a-n。所述設(shè)備適配器被配置為將存儲設(shè)備206a-n連接到I/O機柜模塊201。接下來,主機適配器208a將數(shù)據(jù)請求傳送(606)到管理通過I/O機柜模塊處理的數(shù)據(jù)請求的主處理器復(fù)合體214a。主處理器復(fù)合體214a訪問(608)閃存高速緩存以執(zhí)行與所述數(shù)據(jù)請求關(guān)聯(lián)的一個或多個緩存操作。閃存高速緩存220a-n連接到I/O機柜模塊201的第三插槽。通過這種方式,存儲系統(tǒng)能夠集成基于閃存的高速緩存220a-n。在一個實施例中,所述數(shù)據(jù)請求是讀取請求,并且訪問至少一個閃存高速緩存220a-n以執(zhí)行一個或多個緩存操作包括從閃存高速緩存220a_n取回數(shù)據(jù)。在另一個實施例中,所述數(shù)據(jù)請求是寫入請求,訪問至少一個閃存高速緩存220a-n以執(zhí)行一個或多個緩存操作包括將與所述寫入請求關(guān)聯(lián)的數(shù)據(jù)存儲在閃存高速緩存220a-n中。圖7是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的一種用于在具有閃存高速緩存220a-n的存儲系統(tǒng)中處理包括讀取和寫入請求的數(shù)據(jù)請求的方法700的一個實施例的示意性流程圖。在所披露的實施例中,方法700實質(zhì)上包括執(zhí)行上面針對所述裝置和系統(tǒng)的操作提供的功能所必需的步驟。方法700開始時,主機適配器208a從主機204a_n接收(702)數(shù)據(jù)請求。首先,確定(704)數(shù)據(jù)請求是否是讀取請求。如果數(shù)據(jù)請求是讀取請求,則接下來確定(706)是否可在閃存高速緩存220a-n中提供滿足所述讀取請求的數(shù)據(jù)。如果可在閃存高速緩存220a_n中提供所述數(shù)據(jù),則從閃存高速緩存220a-n取回(708)數(shù)據(jù),優(yōu)選地不訪問任何其他存儲設(shè)備。如果數(shù)據(jù)不在閃存高速緩存220a-n中,則從存儲設(shè)備206a_n取回(710)數(shù)據(jù)。在某些實施例中,構(gòu)想了也可以從與處理器復(fù)合體214a-b關(guān)聯(lián)的易失性高速緩存(例如DRAM高速緩存216a)或非易失性高速緩存(例如NVS高速緩存218a)取回數(shù)據(jù)。如果確定(704)數(shù)據(jù)請求不是讀取請求而是寫入請求,則將數(shù)據(jù)緩存(712)到閃存高速緩存220a的寫入?yún)^(qū)域302。在一個實施例中,所述數(shù)據(jù)可以首先被寫入到非易失性DRAM高速緩存216a,然后被離臺到閃存高速緩存220a。在進一步的實施例中,可以將寫入到閃存高速緩存220a的寫入?yún)^(qū)域302的數(shù)據(jù)離臺(714)到存儲設(shè)備206a_n。通過這種方式,可以以最少的架構(gòu)改變,使用集成到存儲系統(tǒng)中的閃存高速緩存來處理數(shù)據(jù)請求。所述方法改進了高速緩存命中概率,并在某些情況下,降低了成本并提高了存儲系統(tǒng)的整體性倉泛。本發(fā)明的優(yōu)選實施例可以以其他特定形式體現(xiàn)而不偏離本發(fā)明的基本特征。從任何角度來說,都將所述實施例僅視為示例性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明來指示。在權(quán)利要求的等效含義和范圍內(nèi)的所有改變都將包含在 權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于將基于閃存的高速緩存集成到存儲系統(tǒng)的裝置,所述裝置包括 輸入/輸出(I/o)機柜模塊,其包括一個或多個I/O機柜,所述I/O機柜具有多個插槽以容納電子設(shè)備,所述I/o機柜模塊的第一插槽被配置為容納至少一個主機適配器,所述I/o機柜模塊 的第二插槽被配置為容納至少一個設(shè)備適配器; 至少一個基于閃存的緩存設(shè)備(“閃存高速緩存”),其用于連接到所述I/o機柜模塊的第三插槽,所述閃存高速緩存包括被配置為緩存與通過所述I/o機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器;以及 主處理器復(fù)合體,其用于管理通過所述I/o機柜模塊處理的數(shù)據(jù)請求,所述主處理器復(fù)合體被配置為與至少一個主機適配器、至少一個設(shè)備適配器以及所述至少一個閃存高速緩存通信以管理所述數(shù)據(jù)請求。
2.根據(jù)權(quán)利要求I的裝置,其中所述主處理器復(fù)合體進一步包括動態(tài)隨機存取存儲器(DRAM)高速緩存以臨時緩存與通過所述I/O機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。
3.根據(jù)權(quán)利要求2的裝置,其中所述主處理器復(fù)合體進一步包括非易失性存儲裝置(NVS)高速緩存,所述非易失性存儲裝置(NVS)高速緩存包括非易失性存儲設(shè)備以緩存與由所述I/O機柜處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。
4.根據(jù)權(quán)利要求3的裝置,其中所述主處理器復(fù)合體被配置為將緩存在所述DRAM高速緩存和NVS高速緩存之一中的數(shù)據(jù)離臺到所述閃存高速緩存。
5.根據(jù)任一上述權(quán)利要求的裝置,還包括輔助處理器復(fù)合體,所述輔助處理器復(fù)合體被配置為用作通過所述I/O機柜模塊處理的數(shù)據(jù)請求的輔助管理器,所述輔助處理器復(fù)合體被配置為響應(yīng)于所述主處理器復(fù)合體的故障而與所述主機適配器、設(shè)備適配器以及至少一個閃存高速緩存通信以管理數(shù)據(jù)請求。
6.根據(jù)權(quán)利要求5的裝置,其中所述輔助處理器復(fù)合體進一步包括DRAM高速緩存以臨時緩存與由所述I/O機柜處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6的裝置,其中所述輔助處理器復(fù)合體進一步包括NVS高速緩存,所述NVS高速緩存包括非易失性存儲設(shè)備以緩存與由所述I/O機柜處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)。
8.根據(jù)任一上述權(quán)利要求的裝置,其中將所述至少一個閃存高速緩存恰好分配給所述主處理器復(fù)合體和輔助處理器復(fù)合體中的一個,其中所述主處理器復(fù)合體和輔助處理器復(fù)合體均被配置為管理通過所述I/O機柜處理的數(shù)據(jù)請求。
9.根據(jù)權(quán)利要求8的裝置,其中響應(yīng)于所述主處理器復(fù)合體的故障,將首先分配給所述主處理器復(fù)合體的所述至少一個閃存高速緩存重新分配給所述輔助處理器復(fù)合體。
10.根據(jù)權(quán)利要求I至7中的任一權(quán)利要求的裝置,其中將所述至少一個閃存高速緩存分成多個區(qū)域,所述區(qū)域包括緩存與讀取數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的讀取緩存區(qū)域以及緩存與寫入數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的寫入緩存區(qū)域。
11.根據(jù)權(quán)利要求10的裝置,其中將所述至少一個閃存高速緩存進一步分成補充讀取緩存區(qū)域,所述補充讀取緩存區(qū)域維護已離臺到存儲設(shè)備的數(shù)據(jù)的緩存,以便可以從所述補充讀取緩存區(qū)域取回所述數(shù)據(jù)。
12.根據(jù)權(quán)利要求10的裝置,其中將所述至少一個閃存高速緩存進一步分成存儲區(qū)域,所述存儲區(qū)域用于存儲未離臺到存儲設(shè)備的數(shù)據(jù),以便從所述存儲區(qū)域取回所述數(shù)據(jù)。
13.一種用于將基于閃存的高速緩存集成到存儲系統(tǒng)的系統(tǒng),所述系統(tǒng)包括 輸入/輸出(“I/o”)機柜模塊,其包括一個或多個I/O機柜,所述I/O機柜具有多個插槽以容納電子設(shè)備; 至少一個主機適配器,其用于連接到所述I/O機柜模塊的第一插槽,所述主機適配器被配置為將主機連接到所述I/o機柜模塊; 至少一個主機,其用于連接到所述至少一個主機適配器; 至少一個設(shè)備適配器,其用于連接到所述I/o機柜模塊的第二插槽,所述設(shè)備適配器被配置為將存儲設(shè)備連接到所述I/o機柜模塊; 至少一個存儲設(shè)備,其用于連接到所述至少一個設(shè)備適配器; 至少一個基于閃存的緩存設(shè)備(“閃存高速緩存”),其用于連接到所述I/o機柜模塊的第三插槽,所述閃存高速緩存包括被配置為緩存與通過所述I/O機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器;以及 主處理器復(fù)合體,其用于管理通過所述I/o機柜模塊處理的數(shù)據(jù)請求,所述主處理器復(fù)合體用于與所述至少一個主機適配器、所述至少一個設(shè)備適配器以及所述至少一個閃存高速緩存通信以管理所述數(shù)據(jù)請求。
14.根據(jù)權(quán)利要求13的系統(tǒng),其中所述主機包括計算機系統(tǒng),所述計算機系統(tǒng)包括至少一個處理器和存儲器。
15.根據(jù)權(quán)利要求13的系統(tǒng),其中所述存儲設(shè)備包括硬盤驅(qū)動器和磁帶驅(qū)動器中的一個或多個。
16.一種用于將基于閃存的高速緩存集成到存儲系統(tǒng)的方法,所述方法包括以下步驟 將至少一個基于閃存的緩存設(shè)備(“閃存高速緩存”)連接到I/O機柜模塊,所述閃存高速緩存包括被配置為緩存與通過所述I/o機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器,所述I/o機柜模塊包括一個或多個I/O機柜,所述I/O機柜具有多個插槽以容納電子設(shè)備; 在連接到所述I/o機柜模塊的第一插槽的主機適配器處接收數(shù)據(jù)請求,所述主機適配器被配置為將主機連接到所述I/o機柜模塊,所述I/O機柜模塊具有至少一個連接到所述I/o機柜模塊的第二插槽的設(shè)備適配器,所述設(shè)備適配器被配置為將存儲設(shè)備連接到所述I/o機柜模塊; 將所述數(shù)據(jù)請求傳送到管理通過所述I/o機柜模塊處理的數(shù)據(jù)請求的主處理器復(fù)合體;以及 訪問所述至少一個基于閃存的緩存設(shè)備(“閃存高速緩存”)以執(zhí)行與所述數(shù)據(jù)請求關(guān)聯(lián)的一個或多個緩存操作,所述閃存高速緩存連接到所述I/o機柜模塊的第三插槽。
17.根據(jù)權(quán)利要求16的方法,其中所述數(shù)據(jù)請求包括讀取請求,并且其中訪問所述至少一個閃存高速緩存以執(zhí)行一個或多個緩存操作的步驟包括從所述閃存高速緩存取回數(shù)據(jù)的步驟。
18.根據(jù)權(quán)利要求14的方法,其中所述數(shù)據(jù)請求包括寫入請求,并且其中訪問至少一個閃存高速緩存以執(zhí)行一個或多個緩存操作的步驟包括將與所述寫入請求關(guān)聯(lián)的數(shù)據(jù)存儲在所述閃存高速緩存中的步驟。
19.一種用于促進計算環(huán)境中的請求處理的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括 計算機可讀存儲介質(zhì),其可由處理電路讀取并存儲指令以便由所述處理電路執(zhí)行以執(zhí)行根據(jù)權(quán)利要求16至18中的任一權(quán)利要求的方法。
全文摘要
一種I/O機柜模塊,其具備一個或多個I/O機柜,所述I/O機柜具有多個插槽以容納電子設(shè)備。主機適配器連接到所述I/O機柜模塊的第一插槽并被配置為將主機連接到所述I/O機柜。設(shè)備適配器連接到所述I/O機柜模塊的第二插槽并被配置為將存儲設(shè)備連接到所述I/O機柜模塊。閃存高速緩存連接到所述I/O機柜模塊的第三插槽,并包括被配置為緩存與通過所述I/O機柜模塊處理的數(shù)據(jù)請求關(guān)聯(lián)的數(shù)據(jù)的基于閃存的存儲器。主處理器復(fù)合體管理通過所述I/O機柜模塊處理的數(shù)據(jù)請求,方式為與所述主機適配器、設(shè)備適配器以及閃存高速緩存通信以處理所述數(shù)據(jù)請求。
文檔編號G06F12/08GK102763091SQ201180009703
公開日2012年10月31日 申請日期2011年1月7日 優(yōu)先權(quán)日2010年2月17日
發(fā)明者A·E·桑切斯, E·埃萊夫特里烏, J·S·海登二世, K·J·阿什, L·M·古樸塔, M·T·本哈塞, R·哈斯, R·普賴特卡, Y-C·許, 胡曉宇 申請人:國際商業(yè)機器公司