專利名稱:存儲服務(wù)器的自底向上高速緩存結(jié)構(gòu)的制作方法
相關(guān)申請的交叉引用本發(fā)明要求于2003年10月20日提交的美國專利臨時申請第60/512,728號的優(yōu)先權(quán),該申請通過引用包含在此。
背景技術(shù):
本發(fā)明涉及耦合至網(wǎng)絡(luò)的存儲服務(wù)器。
數(shù)據(jù)是所有計算處理用作基礎(chǔ)的底層資源。隨著因特網(wǎng)和電子商務(wù)近年來的爆炸性發(fā)展,極大地增加了對數(shù)據(jù)存儲系統(tǒng)的需求。數(shù)據(jù)存儲系統(tǒng)包括一個或多個存儲服務(wù)器以及一個或多個客戶機或用戶系統(tǒng)。存儲服務(wù)器處理客戶機的讀和寫請求(也被稱為I/O請求)。眾多研究致力于使得存儲服務(wù)器能夠更快和更有效地處理I/O請求。
在過去的十年以來,作為引起CPU性能和網(wǎng)絡(luò)速度顯著增長的技術(shù)進步的結(jié)果,顯著地改進了存儲服務(wù)器的I/O請求處理能力。類似地,由于諸如RAID(廉價磁盤冗余陣列)等存儲設(shè)備級的數(shù)據(jù)管理技術(shù)的改進以及大范圍高速緩存的使用,也極大地改進了數(shù)據(jù)存儲系統(tǒng)的吞吐量。
與此相反,諸如PCI總線等系統(tǒng)互連的性能增長未跟上CPU和外設(shè)在同一時期內(nèi)前進的步伐。作為結(jié)果,系統(tǒng)互連成為高性能服務(wù)器的主要性能瓶頸。該瓶頸問題普遍地由計算機體系結(jié)構(gòu)和系統(tǒng)共同體(community)實現(xiàn)。為解決該瓶頸問題進行了大量研究。該領(lǐng)域的一個值得注意的研究努力涉及通過用PCI-X或InfiniBandTM替代PCI來增加系統(tǒng)互連的帶寬。PCI-X表示“PCI擴展”,它是將PCI的速度從133Mbps提高到1GBps之多的增強的PCI總線。與共享總線相對比,InfiniBandTM技術(shù)使用交換結(jié)構(gòu)來提供更高的帶寬。
發(fā)明簡述本發(fā)明的實施例涉及具有最小化系統(tǒng)互連上的數(shù)據(jù)通信量的改進的高速緩存結(jié)構(gòu)的存儲服務(wù)器。在該存儲服務(wù)器中,最低級高速緩存(例如,RAM)位于結(jié)合網(wǎng)絡(luò)接口卡(NIC)和存儲設(shè)備接口(例如,主機總線適配器)的功能的嵌入式控制器上。從網(wǎng)絡(luò)接收或?qū)⑾蚓W(wǎng)絡(luò)發(fā)送的存儲數(shù)據(jù)被高速緩存在該最低級高速緩存中,且僅將與這些存儲數(shù)據(jù)相關(guān)的元數(shù)據(jù)傳遞給服務(wù)器的CPU系統(tǒng)(也被稱為“主處理器”)以供處理。
當(dāng)高速緩存的數(shù)據(jù)超過最低級高速緩存的容量時,數(shù)據(jù)被移至通常遠大于控制器上的RAM的主機RAM。控制器上的高速緩存被稱為1級(L-1)高速緩存,主處理器上的高速緩存被稱為2級(L-2)高速緩存。該新的系統(tǒng)被稱為自底向上高速緩存結(jié)構(gòu)(BUCS),與傳統(tǒng)的自頂向下高速緩存形成對比,在后者中,最高級高速緩存是最小且最快的,在分級結(jié)構(gòu)中越低則高速緩存越大且越慢。
在一個實施例中,一種耦合至網(wǎng)絡(luò)的存儲服務(wù)器包括,包含中央處理單元(CPU)和第一存儲器的主機模塊;耦合該主機模塊的系統(tǒng)互連;以及包含處理器、耦合至網(wǎng)絡(luò)的網(wǎng)絡(luò)接口設(shè)備、耦合至存儲子系統(tǒng)的存儲接口設(shè)備和第二存儲器的集成控制器。第二存儲器定義臨時性存儲將被讀出給網(wǎng)絡(luò)或?qū)懭氪鎯ψ酉到y(tǒng)的存儲數(shù)據(jù)的較低級高速緩存,使得可無需將存儲數(shù)據(jù)加載至由第一存儲器定義的較高級高速緩存來處理讀或?qū)懻埱蟆?br>
在另一實施例中,一種用于管理耦合至網(wǎng)絡(luò)的存儲服務(wù)器的方法包括,在存儲服務(wù)器處經(jīng)由網(wǎng)絡(luò)從遠程設(shè)備接收訪問請求,該訪問請求與存儲數(shù)據(jù)相關(guān)。響應(yīng)于該訪問請求,在沒有將與訪問請求相關(guān)聯(lián)的存儲數(shù)據(jù)存儲在存儲服務(wù)器的主機模塊的較高級高速緩存中的情況下,將存儲數(shù)據(jù)存儲在存儲服務(wù)器的集成控制器的較低級高速緩存中,其中集成控制器具有耦合至網(wǎng)絡(luò)的第一接口以及耦合至存儲子系統(tǒng)的第二接口。
訪問請求是寫請求。與訪問請求相關(guān)聯(lián)的元數(shù)據(jù)經(jīng)由系統(tǒng)互連發(fā)送給主機模塊,同時將存儲數(shù)據(jù)保存在集成控制器上。該方法還包括,使用從集成控制器接收的元數(shù)據(jù)在主機模塊上生成描述符;在集成控制器處接收該描述符;將該描述符與集成控制器上的存儲數(shù)據(jù)關(guān)聯(lián),用于經(jīng)由集成控制器的第二接口將存儲數(shù)據(jù)寫至存儲子系統(tǒng)中的適當(dāng)存儲位置。
訪問請求是讀請求,存儲數(shù)據(jù)經(jīng)由第二接口從存儲子系統(tǒng)獲得。該方法還包括,在沒有首先將存儲數(shù)據(jù)轉(zhuǎn)發(fā)給主機模塊的情況下,經(jīng)由第一接口將存儲數(shù)據(jù)發(fā)送給遠程設(shè)備。
在另一實施例中,一種存儲服務(wù)器中提供的存儲控制器的集成控制器包括,處理數(shù)據(jù)的處理器;定義較低級高速緩存的存儲器;經(jīng)由網(wǎng)絡(luò)耦合至遠程設(shè)備的第一接口;耦合至存儲子系統(tǒng)的第二接口。該集成控制器被配置成將與從遠程設(shè)備接收的寫請求相關(guān)聯(lián)的寫數(shù)據(jù)臨時性地存儲在較低級高速緩存上,并在沒有將寫數(shù)據(jù)存儲至與存儲服務(wù)器的主機模塊相關(guān)聯(lián)的較高級高速緩存的情況下經(jīng)由第二接口將寫數(shù)據(jù)發(fā)送給存儲子系統(tǒng)。
在又一實施例中,一種計算機可讀介質(zhì)包括,用于處理在存儲服務(wù)器處經(jīng)由網(wǎng)絡(luò)從遠程設(shè)備接收的訪問請求的計算機程序。該計算機程序包括這樣的代碼,它們用于在存儲服務(wù)器處經(jīng)由網(wǎng)絡(luò)從遠程設(shè)備接收訪問請求,該訪問請求與存儲數(shù)據(jù)相關(guān);以及響應(yīng)于該訪問請求,在沒有將與訪問請求相關(guān)聯(lián)的存儲數(shù)據(jù)存儲在存儲服務(wù)器的主機模塊的較高級高速緩存中的情況下,將存儲數(shù)據(jù)存儲在存儲服務(wù)器的集成控制器的較低級高速緩存處,該集成控制器具有耦合至網(wǎng)絡(luò)的第一接口以及耦合至存儲子系統(tǒng)的第二接口。
訪問請求是寫請求,該程序還包括用于將與訪問請求相關(guān)聯(lián)的元數(shù)據(jù)經(jīng)由系統(tǒng)互連發(fā)送給主機模塊,同時將存儲數(shù)據(jù)保存在集成控制器處的代碼。在主機模塊處使用從集成控制器接收的元數(shù)據(jù)生成描述符,并將該描述符發(fā)送給集成控制器,其中,該程序還包括代碼,用于將描述符與集成控制器處的存儲數(shù)據(jù)關(guān)聯(lián),以便經(jīng)由集成控制器的第二接口將存儲數(shù)據(jù)寫入存儲子系統(tǒng)中的適當(dāng)存儲位置。
訪問請求是讀請求,且經(jīng)由第二接口從存儲子系統(tǒng)獲得存儲數(shù)據(jù)。該計算機程序還包括,用于在沒有首先將存儲數(shù)據(jù)轉(zhuǎn)發(fā)給主機模塊的情況下經(jīng)由第一接口將存儲數(shù)據(jù)發(fā)送給遠程設(shè)備的代碼。
附圖簡述
圖1A示出了示例性的直接附加存儲(DAS)系統(tǒng)。
圖1B示出了示例性的存儲區(qū)網(wǎng)絡(luò)(SAN)系統(tǒng)。
圖1C示出了示例性的網(wǎng)絡(luò)附加存儲(NAS)系統(tǒng)。
圖2示出了包含存儲服務(wù)器和存儲子系統(tǒng)的示例性存儲系統(tǒng)。
圖3示出了根據(jù)常規(guī)技術(shù)在存儲服務(wù)器內(nèi)部響應(yīng)于讀/寫請求的示例性數(shù)據(jù)流。
圖4示出了根據(jù)本發(fā)明的一個實施例的存儲服務(wù)器。
圖5示出了根據(jù)本發(fā)明的一個實施例的BUCS或集成控制器。
圖6示出了根據(jù)本發(fā)明的一個實施例的用于執(zhí)行讀請求的過程。
圖7示出了根據(jù)本發(fā)明的一個實施例的用于執(zhí)行寫請求的過程。
發(fā)明的詳細描述本發(fā)明涉及存儲系統(tǒng)中的存儲服務(wù)器。在一個實施例中,以自底向上高速緩存結(jié)構(gòu)(BUCS)提供存儲服務(wù)器,其中大量使用較低級高速緩存來處理I/O請求。如此處所使用的,較低級高速緩存或存儲器指的是直接分配給主機模塊的CPU的高速緩存或存儲器。
與在傳統(tǒng)自頂向下高速緩存分級結(jié)構(gòu)中將頻繁使用的數(shù)據(jù)盡可能置于較高級高速緩存中形成對比,在這樣的存儲服務(wù)器中,與I/O請求相關(guān)聯(lián)的存儲數(shù)據(jù)被盡可能地保存在較低級高速緩存中,以最小化系統(tǒng)總線或互連上的數(shù)據(jù)通信量。對來自網(wǎng)絡(luò)的存儲讀請求,大多數(shù)數(shù)據(jù)通過最低級高速緩存從諸如硬盤驅(qū)動器或RAID等存儲設(shè)備中直接傳給網(wǎng)絡(luò)。類似地對于來自網(wǎng)絡(luò)的存儲寫請求,大多數(shù)數(shù)據(jù)通過較低級高速緩存直接寫入存儲設(shè)備,而沒有如現(xiàn)有系統(tǒng)中那樣將它們復(fù)制到較高級高速緩存(也被稱為“主存儲器或高速緩存”)中。
控制器級中這樣的數(shù)據(jù)高速緩存顯著地減少了諸如PCI總線等系統(tǒng)總線上的通信量,從而引起網(wǎng)絡(luò)化數(shù)據(jù)存儲操作的極大的性能改進。在使用Intel的IQ80310標準板和Linux NBD(網(wǎng)絡(luò)塊設(shè)備)的實驗中,BUCS與傳統(tǒng)系統(tǒng)相比,將響應(yīng)時間和系統(tǒng)吞吐量提高到了三倍。
圖1A-1C示出了信息基礎(chǔ)架構(gòu)中的各種類型的存儲系統(tǒng)。圖1A示出了示例性的直接附加存儲(DAS)系統(tǒng)100。DAS系統(tǒng)包括經(jīng)由網(wǎng)絡(luò)106耦合至存儲服務(wù)器104的客戶機102。存儲服務(wù)器104包括使用或生成數(shù)據(jù)的應(yīng)用程序108、管理數(shù)據(jù)的文件系統(tǒng)110以及存儲數(shù)據(jù)的存儲子系統(tǒng)112。存儲子系統(tǒng)包括一個或多個存儲設(shè)備,它們可以是磁盤設(shè)備、光盤設(shè)備、基于磁帶的設(shè)備等。在一種實現(xiàn)中,存儲子系統(tǒng)是磁盤陣列設(shè)備。
DAS是經(jīng)由存儲子系統(tǒng)與服務(wù)器之間的專用通信鏈路將存儲子系統(tǒng)本地附加到服務(wù)器的常規(guī)方法。通常使用SCSI連接來實現(xiàn)DAS。服務(wù)器一般使用塊級接口與存儲子系統(tǒng)通信。駐留在服務(wù)器上的文件系統(tǒng)110確定需要來自存儲子系統(tǒng)112的哪些數(shù)據(jù)塊來完成來自應(yīng)用程序108的文件請求(或I/O請求)。
圖1B示出了示例性的存儲區(qū)網(wǎng)絡(luò)(SAN)系統(tǒng)120。系統(tǒng)120包括經(jīng)由第一網(wǎng)絡(luò)126耦合至存儲服務(wù)器124的客戶機122。服務(wù)器124包括應(yīng)用程序123和文件系統(tǒng)125。存儲子系統(tǒng)128經(jīng)由第二網(wǎng)絡(luò)130耦合至存儲服務(wù)器124。第二網(wǎng)絡(luò)130是專用于連接存儲子系統(tǒng)、備份存儲子系統(tǒng)和存儲服務(wù)器的網(wǎng)絡(luò)。第二網(wǎng)絡(luò)被稱為存儲區(qū)網(wǎng)絡(luò)。通常以FICONTM或光纖通道來實現(xiàn)SAN。可以在單個小房間內(nèi)提供SAN,或者SAN也可橫跨大量地理位置。和DAS一樣,SAN服務(wù)器呈現(xiàn)對存儲子系統(tǒng)128的塊級接口。
圖1C示出了示例性的網(wǎng)絡(luò)附加存儲(NAS)系統(tǒng)140。系統(tǒng)140包括經(jīng)由網(wǎng)絡(luò)146耦合至存儲服務(wù)器144的客戶機142。服務(wù)器144包括文件系統(tǒng)148和存儲子系統(tǒng)150。在網(wǎng)絡(luò)146和客戶機142之間提供應(yīng)用程序152。存儲服務(wù)器144及其自身的文件系統(tǒng)被直接連接至網(wǎng)絡(luò)146,這響應(yīng)于如LAN上的NFS和SMB/CIFS的工業(yè)標準網(wǎng)絡(luò)文件系統(tǒng)接口。從客戶機將文件請求(或I/O請求)直接發(fā)送給文件系統(tǒng)148。NAS服務(wù)器144提供對存儲子系統(tǒng)150的文件級接口。
圖2示出了包含存儲服務(wù)器202和存儲子系統(tǒng)204的示例性存儲系統(tǒng)200。服務(wù)器202包括含有CPU 208、主存儲器210和非易失性存儲器212的主機模塊206。在一種實現(xiàn)中,主存儲器和CPU經(jīng)由專用總線211彼此連接來加速這兩個組件之間的通信。該主存儲器是RAM,CPU將它用作主高速緩存。在本實現(xiàn)中,該非易失性存儲器是ROM,它用來存儲由CPU執(zhí)行的程序或代碼。CPU也被稱為主處理器。
存儲服務(wù)器202包括將模塊206、磁盤控制器214以及網(wǎng)絡(luò)接口卡(NIC)216耦合在一起的主總線213(即系統(tǒng)互連)。在一種實現(xiàn)中,主總線213是PCI總線。磁盤控制器經(jīng)由外圍總線218耦合至存儲子系統(tǒng)204。在一種實現(xiàn)中,外圍總線是SCSI總線。NIC耦合至網(wǎng)絡(luò)220,并用作網(wǎng)絡(luò)和存儲服務(wù)器202之間的通信接口。網(wǎng)絡(luò)220將服務(wù)器202耦合至諸如客戶機102、122或142等客戶機。
參考圖1A到圖2,盡管基于不同技術(shù)的存儲系統(tǒng)使用不同的命令集和不同的消息格式,但流經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)流和服務(wù)器內(nèi)部的數(shù)據(jù)流在眾多方面是相似的。對讀請求,客戶機向服務(wù)器發(fā)送包含命令和元數(shù)據(jù)的讀請求。元數(shù)據(jù)提供關(guān)于所請求的數(shù)據(jù)的位置和大小的信息。在接收該包之后,服務(wù)器確認該請求,并向客戶機發(fā)送包含所請求的數(shù)據(jù)的一個或多個包。
對寫請求,客戶機向服務(wù)器發(fā)送包含元數(shù)據(jù)的寫請求,隨后是包含寫數(shù)據(jù)的一個或多個包。在某些實現(xiàn)中,寫數(shù)據(jù)可被包含在寫請求本身中。服務(wù)器確認寫請求,將寫數(shù)據(jù)復(fù)制到系統(tǒng)存儲器,將數(shù)據(jù)寫至其附加的存儲子系統(tǒng)的適當(dāng)位置,并向客戶機發(fā)送確認。
此處寬泛地使用術(shù)語“客戶機”和“服務(wù)器”。例如,在SAN系統(tǒng)中,發(fā)送請求的客戶機可以是服務(wù)器124,處理請求的服務(wù)器可以是存儲子系統(tǒng)128。
圖3示出了根據(jù)常規(guī)技術(shù)存儲服務(wù)器300內(nèi)響應(yīng)于讀/寫請求的示例性數(shù)據(jù)流。該服務(wù)器包含主機模塊302、磁盤控制器304、NIC 306以及耦合這些組件的內(nèi)部總線(或主總線)308。模塊302包含主處理器(未示出)和較高級高速緩存310。磁盤控制器304包括第一數(shù)據(jù)緩沖器(或較低級高速緩存)312,并被耦合至磁盤313(或存儲子系統(tǒng))。磁盤/存儲子系統(tǒng)在NAS或DAS系統(tǒng)中可直接附加或鏈接至服務(wù)器,在SAN系統(tǒng)中可經(jīng)由網(wǎng)絡(luò)耦合至服務(wù)器。NIC 306包括第二數(shù)據(jù)緩沖器314,并經(jīng)由網(wǎng)絡(luò)耦合至客戶機(未示出)。內(nèi)部總線308是系統(tǒng)互連,且在本實現(xiàn)中為PCI總線。
在操作中,當(dāng)經(jīng)由NIC 306從客戶機接收讀請求之后,模塊302(或服務(wù)器的操作系統(tǒng))確定所請求的數(shù)據(jù)是否位于主高速緩存310中。如果是,則處理主高速緩存310中的數(shù)據(jù),并將其發(fā)送給客戶機。如果否,則模塊302對磁盤控制器304調(diào)用I/O操作,并經(jīng)由PCI總線308從磁盤313加載數(shù)據(jù)。在數(shù)據(jù)被加載至主高速緩存之后,主處理器生成頭部,并組裝將經(jīng)由PCI總線發(fā)送給NIC 306的響應(yīng)包。NIC然后將包發(fā)送給客戶機。作為結(jié)果,數(shù)據(jù)在PCI總線上移動兩次。
在經(jīng)由NIC從客戶機接收寫請求之后,模塊302首先經(jīng)由PCI總線將數(shù)據(jù)從NIC加載到主高速緩存310,然后經(jīng)由PCI總線將數(shù)據(jù)存儲至磁盤313中。對寫操作,數(shù)據(jù)通過PCI總線兩次。從而,在常規(guī)方法中,服務(wù)器300大量使用PCI總線來完成I/O請求。
圖4示出了根據(jù)本發(fā)明的一個實施例的存儲服務(wù)器400。存儲服務(wù)器400包括主機模塊402、BUCS控制器404以及耦合這兩個組件的內(nèi)部總線406。模塊402包括高速緩存管理器408和主或較高級高速緩存410。BUCS控制器404包括較低級高速緩存412。BUCS控制器經(jīng)由網(wǎng)絡(luò)耦合到磁盤413和客戶機(未示出)。從而,BUCS控制器組合了磁盤控制器304和NIC 306的功能,且可被稱為“集成控制器”。磁盤413可以位于直接附加到服務(wù)器400的存儲子系統(tǒng)中,或者可位于經(jīng)由網(wǎng)絡(luò)耦合至服務(wù)器400的遠程存儲子系統(tǒng)中。取決于實現(xiàn),服務(wù)器400可以是DAS、NAS或SAN系統(tǒng)中提供的服務(wù)器。
在BUCS體系結(jié)構(gòu)中,盡可能地將數(shù)據(jù)保存在較低級高速緩存中,而不是將它們在內(nèi)部總線上來回移動。描述存儲數(shù)據(jù)的元數(shù)據(jù)和描述操作的命令被傳送給模塊402供處理使用,而相應(yīng)的存儲數(shù)據(jù)被保存在較低級高速緩存412處。從而,多數(shù)存儲數(shù)據(jù)不經(jīng)由內(nèi)部或PCI總線406傳送給較高級高速緩存410來避免通信量瓶頸。因為由于功率和成本的約束較低級高速緩存(即L-1高速緩存)大小通常有限,因此較高級高速緩存(即L-2高速緩存)與L-1高速緩存一起使用來處理I/O請求。高速緩存管理器408管理這一二級的分級結(jié)構(gòu)。在本實現(xiàn)中,高速緩存管理器駐留在服務(wù)器的操作系統(tǒng)的內(nèi)核中。
回來參考圖4,對讀請求,高速緩存管理器408檢查數(shù)據(jù)是位于L-1還是L-2高速緩存中。如果數(shù)據(jù)位于L-1高速緩存中,則模塊402準備頭部,并調(diào)用BUCS控制器以通過網(wǎng)絡(luò)接口在網(wǎng)絡(luò)上將數(shù)據(jù)包發(fā)送給請求客戶機(見圖5)。如果數(shù)據(jù)位于L-2高速緩存中,高速緩存管理器將數(shù)據(jù)從L2高速緩存移到L1高速緩存中,以經(jīng)由網(wǎng)絡(luò)發(fā)送給客戶機。如果數(shù)據(jù)位于存儲設(shè)備或磁盤413中,則高速緩存管理器將它們讀出并將它們直接加載到L-1高速緩存中。在本實現(xiàn)中,在這兩種情況中,主機模塊均生成包頭部并將它們傳送給BUCS控制器??刂破鹘M裝頭部和數(shù)據(jù),然后將所組裝的包發(fā)送給請求客戶機。
對寫請求,BUCS控制器為數(shù)據(jù)包中包含的數(shù)據(jù)生成唯一的標識符,并向主機告知該標識符。主機然后將元數(shù)據(jù)附加到相應(yīng)的前一命令包中的該標識符。實際的寫數(shù)據(jù)被保存在L-1高速緩存中,然后被寫入存儲設(shè)備的正確位置。在此之后,服務(wù)器向客戶機發(fā)送確認。從而,BUCS體系結(jié)構(gòu)最小化了PCI總線上的大數(shù)據(jù)的傳送。相反,只要可能,經(jīng)由PCI總線僅向主機模塊發(fā)送IO請求的命令部分和元數(shù)據(jù)。
如此處所使用的,術(shù)語“元信息”指的是請求或包中的管理信息。即,元信息是不作為包(例如,I/O請求)中的實際的讀或?qū)憯?shù)據(jù)的任何信息或數(shù)據(jù)。從而,元信息可以指的是元數(shù)據(jù)、或頭部、或命令部分、數(shù)據(jù)標識符、或其它管理信息或者是這些元素的任何組合。
在存儲服務(wù)器400中,提供處理程序來將命令包從數(shù)據(jù)包中分離,并將該命令包轉(zhuǎn)發(fā)給主機。根據(jù)本實現(xiàn),處理程序被實現(xiàn)為運行在BUCS控制器上的程序的一部分。該處理程序存儲在BUCS控制器中的非易失性存儲器中(見圖5)。
較佳地,由于不同的協(xié)議具有它們自身專用的消息格式,因此為每一網(wǎng)絡(luò)存儲協(xié)議提供一個處理程序。對新創(chuàng)建的網(wǎng)絡(luò)連接,控制器404首先試圖使用所有的處理程序來確定該連接屬于哪個協(xié)議。對提供網(wǎng)絡(luò)存儲服務(wù)的公知端口,它們擁有專用的特定處理程序,以避免連接設(shè)置的開始處的處理程序搜索過程。一旦了解了協(xié)議并確定了相應(yīng)的處理程序之后,所選的處理程序?qū)⒂糜谠撨B接上的其余數(shù)據(jù)操作,直到該連接終止。
圖5示出了根據(jù)本發(fā)明的一個實施例的BUCS或集成控制器500。控制器500集成磁盤/存儲控制器和NIC的功能。控制器包括處理器502、存儲器(也被稱為“較低級高速緩存”)504、非易失性存儲器506、網(wǎng)絡(luò)接口508和存儲接口510。存儲器總線512是專用總線,它將高速緩存504連接至處理器502用于為這些組件提供快速的通信路徑。內(nèi)部總線514耦合控制器500中的各種組件,它可以是PCI總線或PCI-X總線或是其它合適的類型。外圍總線516將非易失性存儲器506耦合至處理器502。
在本實現(xiàn)中,非易失性存儲器506是用于存儲固件的Flash ROM。存儲在FlashROM中的固件包括嵌入式OS代碼、例如RAID功能碼等與存儲控制器的功能有關(guān)的微碼以及某些網(wǎng)絡(luò)協(xié)議功能??墒褂么鎯Ψ?wù)器的主機模塊來升級固件。
在本實現(xiàn)中,存儲接口510是控制所附加的磁盤的存儲控制器芯片,網(wǎng)絡(luò)接口是發(fā)送和接收包的網(wǎng)絡(luò)媒體訪問控制(MAC)芯片。
存儲器504是RAM,它提供L-1高速緩存。較佳地,存儲器504較大,例如1GB或以上。存儲器504是共享存儲器,它結(jié)合存儲和網(wǎng)絡(luò)接口508和510使用來提供存儲和網(wǎng)絡(luò)接口的功能。在使用分離的存儲接口(或主機總線適配器)和NIC接口的常規(guī)服務(wù)器系統(tǒng)中,存儲HBA上的存儲器和NIC上的存儲器在物理上隔離,使得難以在對等設(shè)備之間交叉訪問。HBA和NIC的結(jié)合允許由不同的子系統(tǒng)引用單個數(shù)據(jù)副本,這導(dǎo)致高效率。
在本實現(xiàn)中,板載RAM或存儲器504被劃分成兩部分。一個部分是為板載操作系統(tǒng)(OS)和運行在控制器500上的程序保留的。另一部分,即主要部分,用作BUCS分級結(jié)構(gòu)的L-1高速緩存。類似地,為L-2高速緩存保留模塊402的主存儲器410的一分區(qū)。用于高速緩存的基本單元對文件系統(tǒng)級存儲協(xié)議而言是文件塊,對塊級存儲協(xié)議而言是磁盤塊。
使用塊作為用于高速緩存的基本數(shù)據(jù)單元允許存儲服務(wù)器獨立于網(wǎng)絡(luò)請求包而維護高速緩存的內(nèi)容。高速緩存管理器408管理這一二級的高速緩存分級結(jié)構(gòu)。高速緩存的數(shù)據(jù)由使用數(shù)據(jù)塊的磁盤內(nèi)偏移量作為其散列鍵的散列表414來組織和管理。表414可作為高速緩存管理器408的一部分來存儲,或者作為單獨的實體來存儲。
每一散列條目包含若干頂,包括存儲設(shè)備上的數(shù)據(jù)偏移量、存儲設(shè)備標識符、數(shù)據(jù)的大小、散列表隊列的鏈接指針、高速緩存策略隊列的鏈接指針、數(shù)據(jù)指針以及狀態(tài)標志。狀態(tài)標志中的每一位指示不同的狀況,諸如數(shù)據(jù)是在L-1高速緩存中還是在L-2高速緩存中,數(shù)據(jù)是否為臟、在操作過程中該條目和數(shù)據(jù)是否被鎖定等。
由于數(shù)據(jù)可能不連續(xù)地存儲在物理存儲器中,因此類iovec(I/O向量數(shù)據(jù)結(jié)構(gòu))結(jié)構(gòu)表示每一數(shù)據(jù)片段。每一iovec結(jié)構(gòu)存儲存儲器中連續(xù)的數(shù)據(jù)片段的地址和長度,且可由擴散-聚集DMA直接使用。在一種實現(xiàn)中,每一散列條目的大小大約為20字節(jié)。如果由每一條目表示的數(shù)據(jù)的平均大小為4096字節(jié),則散列條目的成本低于5%。當(dāng)將數(shù)據(jù)塊添加至L-1或L-2高速緩存時,由高速緩存管理器創(chuàng)建新的高速緩存條目,它使用關(guān)于該數(shù)據(jù)塊的元數(shù)據(jù)填充,并被插入散列表中的適當(dāng)位置。
根據(jù)該實現(xiàn),散列表可在不同的位置維護1)BUCS控制器為板載存儲器中的L-1高速緩存和L-2高速緩存維護散列表,2)主機模塊維護主存儲器中的所有元數(shù)據(jù),3)BUCS控制器和主機模塊單獨維護它們自己高速緩存的元數(shù)據(jù)。
在較佳的實現(xiàn)中,采用第二種方法來使得駐留在主機模塊上的高速緩存管理器為L-1高速緩存和L-2高速緩存維護元數(shù)據(jù)。高速緩存管理器經(jīng)由API發(fā)送不同的消息給作為完成高速緩存管理任務(wù)的從屬裝置的BUCS控制器。由于主要在主機模塊方處理網(wǎng)絡(luò)存儲協(xié)議,所以主機模塊相比BUCS控制器可更容易地提取和獲取高速緩存的數(shù)據(jù)上的元數(shù)據(jù),因此在本實現(xiàn)中第二種方法較佳。在其它實現(xiàn)中,BUCS控制器可處理這樣的任務(wù)。
在高速緩存管理器408中實現(xiàn)最近最少使用算法(LRU)替換策略,以當(dāng)高速緩存已滿時用于為將置入該高速緩存的新數(shù)據(jù)留出空間。一般而言,最經(jīng)常使用的數(shù)據(jù)被保存在L-1高速緩存中。一旦L-1高速緩存滿,則將未訪問持續(xù)時間最長的數(shù)據(jù)從L-1高速緩存移至L-2高速緩存。高速緩存管理器更新散列表中的相應(yīng)條目來反映這樣的數(shù)據(jù)重定位。如果將數(shù)據(jù)從L-2高速緩存移至磁盤存儲,則該散列條目從散列表中斷開鏈接,并被高速緩存管理器丟棄。
當(dāng)L-2高速緩存中的數(shù)據(jù)片段被再次訪問且需要被置入L-1高速緩存時,將它傳回L-1高速緩存。當(dāng)L-2高速緩存中的數(shù)據(jù)需要被寫入磁盤驅(qū)動器時,將數(shù)據(jù)傳送給BUCS控制器,來由BUCS控制器直接寫入磁盤驅(qū)動器而不會弄臟L-1高速緩存。這樣的寫操作可通過作為板載OS RAM空間的一部分保留的緩沖器。
由于BUCS使用集成BUCS控制器來替換傳統(tǒng)的存儲控制器和NIC,因此主機OS與接口控制器之間的交互被改變。在本實現(xiàn)中,主機模塊將BUCS控制器作為具有某些附加的功能的NIC來對待,使得不需創(chuàng)建新一類的設(shè)備,并將對OS內(nèi)核的改變保持到最小。
在主機OS中,添加代碼來導(dǎo)出可由OS的其它部分利用的多個API,且在BUCS控制器中提供相應(yīng)的微碼。對每一API,主機OS將特定的命令碼和參數(shù)寫入BUCS控制器的寄存器中,而命令調(diào)度程序調(diào)用板內(nèi)的相應(yīng)微碼來完成期望的任務(wù)。API可存儲在BUCS控制器的非易失性存儲器中,或加載到RAM中作為主機OS的一部分。
所提供的一種API是初始化API,bucs.cache.init()。在主機模塊引導(dǎo)過程中,BUCS控制器上的微碼檢測板載存儲器,保留該存儲器的部分供內(nèi)部使用,并為L-1高速緩存保留存儲器的其余部分。主機OS在初始化過程中調(diào)用該API,并獲得L-1高速緩存的大小。主機OS也在引導(dǎo)時檢測L-2高速緩存。在獲得關(guān)于L-1高速緩存和L-2高速緩存的信息之后,主機OS設(shè)置散列表和其它數(shù)據(jù)結(jié)構(gòu)來完成初始化。
圖7示出了根據(jù)本發(fā)明的一個實施例用于執(zhí)行讀請求的過程700。當(dāng)主機需要為來自客戶機的讀請求發(fā)送數(shù)據(jù)時,它檢查散列表來找出數(shù)據(jù)的位置(步驟702)。數(shù)據(jù)或數(shù)據(jù)的部分可位于三個可能的位置,包括L-1高速緩存、L2高速緩存和存儲設(shè)備。對每一數(shù)據(jù)片段,主機生成關(guān)于其信息以及將要執(zhí)行的動作的描述符(步驟704)。對L-1高速緩存中的數(shù)據(jù),處理器502可直接發(fā)送它。對L-2高速緩存中的數(shù)據(jù),主機為該數(shù)據(jù)給出位于L-1高速緩存中的新位置,由DMA將該數(shù)據(jù)從L-2高速緩存移至L-1高速緩存,并將其發(fā)送。對磁盤驅(qū)動器上的數(shù)據(jù),主機找到L-1高速緩存中的新位置,指導(dǎo)處理器將該數(shù)據(jù)從磁盤驅(qū)動器中讀出,并將其置于L-1高速緩存中。如果在該磁盤操作時L-1高速緩存滿,則主機也決定L-1高速緩存中的哪些數(shù)據(jù)將被移至L-2高速緩存,并為數(shù)據(jù)重定位提供源和目的地址。這些描述符經(jīng)由API bucs.append.data()發(fā)送給處理器502來執(zhí)行實際的操作(步驟706)。對所接收到的每一描述符,處理器檢查參數(shù)并調(diào)用不同的微碼來完成讀操作(步驟708)。
圖8示出了根據(jù)本發(fā)明的一個實施例用于執(zhí)行寫請求的過程800。對來自客戶機的寫請求,主機模塊獲得命令包并指定L-1高速緩存中的位置(步驟802)。如果L-1高速緩存缺少用于寫入所接收的數(shù)據(jù)的足夠的空閑空間,則使用高速緩存管理器的主機模塊可將L-1高速緩存中不頻繁訪問的數(shù)據(jù)重定位至L-2高速緩存。它然后使用API bucs.read.data()來讀隨命令包之后的后繼數(shù)據(jù)包(步驟804)。主機OS然后將指導(dǎo)處理器502將數(shù)據(jù)直接置入L-1高速緩存中(步驟806)。
當(dāng)主機模塊想要將數(shù)據(jù)直接寫入磁盤驅(qū)動器時,調(diào)用API bucs.write.data()(步驟808)。主機模塊為將要寫入的數(shù)據(jù)提供描述符,包括數(shù)據(jù)在L-1或L-2高速緩存中的位置、數(shù)據(jù)大小以及磁盤上的位置。數(shù)據(jù)然后被傳送給作為為板載OS保留的RAM空間的一部分的處理器緩沖器,并由處理器502寫入磁盤(步驟810)。
在BUCS系統(tǒng)中定義了某些其它的API來協(xié)助主要操作。例如,提供APIbucs.destage.L-1()將數(shù)據(jù)從L-1高速緩存降級至L-2高速緩存。API bucs.prompt.L-2()用于將數(shù)據(jù)從L-2高速緩存移至L-1高速緩存。這些API可由高速緩存管理器使用,以在需要時動態(tài)地平衡L-1高速緩存和L-2高速緩存。
在BUCS系統(tǒng)中,存儲控制器和NIC由集成這兩者的功能且具有統(tǒng)一高速緩存存儲器的BUCS控制器替代。這使得可能在無需調(diào)用I/O總線、主機CPU和主存儲器的情況下,一旦從存儲設(shè)備讀出數(shù)據(jù)就向網(wǎng)絡(luò)發(fā)送該數(shù)據(jù)。通過將頻繁使用的數(shù)據(jù)置入板載高速緩存存儲器(L-1高速緩存),可直接滿足眾多讀請求??赏ㄟ^無需調(diào)用任何總線通信量而將數(shù)據(jù)直接置入L-1高速緩存來滿足來自客戶機的寫請求。當(dāng)需要時,可將L-1高速緩存中的數(shù)據(jù)重定位至主機存儲器(L-2高速緩存)。使用有效的高速緩存策略,該多級高速緩存可為網(wǎng)絡(luò)化存儲數(shù)據(jù)訪問提供高速且大容量的高速緩存。
按照特定實施例或?qū)崿F(xiàn)描述了本發(fā)明,以使得本領(lǐng)域的技術(shù)人員能夠?qū)嵺`本發(fā)明??蓪λ沂镜膶嵤├?qū)崿F(xiàn)進行修改或更改,而不背離本發(fā)明的范圍。例如,內(nèi)部總線可以是PCI-X總線或交換結(jié)構(gòu),例如InfiniBandTM。從而,應(yīng)使用所附權(quán)利要求書來定義本發(fā)明的范圍。
權(quán)利要求
1.一種耦合至網(wǎng)絡(luò)的存儲服務(wù)器,所述服務(wù)器包括包含中央處理單元(CPU)和第一存儲器的主機模塊;耦合所述主機模塊的系統(tǒng)互連;以及包含處理器、耦合至所述網(wǎng)絡(luò)的網(wǎng)絡(luò)接口設(shè)備、耦合至存儲子系統(tǒng)的存儲接口設(shè)備和第二存儲器的集成控制器,其中,所述第二存儲器定義臨時性存儲將被讀出給所述網(wǎng)絡(luò)或?qū)懭胨龃鎯ψ酉到y(tǒng)的存儲數(shù)據(jù)的較低級高速緩存,使得可在無需將所述存儲數(shù)據(jù)加載至由所述第一存儲器定義的較高級高速緩存的情況下處理讀或?qū)懻埱蟆?br>
2.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,所述第二存儲器由所述網(wǎng)絡(luò)接口設(shè)備和存儲接口設(shè)備共享。
3.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,所述集成控制器包括耦合所述處理器、網(wǎng)絡(luò)接口設(shè)備和存儲接口設(shè)備的內(nèi)部總線;以及耦合所述處理器和第二存儲器的存儲器總線。
4.如權(quán)利要求3所述的存儲服務(wù)器,其特征在于,所述系統(tǒng)互連是總線。
5.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,所述系統(tǒng)互連是基于交換的設(shè)備。
6.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,I/O請求的存儲數(shù)據(jù)被保存在所述較低級高速緩存中,而I/O請求的元數(shù)據(jù)被發(fā)送給所述主機模塊來為所述I/O請求生成頭部。
7.如權(quán)利要求6所述的存儲服務(wù)器,其特征在于,所述I/O請求是讀或?qū)憯?shù)據(jù)。
8.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,還包括管理所述較高級和較低級高速緩存的高速緩存管理器。
9.如權(quán)利要求8所述的存儲服務(wù)器,其特征在于,所述高速緩存管理器由所述主機模塊維護。
10.如權(quán)利要求9所述的存儲服務(wù)器,其特征在于,所述高速緩存管理器維護用于管理存儲在所述較高級和較低級高速緩存中的數(shù)據(jù)的散列表。
11.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,所述存儲服務(wù)器是在直接附加存儲系統(tǒng)中提供的。
12.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,所述存儲服務(wù)器和存儲子系統(tǒng)是在同一外殼內(nèi)提供的。
13.如權(quán)利要求1所述的存儲服務(wù)器,其特征在于,所述存儲服務(wù)器是在網(wǎng)絡(luò)附加存儲系統(tǒng)或存儲區(qū)網(wǎng)絡(luò)系統(tǒng)中提供的。
14.一種用于管理耦合至網(wǎng)絡(luò)的存儲服務(wù)器的方法,所述方法包括在所述存儲服務(wù)器處經(jīng)由所述網(wǎng)絡(luò)從遠程設(shè)備接收訪問請求,所述訪問請求與存儲數(shù)據(jù)相關(guān);以及響應(yīng)于所述訪問請求,在沒有將所述與訪問請求相關(guān)聯(lián)的存儲數(shù)據(jù)存儲在所述存儲服務(wù)器的主機模塊的較高級高速緩存中的情況下,將所述存儲數(shù)據(jù)存儲在所述存儲服務(wù)器的集成控制器的較低級高速緩存中,其中,所述集成控制器具有耦合至所述網(wǎng)絡(luò)的第一接口以及耦合至存儲子系統(tǒng)的第二接口。
15.如權(quán)利要求14所述的方法,其特征在于,所述訪問請求是寫請求,所述方法還包括經(jīng)由系統(tǒng)互連將與所述訪問請求相關(guān)聯(lián)的元數(shù)據(jù)發(fā)送給所述主機模塊,同時將所述存儲數(shù)據(jù)保存在所述集成控制器處。
全文摘要
一種網(wǎng)絡(luò)化存儲服務(wù)器(400)具有自底向上的高速緩存分級結(jié)構(gòu)。最低級高速緩存(412)位于作為網(wǎng)絡(luò)接口卡(NIC)和主機總線適配器(HBA)的組合的嵌入式控制器(409)上。來往于網(wǎng)絡(luò)的存儲數(shù)據(jù)(1)被高速緩存在該最低級高速緩存(412)中,與這些數(shù)據(jù)相關(guān)的元數(shù)據(jù)(2)被傳遞給服務(wù)器主機(402)以供處理。當(dāng)高速緩存的數(shù)據(jù)超過最低級高速緩存(412)的容量時,數(shù)據(jù)被移至通常遠大于控制器上的存儲器的主機存儲器(410)。對來自網(wǎng)絡(luò)的存儲讀請求,大多數(shù)數(shù)據(jù)從諸如硬盤驅(qū)動器或RAID等存儲設(shè)備(413)經(jīng)由最低級高速緩存(412)直接傳遞給網(wǎng)絡(luò)。類似地,對來自網(wǎng)絡(luò)的存儲寫請求,大多數(shù)數(shù)據(jù)在沒有將它們復(fù)制到主機存儲器(410)的情況下,經(jīng)由最低級高速緩存直接寫入存儲設(shè)備(413)。控制器級處這樣的數(shù)據(jù)高速緩存顯著地減少了總線通信量,這導(dǎo)致網(wǎng)絡(luò)化存儲的極大性能改進。
文檔編號G06F12/08GK1871587SQ200480030789
公開日2006年11月29日 申請日期2004年10月20日 優(yōu)先權(quán)日2003年10月20日
發(fā)明者Q·楊, M·張 申請人:羅得島及普羅維登斯屬地高等教育管理委員會