本申請(qǐng)要求以下瞬時(shí)申請(qǐng)的優(yōu)先權(quán),其中的每個(gè)被通過引用整體地結(jié)合到本文中:2014年3月8日提交且題為“Method and Apparatus for Application Driven Storage Access”的美國專利申請(qǐng)61/950,036;以及2014年6月26日提交且題為“Apparatus for Virtualized Cluster IO”的美國專利申請(qǐng)62/017,257。
技術(shù)領(lǐng)域
本申請(qǐng)涉及聯(lián)網(wǎng)和數(shù)據(jù)存儲(chǔ)的領(lǐng)域,并且更特別地涉及融合聯(lián)網(wǎng)和數(shù)據(jù)存儲(chǔ)設(shè)備的領(lǐng)域。
背景技術(shù):
向外擴(kuò)展應(yīng)用的激增已對(duì)使用此類應(yīng)用的企業(yè)導(dǎo)致非常顯著的挑戰(zhàn)。企業(yè)通常在比如(涉及比如管理程序的軟件組件和高級(jí)硬件組件的)虛擬機(jī)的解決方案與(通常涉及比如Linux?的操作系統(tǒng)和商品硬件的使用的)所謂的“裸金屬”解決方案之間進(jìn)行選擇。在大規(guī)模處,虛擬機(jī)解決方案通常具有不良的輸入-輸出(IO)性能、不充分的存儲(chǔ)器、不一致的性能以及高的基礎(chǔ)設(shè)施成本。裸金屬解決方案通常具有靜態(tài)資源分配(使得資源中的改變困難并導(dǎo)致硬件的低效使用)、規(guī)劃容量中的挑戰(zhàn)、不一致的性能以及操作復(fù)雜性。在兩個(gè)情況下,不一致的性能表征了現(xiàn)有解決方案。存在對(duì)于在多租戶部署中提供高性能、可以處理動(dòng)態(tài)資源分配以及可以以高程度的利用使用商品硬件的解決方案的需要。
圖1描繪了計(jì)算系統(tǒng)102的一般架構(gòu),在本文中公開的某些實(shí)施例中可能涉及諸如所述計(jì)算系統(tǒng)102的服務(wù)器、功能和模塊。傳統(tǒng)上在(例如,涉及分別用于網(wǎng)絡(luò)功能或存儲(chǔ)功能的網(wǎng)絡(luò)接口控制器118或存儲(chǔ)控制器112的)軟件棧或硬件設(shè)備中單獨(dú)地執(zhí)行存儲(chǔ)功能(諸如對(duì)服務(wù)器102上的諸如介質(zhì)104(例如旋轉(zhuǎn)介質(zhì)或閃存(flash))之類的本地存儲(chǔ)設(shè)備的訪問)和諸如轉(zhuǎn)發(fā)之類的網(wǎng)絡(luò)功能。在操作系統(tǒng)棧108(其在包括與用于計(jì)算系統(tǒng)的存儲(chǔ)和聯(lián)網(wǎng)功能相關(guān)聯(lián)的所有軟件棧的某些實(shí)施例中可以包括操作系統(tǒng)和管理程序)內(nèi),軟件存儲(chǔ)棧通常包括使得能夠使用可以在存儲(chǔ)中使用的各種協(xié)議的模塊,所述各種協(xié)議諸如小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議、串行ATA(SATA)協(xié)議、非易失性存儲(chǔ)器express(快速)(NVMe)協(xié)議(用于通過典型的計(jì)算系統(tǒng)102的PCI Express(PCIe)總線110訪問比如固態(tài)驅(qū)動(dòng)(SSD)的盤附著存儲(chǔ)(DAS)的協(xié)議)等。PCIe總線110可以提供(具有(一個(gè)或多個(gè))處理器和存儲(chǔ)器的)CPU 106與各種IO卡之間的互連。存儲(chǔ)棧還可以包括卷管理器等。存儲(chǔ)軟件棧內(nèi)的操作還可以包括數(shù)據(jù)保護(hù),諸如鏡像或RAID、備份、快照、重復(fù)數(shù)據(jù)刪除(deduplication)、壓縮和加密。某些存儲(chǔ)功能可被卸載到存儲(chǔ)控制器112中。軟件網(wǎng)絡(luò)棧包括用于使得能夠使用各種聯(lián)網(wǎng)協(xié)議的模塊、功能等,所述聯(lián)網(wǎng)協(xié)議諸如傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)、域名系統(tǒng)協(xié)議(DNS)、地址解析協(xié)議(ARP)、轉(zhuǎn)發(fā)協(xié)議等。某些網(wǎng)絡(luò)功能可諸如經(jīng)由以太網(wǎng)連接120被卸載到網(wǎng)絡(luò)接口控制器118(或NIC)或網(wǎng)絡(luò)結(jié)構(gòu)(fabric)交換機(jī)中,進(jìn)而(利用各種交換機(jī)、路由器等)通向網(wǎng)絡(luò)。在虛擬化環(huán)境中,可根據(jù)PCI Express標(biāo)準(zhǔn)將NIC 118虛擬化成如由SR-IOV指定的若干虛擬NIC。雖然未被PCI Express標(biāo)準(zhǔn)指定且不是作為公共的,但存儲(chǔ)控制器還可以被以類似方式虛擬化。該方法允許諸如虛擬機(jī)之類的虛擬實(shí)體對(duì)其自己的私有資源的訪問。
參考圖2,關(guān)于管理程序的一個(gè)主要問題是關(guān)于IO操作的復(fù)雜性。例如,為了處理涉及跨兩個(gè)不同計(jì)算機(jī)(圖2中的計(jì)算機(jī)系統(tǒng)1和計(jì)算機(jī)系統(tǒng)2)的數(shù)據(jù)的操作,隨著數(shù)據(jù)在計(jì)算機(jī)的本地存儲(chǔ)設(shè)備104、存儲(chǔ)控制器112、CPU 106、網(wǎng)絡(luò)接口控制器118和管理程序/操作系統(tǒng)108中所涉及的不同軟件棧之間移動(dòng),數(shù)據(jù)必須被重復(fù)地、一遍又一遍地拷貝,每當(dāng)采?。╱ndertake)涉及將數(shù)據(jù)從一個(gè)計(jì)算機(jī)移動(dòng)至另一個(gè)、改變存儲(chǔ)的配置等的活動(dòng)時(shí)導(dǎo)致用于每個(gè)IO操作的大量低效數(shù)據(jù)拷貝。路線(route)124是數(shù)據(jù)可采取的從一個(gè)計(jì)算機(jī)至另一個(gè)、在兩個(gè)計(jì)算機(jī)的軟件棧向上和向下移動(dòng)的復(fù)雜路線的許多示例中的一個(gè)。由計(jì)算系統(tǒng)2尋找的數(shù)據(jù)可能最初位于計(jì)算系統(tǒng)1的諸如盤之類的本地存儲(chǔ)設(shè)備104中,然后被存儲(chǔ)控制器卡112(涉及IO操作和拷貝)拉出,通過PCIe總線110(另一IO操作)發(fā)送到CPU 108,在所述CPU 108處其被計(jì)算系統(tǒng)1的OS棧108的管理程序或其他軟件組件處理。接下來,可經(jīng)由網(wǎng)絡(luò)控制器118且通過網(wǎng)絡(luò)122(另一組IO操作)將數(shù)據(jù)遞送(另一IO操作)到計(jì)算系統(tǒng)2。路線在計(jì)算系統(tǒng)2上繼續(xù),在所述計(jì)算系統(tǒng)2處數(shù)據(jù)可穿過網(wǎng)絡(luò)控制器118并到計(jì)算系統(tǒng)2的CPU 106(涉及附加IO操作),然后被通過PCIe總線110發(fā)送到本地存儲(chǔ)控制器112以用于存儲(chǔ),然后回到管理程序/OS棧108以用于實(shí)際使用。這些操作可跨許多計(jì)算系統(tǒng)對(duì)發(fā)生,其中每個(gè)交換涉及IO操作的該類型的激增(并且許多其他路線是可能的,每個(gè)涉及大量的操作)。在被企業(yè)越來越多地采用的向外擴(kuò)展情況中要求計(jì)算系統(tǒng)之間的許多此類復(fù)雜的數(shù)據(jù)復(fù)制和傳輸活動(dòng)。例如,當(dāng)實(shí)現(xiàn)比如MongoDB?的向外擴(kuò)展應(yīng)用時(shí),客戶必須在再平衡操作期間重復(fù)地運(yùn)行實(shí)時(shí)查詢,并且執(zhí)行大規(guī)模數(shù)據(jù)加載。此類活動(dòng)涉及非常大量的IO操作,這導(dǎo)致管理程序解決方案中的不良性能。那些應(yīng)用的用戶還頻繁地重新分片(改變數(shù)據(jù)被部署在其上的碎片),對(duì)具有靜態(tài)存儲(chǔ)資源分配的裸金屬解決方案導(dǎo)致大問題,因?yàn)閿?shù)據(jù)從一個(gè)位置到另一位置的遷移還涉及許多拷貝和傳輸操作以及大量的IO操作。隨著在向外擴(kuò)展應(yīng)用中使用的數(shù)據(jù)量快速地增長(zhǎng)和(諸如涉及許多機(jī)器的云部署中的)不同系統(tǒng)之間的連通性增加,這些問題呈指數(shù)增長(zhǎng)。存在對(duì)于減少IO操作的數(shù)量和復(fù)雜性并另外改善向外擴(kuò)展應(yīng)用的性能和可擴(kuò)展性而不要求昂貴的高級(jí)硬件的存儲(chǔ)和聯(lián)網(wǎng)解決方案的需要。
仍參考圖2,對(duì)于許多應(yīng)用和使用情況而言,需要跨計(jì)算系統(tǒng)102之間的網(wǎng)絡(luò)訪問數(shù)據(jù)(并且進(jìn)而訪問存儲(chǔ))。該操作的三個(gè)高級(jí)步驟包括數(shù)據(jù)離開箱子(box)從一個(gè)計(jì)算系統(tǒng)的存儲(chǔ)介質(zhì)的傳送、跨網(wǎng)絡(luò)122的移動(dòng)以及數(shù)據(jù)到第二箱子(第二計(jì)算系統(tǒng)102)中到該第二計(jì)算系統(tǒng)102的存儲(chǔ)介質(zhì)104的傳送。第一,離開箱子傳送可能涉及來自存儲(chǔ)控制器112、OS 108中的存儲(chǔ)棧、OS 108中的網(wǎng)絡(luò)棧以及網(wǎng)絡(luò)接口控制器118的介入?;ㄙM(fèi)了跨內(nèi)部總線(PCIe 110和存儲(chǔ)器)以及CPU 106處理循環(huán)的許多遍歷和拷貝。這不僅使操作的性能降級(jí)(產(chǎn)生等待時(shí)間和吞吐量問題),而且不利地影響在CPU上運(yùn)行的其他應(yīng)用。第二,一旦數(shù)據(jù)離開箱子102并移動(dòng)到網(wǎng)絡(luò)122上,其被像任何其他網(wǎng)絡(luò)業(yè)務(wù)一樣處理并且需要被轉(zhuǎn)發(fā)/路由到其目的地。執(zhí)行策略并做出決定。在其中大量業(yè)務(wù)正在移動(dòng)的環(huán)境中,擁塞可能發(fā)生在網(wǎng)絡(luò)122中,引起性能中的降級(jí)以及關(guān)于可用性的問題(例如,被丟棄的分組、失去的連接以及不可預(yù)測(cè)的等待時(shí)間)。網(wǎng)絡(luò)具有用以避免擁塞的擴(kuò)散的機(jī)制和算法,諸如暫停功能、后向擁塞通知(BCN)、顯式擁塞通知(ECN)等。然而,這些是反應(yīng)性方法;即,其檢測(cè)擁塞點(diǎn)的形成并在源上向后推以減少擁塞,潛在地導(dǎo)致延遲和性能影響。第三,一旦數(shù)據(jù)到達(dá)其“目的地”計(jì)算系統(tǒng)102,其需要被處理,這涉及來自網(wǎng)絡(luò)接口控制器118、OS 108中的網(wǎng)絡(luò)棧、OS 108中的存儲(chǔ)棧以及存儲(chǔ)控制器112的介入。如上文記載的離開箱子操作一樣,花費(fèi)跨內(nèi)部總線以及CPU 106處理循環(huán)的許多遍歷和拷貝。進(jìn)一步地,數(shù)據(jù)的最終目的地有可能存在于仍不同的箱子中。這可能是對(duì)更多數(shù)據(jù)保護(hù)(例如,鏡像和跨箱子RAID)的需要或?qū)χ貜?fù)數(shù)據(jù)刪除的需要的結(jié)果。如果是這樣,則需要再次地重復(fù)離開箱子、跨網(wǎng)絡(luò)以及進(jìn)入箱子數(shù)據(jù)傳送的整個(gè)序列。如所述,該方法的限制包括原始性能中的降級(jí),不可預(yù)測(cè)的性能,對(duì)其他租戶或操作、可用性和可靠性的影響,以及資源的低效使用。存在對(duì)于避免當(dāng)前方法的復(fù)雜性和性能影響的數(shù)據(jù)傳送系統(tǒng)的需要。
作為對(duì)管理程序(其為其管理的每個(gè)虛擬機(jī)提供單獨(dú)的操作系統(tǒng))的替換,已開發(fā)了諸如Linux?容器之類的技術(shù)(其使得單個(gè)操作系統(tǒng)能夠管理多個(gè)應(yīng)用容器)。并且,已經(jīng)開發(fā)了諸如Dockers之類的工具,其提供了對(duì)用庫來封裝應(yīng)用的供應(yīng)。在貫穿本公開描述的許多其他創(chuàng)新之中,存在用于利用這些新興技術(shù)的能力來提供用于向外擴(kuò)展應(yīng)用的改進(jìn)的方法和系統(tǒng)的機(jī)會(huì)。
技術(shù)實(shí)現(xiàn)要素:
在本文中提供了包括將發(fā)起者、目標(biāo)存儲(chǔ)功能和網(wǎng)絡(luò)功能組合到單個(gè)數(shù)據(jù)和控制路徑中的硬件中的融合存儲(chǔ)和網(wǎng)絡(luò)控制器的方法和系統(tǒng),其允許網(wǎng)絡(luò)與存儲(chǔ)之間的“直通”路徑,而不要求主機(jī)CPU的介入。為了便于參考,貫穿本公開,在本公開中將這不同地稱為融合硬件解決方案、融合設(shè)備、融合適配器、融合IO控制器、“數(shù)據(jù)智能(datawise)”控制器等,并且應(yīng)將此類術(shù)語理解成包含(除在上下文另外指明的情況下之外)將目標(biāo)存儲(chǔ)功能和網(wǎng)絡(luò)功能組合到單個(gè)數(shù)據(jù)和控制路徑中的硬件中的融合存儲(chǔ)和網(wǎng)絡(luò)控制器。
除其他益處之外,融合解決方案將增加計(jì)算和/或存儲(chǔ)資源集群的原始性能;實(shí)行跨集群的服務(wù)級(jí)協(xié)議(SLA)并幫助保證可預(yù)測(cè)的性能;提供多租戶環(huán)境,其中租戶將不影響其鄰居;提供具有硬件的較高利用的稠密集群,導(dǎo)致較小的數(shù)據(jù)中心覆蓋區(qū)(footprint)、較少的功率、較少的系統(tǒng)要管理;提供更加可擴(kuò)展的集群;以及在不損失性能的情況下跨集群匯集(pool)存儲(chǔ)資源。
在本文中公開的各種方法和系統(tǒng)提供了向外擴(kuò)展應(yīng)用所需的資源的高密度合并和高性能多節(jié)點(diǎn)匯集。這些方法和系統(tǒng)提供了多個(gè)客戶益處,其包括動(dòng)態(tài)集群范圍資源供應(yīng),保證關(guān)于網(wǎng)絡(luò)和存儲(chǔ)功能的服務(wù)質(zhì)量(QoS)、安全性、隔離等的能力以及將共享基礎(chǔ)設(shè)施用于生產(chǎn)和測(cè)試/開發(fā)的能力。
在本文中還提供了用以通過網(wǎng)絡(luò)執(zhí)行存儲(chǔ)功能并將存儲(chǔ)和網(wǎng)絡(luò)設(shè)備虛擬化以用于單或多租戶環(huán)境中的高性能和確定性性能的方法和系統(tǒng)。
在本文中還提供了用于存儲(chǔ)設(shè)備的虛擬化(諸如使用NVMe和類似協(xié)議的那些)以及那些虛擬設(shè)備到不同物理設(shè)備的轉(zhuǎn)換(諸如使用SATA的轉(zhuǎn)換)的方法和系統(tǒng)。
在本文中公開的方法和系統(tǒng)還包括用于僅涉及主機(jī)(與網(wǎng)絡(luò)結(jié)構(gòu)相反)上的硬件的端到端擁塞控制的方法和系統(tǒng),該端到端擁塞控制包括遠(yuǎn)程信用管理和以箱子級(jí)別的分布式調(diào)度算法。
在本文中還提供了由融合網(wǎng)絡(luò)/存儲(chǔ)控制器使能的各種系統(tǒng)和方法,包括用于存儲(chǔ)集群或使能集群的其他元件(諸如存儲(chǔ)適配器、網(wǎng)絡(luò)適配器、容器(例如,Linux容器)、Solaris區(qū)等)的虛擬化的方法和系統(tǒng)。在優(yōu)點(diǎn)之中,將集群虛擬化的一個(gè)方面是容器可以在物理集群中變成位置無關(guān)的。除了其他優(yōu)點(diǎn),這允許容器在下面描述的大大簡(jiǎn)化過程中在機(jī)器之間的移動(dòng)。
在本文中提供了用于將直接附著存儲(chǔ)(DAS)虛擬化使得操作系統(tǒng)棧108仍看到本地的持久性設(shè)備、即使物理儲(chǔ)存被移動(dòng)且位于遠(yuǎn)程的方法和系統(tǒng);即,在本文中提供了用于DAS的虛擬化的方法和系統(tǒng)。在實(shí)施例中,這可以包括通過結(jié)構(gòu)將DAS虛擬化,即,獲取DAS存儲(chǔ)系統(tǒng)并將其移到箱子外面且將其放在網(wǎng)絡(luò)上。在實(shí)施例中,這可以包括將DAS切分成任意的名字空間。在實(shí)施例中,使得虛擬化DAS如同其是實(shí)際DAS一樣對(duì)操作系統(tǒng)可訪問,諸如經(jīng)由NVMe通過PCIe由OS 108可訪問。因此,在本文中提供了如下能力:將存儲(chǔ)(包括DAS)虛擬化,使得OS 108將其視為DAS,即使存儲(chǔ)被通過諸如以太網(wǎng)之類的網(wǎng)絡(luò)協(xié)議實(shí)際上訪問并且OS 108不被要求做不同于將關(guān)于本地物理存儲(chǔ)要求的事的任何事。
在本文中提供了用于提供跨結(jié)構(gòu)的DAS的方法和系統(tǒng),包括使虛擬化DAS暴露于OS 108而不要求OS 108的任何修改。
在本文中還提供了用于存儲(chǔ)適配器(指的是目標(biāo)存儲(chǔ)系統(tǒng))的虛擬化的方法和系統(tǒng)。
在本文中提供了用于將存儲(chǔ)發(fā)起和存儲(chǔ)目標(biāo)確定組合在單個(gè)硬件系統(tǒng)中的方法和系統(tǒng)。在實(shí)施例中,這些可被PCIe總線110附著。可應(yīng)用單根虛擬化功能(SR-IOV)來獲取任何標(biāo)準(zhǔn)設(shè)備并使其動(dòng)作如同其是數(shù)百個(gè)此類設(shè)備一樣。本文中公開的實(shí)施例包括使用SR-IOV來給出物理存儲(chǔ)適配器的多個(gè)虛擬實(shí)例。SR-IOV是將IO功能虛擬化的PCIe標(biāo)準(zhǔn),并且雖然其已被用于網(wǎng)絡(luò)接口,但本文中公開的系統(tǒng)和方法將其擴(kuò)展至用于存儲(chǔ)設(shè)備。因此,在本文中提供的是虛擬目標(biāo)存儲(chǔ)系統(tǒng)。
實(shí)施例可以包括交換機(jī)形狀因數(shù)或網(wǎng)絡(luò)接口控制器,其中本文中公開的系統(tǒng)和方法可以包括(在軟件或硬件中的)主機(jī)代理。實(shí)施例可以包括在前端與后端之間破壞(break up)虛擬化。
實(shí)施例可以包括用于融合網(wǎng)絡(luò)和目標(biāo)存儲(chǔ)控制器的各種部署點(diǎn)。雖然某些實(shí)施例將融合設(shè)備定位于主機(jī)計(jì)算系統(tǒng)102上,但在其他情況下,可以將盤移動(dòng)至另一箱子(例如,通過以太網(wǎng)連接到在下面的各種箱子之間切換的交換機(jī))。雖然可能需要對(duì)層進(jìn)行虛擬化,但可以將存儲(chǔ)分離,使得可以單獨(dú)地對(duì)存儲(chǔ)和計(jì)算資源進(jìn)行擴(kuò)展。并且,然后可以使能刀片服務(wù)器(例如,無狀態(tài)服務(wù)器)。以前本來會(huì)涉及昂貴的刀片服務(wù)器且被附著到存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)的安裝可以代之以附著到交換機(jī)。在實(shí)施例中,這包括其中在機(jī)架級(jí)別處將資源解聚合的“機(jī)架規(guī)模”架構(gòu)。
本文中公開的方法和系統(tǒng)包括用于將各種類型的非DAS存儲(chǔ)虛擬化為融合聯(lián)網(wǎng)/目標(biāo)存儲(chǔ)裝置中的DAS存儲(chǔ)的方法和系統(tǒng)。在實(shí)施例中,可在將存儲(chǔ)作為DAS暴露給OS棧108的同時(shí)使用到存儲(chǔ)系統(tǒng)的各種前端協(xié)議將期望的不管什么存儲(chǔ)虛擬化為DAS。
本文中公開的方法和系統(tǒng)包括融合網(wǎng)絡(luò)/存儲(chǔ)適配器的虛擬化。從業(yè)務(wù)觀點(diǎn)出發(fā),可將系統(tǒng)組合成一個(gè)。將存儲(chǔ)和網(wǎng)絡(luò)適配器組合并加入虛擬化提供顯著的優(yōu)點(diǎn)。例如,存在具有兩個(gè)PCIe總線110的單個(gè)主機(jī)102。為了從PCIe 110進(jìn)行路由,您可以使用比如RDMA的系統(tǒng)來到達(dá)另一機(jī)器/主機(jī)102。如果想要單獨(dú)地完成這一點(diǎn),必須單獨(dú)地配置存儲(chǔ)和網(wǎng)絡(luò)RDMA系統(tǒng)。一個(gè)必須結(jié)合每一個(gè)并將在兩個(gè)不同的地點(diǎn)對(duì)其進(jìn)行配置。在融合場(chǎng)景中,設(shè)立QoS的整個(gè)步驟(由于這是RDMA且在別處存在另一結(jié)構(gòu))是零接觸過程,因?yàn)橛媒M合的存儲(chǔ)聯(lián)網(wǎng),可以在單個(gè)步驟中對(duì)兩者進(jìn)行配置。也就是說,一旦知道了存儲(chǔ),就不需要單獨(dú)地在網(wǎng)絡(luò)上設(shè)立QoS。
本文中公開的方法和系統(tǒng)包括在硬件中、可選地在融合網(wǎng)絡(luò)適配器/存儲(chǔ)適配器裝置中體現(xiàn)的聯(lián)網(wǎng)和存儲(chǔ)功能的虛擬化和/或間接(indirection)。雖然虛擬化是一種級(jí)別的間接,但協(xié)議是另一級(jí)別的間接。本文中公開的系統(tǒng)和方法可將適合于大部分操作系統(tǒng)用來處理本地存儲(chǔ)的協(xié)議(諸如NVMe)轉(zhuǎn)換成另一協(xié)議,諸如SAS、SATA等??蓪⒁恢滦越涌诒┞队贠S 108,諸如NVMe,但是在后端中,可轉(zhuǎn)換成成本有效的不管什么存儲(chǔ)介質(zhì)。這為用戶提供了價(jià)格/性能優(yōu)點(diǎn)。如果組件更加便宜/更快速,則可以連接其中的任何一個(gè)。后端可以是任何東西,包括NVMe。
在本文中提供了包括用于裝置中的設(shè)備和存儲(chǔ)功能的融合數(shù)據(jù)路徑的方法和系統(tǒng)。替換實(shí)施例可以提供用于交換機(jī)中的網(wǎng)絡(luò)和存儲(chǔ)功能的融合數(shù)據(jù)路徑。
在實(shí)施例中,本文中公開的方法和系統(tǒng)包括存儲(chǔ)/網(wǎng)絡(luò)隧道,其中通過網(wǎng)絡(luò)的存儲(chǔ)系統(tǒng)之間的隧道路徑并未涉及源或目標(biāo)計(jì)算機(jī)的操作系統(tǒng)。在常規(guī)系統(tǒng)中,具有單獨(dú)的存儲(chǔ)和網(wǎng)絡(luò)路徑,因此遠(yuǎn)程地訪問存儲(chǔ),需要到和來自存儲(chǔ)器、I/O總線等的大量拷貝。將兩個(gè)路徑合并意味著存儲(chǔ)業(yè)務(wù)徑直轉(zhuǎn)到網(wǎng)絡(luò)上。每個(gè)計(jì)算機(jī)的OS 108僅看到本地盤。另一優(yōu)點(diǎn)是編程的簡(jiǎn)單化。用戶不需要單獨(dú)地對(duì)SAN進(jìn)行編程,意味著在本文中公開的方法包括一步可編程SAN。作為要求區(qū)等的發(fā)現(xiàn)和規(guī)范的替代,加密、附著、分離等可在中央并以編程方式完成。
本文中公開的實(shí)施例可以包括將存儲(chǔ)虛擬化給OS 108,使得OS 108將存儲(chǔ)視為本地盤。本文中公開的方法和系統(tǒng)中所涉及的間接級(jí)別允許融合系統(tǒng)不僅隱藏存儲(chǔ)介質(zhì)的位置,而且隱藏其介質(zhì)類型。所有OS看到的是存在本地盤,即使實(shí)際存儲(chǔ)位于遠(yuǎn)程和/或是不同類型的,諸如SAN。因此,提供了存儲(chǔ)的虛擬化,其中OS 108和應(yīng)用不必進(jìn)行改變。可以隱藏在后面配置復(fù)雜存儲(chǔ)類型正常地需要的所有管理、分層策略、備份策略、保護(hù)策略等。
提供了用于選擇間接在存儲(chǔ)虛擬化中的何處發(fā)生的方法和系統(tǒng)。某些功能的虛擬化可用硬件(例如,在主機(jī)上的適配器中、在交換機(jī)中以及用不同的形狀因數(shù)(例如,F(xiàn)PGA或ASIC))和用軟件發(fā)生。不同的拓?fù)淇捎?,諸如其中在主機(jī)上、在機(jī)架交換機(jī)的頂部上或者以其組合的方式部署本文中公開的系統(tǒng)和方法。進(jìn)入選擇的因素包括使用容易性。想要運(yùn)行無狀態(tài)服務(wù)器的用戶可優(yōu)選機(jī)架頂部。不關(guān)心該方法的用戶可能優(yōu)選主機(jī)上的控制器。
本文中公開的方法和系統(tǒng)包括提供以太網(wǎng)NVMe。這些方法可以是用于在設(shè)備之間使用的隧道協(xié)議的基礎(chǔ)。NVMe是按照慣例意圖轉(zhuǎn)到本地PCIe的適當(dāng)?shù)腄AS協(xié)議。本文中公開的實(shí)施例可以通過以太網(wǎng)隧道傳輸NVMe協(xié)議業(yè)務(wù)。NVMe(非易失性存儲(chǔ)器express)是在Linux和Windows中提供對(duì)基于PCIe的Flash的訪問的協(xié)議。這通過繞過在常規(guī)系統(tǒng)中使用的軟件棧來提供高性能。
本文中公開的實(shí)施例可以包括提供被虛擬化且動(dòng)態(tài)地分配的NVMe設(shè)備。在實(shí)施例中,可背載NVMe,但是對(duì)NVMe設(shè)備進(jìn)行劃分并虛擬化且動(dòng)態(tài)地分配。在實(shí)施例中,在軟件中不存在覆蓋區(qū)。操作系統(tǒng)保持相同(僅僅是看到融合網(wǎng)絡(luò)/存儲(chǔ)卡的小驅(qū)動(dòng))。這導(dǎo)致比如直接附著盤一樣呈現(xiàn)的虛擬存儲(chǔ),但差別在于現(xiàn)在我們跨網(wǎng)絡(luò)將此類設(shè)備匯集在一起。
在本文中提供了用于提供具有比如存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)中的共享優(yōu)點(diǎn)的直接附著存儲(chǔ)(DAS)的簡(jiǎn)單化的方法和系統(tǒng)。在本文中公開的各種實(shí)施例中的每個(gè)融合裝置可以是主機(jī),并且任何存儲(chǔ)驅(qū)動(dòng)器可在特定主機(jī)本地,但是被其他主機(jī)看到(如在SAN或其他網(wǎng)絡(luò)可訪問存儲(chǔ)中一樣)。由本公開的網(wǎng)絡(luò)/存儲(chǔ)控制器使能的每個(gè)箱子中的驅(qū)動(dòng)器表現(xiàn)如同SAN一樣(即,在網(wǎng)絡(luò)上可用),但是管理方法簡(jiǎn)單得多。當(dāng)存儲(chǔ)管理員設(shè)立SAN時(shí),典型的企業(yè)可使整個(gè)部門設(shè)立用于SAN(例如,光纖通道交換機(jī))的區(qū),諸如設(shè)立“誰看到什么”。該知識(shí)是預(yù)加載的,并且用戶必須讓SAN管理員完成該工作以將其設(shè)立。在典型的傳統(tǒng)SAN架構(gòu)中不存在可編程性。本文中公開的方法和系統(tǒng)提供了在網(wǎng)絡(luò)上的本地單元,但是該本地單元仍可以訪問其存儲(chǔ)而不必經(jīng)歷比如區(qū)定義等復(fù)雜管理步驟。這些設(shè)備可以僅僅通過兼具網(wǎng)絡(luò)和存儲(chǔ)意識(shí)而完成SAN所完成的東西。同樣地,其表示第一編程SAN。
本文中公開的方法和系統(tǒng)可以包括由提供融合網(wǎng)絡(luò)和存儲(chǔ)數(shù)據(jù)管理的硬件裝置使能的持久性、有狀態(tài)、解集存儲(chǔ)。
本文中公開的方法和系統(tǒng)還可以包括網(wǎng)絡(luò)和存儲(chǔ)數(shù)據(jù)管理在單個(gè)裝置中的融合,適合于支持用于虛擬化的容器的使用。該方法和系統(tǒng)與新興的容器生態(tài)系統(tǒng)兼容,但是提供某些附加優(yōu)點(diǎn)。
在本文中公開了用于實(shí)現(xiàn)NVMe的虛擬化的方法和系統(tǒng)。不管多少資源至多少目的地,只要來自源的數(shù)據(jù)在進(jìn)入集線器之前首先被串行化,則集線器連續(xù)地將數(shù)據(jù)分發(fā)到指定目的地。如果是這樣,則可以將諸如DMA引擎之類的數(shù)據(jù)傳輸源縮減為僅一個(gè)拷貝。這可以包括各種使用場(chǎng)景。在一個(gè)場(chǎng)景中,針對(duì)NVMe虛擬功能(VF),如果其全部被連接到同一PCIe總線,則不管多少VF被配置,數(shù)據(jù)將串行地進(jìn)入VF的此池,因此存在僅一個(gè)DMA引擎,并且只需要一個(gè)存儲(chǔ)塊(用于控制信息)。在另一使用場(chǎng)景中,針對(duì)具有分立盤/控制器的池的盤存儲(chǔ)系統(tǒng),如果數(shù)據(jù)源自于物理總線,即PCIe,由于數(shù)據(jù)正在串行地進(jìn)入此盤池,然后不管多少盤/控制器在池中,可以將諸如DMA引擎之類的傳輸資源縮減至僅一個(gè)而不是每個(gè)控制器一個(gè)。
根據(jù)各種示例性且非限制性實(shí)施例,一種設(shè)備包括:融合輸入/輸出控制器,其包括物理目標(biāo)存儲(chǔ)介質(zhì)控制器、物理網(wǎng)絡(luò)接口控制器;以及存儲(chǔ)介質(zhì)控制器與網(wǎng)絡(luò)接口控制器之間的網(wǎng)關(guān),其中網(wǎng)關(guān)提供用于存儲(chǔ)介質(zhì)控制器與網(wǎng)絡(luò)接口控制器之間的存儲(chǔ)業(yè)務(wù)和網(wǎng)絡(luò)業(yè)務(wù)的直接連接。
根據(jù)各種示例性且非限制性實(shí)施例,一種存儲(chǔ)設(shè)備的虛擬化的方法包括:訪問對(duì)按照第一存儲(chǔ)協(xié)議的指令進(jìn)行響應(yīng)的物理存儲(chǔ)設(shè)備,在第一存儲(chǔ)協(xié)議和第二存儲(chǔ)協(xié)議之間轉(zhuǎn)換指令,以及使用第二協(xié)議,將物理存儲(chǔ)設(shè)備呈現(xiàn)給操作系統(tǒng),使得可以動(dòng)態(tài)地提供物理存儲(chǔ)設(shè)備的存儲(chǔ),不管物理存儲(chǔ)設(shè)備在使用操作系統(tǒng)的主機(jī)計(jì)算系統(tǒng)的本地還是遠(yuǎn)程。
根據(jù)各種示例性且非限制性實(shí)施例,一種促進(jìn)應(yīng)用與容器中的至少一個(gè)的遷移的方法包括提供融合存儲(chǔ)和聯(lián)網(wǎng)控制器,其中網(wǎng)關(guān)在沒有主機(jī)計(jì)算機(jī)的操作系統(tǒng)的介入的情況下提供用于設(shè)備的存儲(chǔ)組件與聯(lián)網(wǎng)組件之間的網(wǎng)絡(luò)和存儲(chǔ)業(yè)務(wù)的連接,并且將所述至少一個(gè)應(yīng)用或容器映射到被融合存儲(chǔ)和聯(lián)網(wǎng)控制器控制的目標(biāo)物理存儲(chǔ)設(shè)備,使得當(dāng)應(yīng)用或容器移動(dòng)至另一計(jì)算系統(tǒng)時(shí),在沒有目標(biāo)物理存儲(chǔ)器被附著到的主機(jī)系統(tǒng)的操作系統(tǒng)的介入的情況下,該應(yīng)用或容器可以訪問目標(biāo)物理存儲(chǔ)器。
根據(jù)各種示例性且非限制性實(shí)施例,一種為網(wǎng)絡(luò)提供服務(wù)質(zhì)量(QoS)的方法包括提供融合存儲(chǔ)和聯(lián)網(wǎng)控制器,其中網(wǎng)關(guān)在沒有主機(jī)計(jì)算機(jī)的操作系統(tǒng)、管理程序或在CPU上運(yùn)行的其他軟件的介入的情況下提供用于設(shè)備的存儲(chǔ)組件與聯(lián)網(wǎng)組件之間的網(wǎng)絡(luò)和存儲(chǔ)業(yè)務(wù)的連接,并且也在沒有主機(jī)計(jì)算機(jī)的操作系統(tǒng)、管理程序或在CPU上運(yùn)行的其他軟件的介入的情況下,管理與在其數(shù)據(jù)路徑中部署了存儲(chǔ)和聯(lián)網(wǎng)控制器的網(wǎng)絡(luò)相關(guān)的至少一個(gè)服務(wù)質(zhì)量(QoS)參數(shù),此類管理是基于由融合存儲(chǔ)和聯(lián)網(wǎng)控制器處理的存儲(chǔ)業(yè)務(wù)和網(wǎng)絡(luò)業(yè)務(wù)中的至少一個(gè)。
QoS可基于各種參數(shù),諸如帶寬參數(shù)、網(wǎng)絡(luò)等待時(shí)間參數(shù)、IO性能參數(shù)、吞吐量參數(shù)、存儲(chǔ)類型參數(shù)和存儲(chǔ)等待時(shí)間參數(shù)中的一個(gè)或多個(gè)。當(dāng)被通過融合存儲(chǔ)和網(wǎng)絡(luò)控制器提供存儲(chǔ)服務(wù)的應(yīng)用和容器中的至少一個(gè)從主機(jī)計(jì)算機(jī)遷移到另一計(jì)算機(jī)時(shí),可QoS被自動(dòng)地維持。同樣地,當(dāng)通過融合存儲(chǔ)和網(wǎng)絡(luò)控制器來服務(wù)于應(yīng)用和容器中的至少一個(gè)的至少一個(gè)目標(biāo)存儲(chǔ)設(shè)備從第一位置遷移至另一位置或多個(gè)位置時(shí),可QoS被自動(dòng)地維持。例如,可對(duì)存儲(chǔ)進(jìn)行擴(kuò)展,或者可選擇不同的存儲(chǔ)介質(zhì)類型,以隨著要求增加而滿足存儲(chǔ)需要。在實(shí)施例中,可以提供安全特征,諸如網(wǎng)絡(luò)業(yè)務(wù)數(shù)據(jù)的加密、存儲(chǔ)中數(shù)據(jù)的加密或兩者。也可以提供各種存儲(chǔ)特征,諸如壓縮、保護(hù)級(jí)別(例如,RAID級(jí)別)、不同存儲(chǔ)介質(zhì)類型的使用、全局重復(fù)數(shù)據(jù)刪除以及實(shí)現(xiàn)恢復(fù)點(diǎn)目標(biāo)(RPO)和恢復(fù)時(shí)間目標(biāo)(RTO)中的至少一個(gè)的快照間隔。
附圖說明
附圖用于進(jìn)一步圖示各種實(shí)施例及用于解釋各種原理和優(yōu)點(diǎn),其全部根據(jù)本文中公開的系統(tǒng)和方法,在所述附圖中同樣的參考數(shù)字指的是貫穿單獨(dú)的視圖的相同或功能上類似的元素并且所述附圖連同下文的詳細(xì)描述被結(jié)合在本說明書中并且形成本說明書的部分。
圖1圖示了根據(jù)示例性且非限制性實(shí)施例的一般架構(gòu)。
圖2圖示了根據(jù)示例性且非限制性實(shí)施例的計(jì)算機(jī)系統(tǒng)。
圖3圖示了根據(jù)示例性且非限制性實(shí)施例的融合解決方案。
圖4圖示了根據(jù)示例性且非限制性實(shí)施例的由融合解決方案使能的兩個(gè)計(jì)算系統(tǒng)。
圖5圖示了根據(jù)示例性且非限制性實(shí)施例的融合控制器。
圖6圖示了根據(jù)示例性且非限制性實(shí)施例的融合控制器的部署。
圖7圖示了根據(jù)示例性且非限制性實(shí)施例的多個(gè)系統(tǒng)。
圖8圖示了根據(jù)示例性且非限制性實(shí)施例的現(xiàn)場(chǎng)可編程門陣列(FPGA)的框圖。
圖9圖示了根據(jù)示例性且非限制性實(shí)施例的控制器卡的架構(gòu)。
圖10圖示了根據(jù)示例性且非限制性實(shí)施例的軟件棧。
圖11-15圖示了根據(jù)示例性且非限制性實(shí)施例的跨多個(gè)系統(tǒng)的應(yīng)用容器的移動(dòng)。
圖16圖示了根據(jù)示例性且非限制性實(shí)施例的分組傳輸。
圖17圖示了根據(jù)示例性且非限制性實(shí)施例的存儲(chǔ)訪問方案。
圖18圖示了根據(jù)示例性且非限制性實(shí)施例的文件系統(tǒng)的操作。
圖19圖示了根據(jù)示例性且非限制性實(shí)施例的分布式文件服務(wù)器的操作。
圖20圖示了根據(jù)示例性且非限制性實(shí)施例的高性能分布式文件服務(wù)器(DFS)。
圖21圖示了根據(jù)示例性且非限制性實(shí)施例的系統(tǒng)。
圖22圖示了根據(jù)示例性且非限制性實(shí)施例的主機(jī)。
圖23圖示了根據(jù)示例性且非限制性實(shí)施例的訪問數(shù)據(jù)塊的應(yīng)用。
圖24圖示了根據(jù)示例性且非限制性實(shí)施例的訪問數(shù)據(jù)塊的應(yīng)用。
圖25圖示了根據(jù)示例性且非限制性實(shí)施例的系統(tǒng)。
圖26圖示了根據(jù)示例性且非限制性實(shí)施例的方法。
圖27圖示了根據(jù)示例性且非限制性實(shí)施例的方法。
圖28圖示了根據(jù)示例性且非限制性實(shí)施例的方法。
有經(jīng)驗(yàn)的技術(shù)人員將領(lǐng)會(huì)到圖中的元件為了簡(jiǎn)單和清楚而被圖示且不一定被按比例描繪。例如,圖中的某些元件的尺寸可能相對(duì)于其他元件被放大以有助于提高對(duì)本文中公開的系統(tǒng)和方法的實(shí)施例的理解。
具體實(shí)施方式
現(xiàn)在將通過參考附圖和展示來描述本公開的各種說明性、非限制性實(shí)施例而詳細(xì)地描述本公開。然而,本公開可以許多不同的形式體現(xiàn),并且不應(yīng)被解釋為限于在本文中闡述的說明性實(shí)施例。相反地,實(shí)施例被提供以使得本公開將是透徹的并且將向本領(lǐng)域那些技術(shù)人員全面地傳達(dá)本公開的概念。應(yīng)查閱權(quán)利要求以確定本公開的真正范圍。
在詳細(xì)地描述根據(jù)本文中公開的系統(tǒng)和方法的實(shí)施例之前,應(yīng)觀察到實(shí)施例主要存在于與融合聯(lián)網(wǎng)和存儲(chǔ)相關(guān)的方法步驟和/或系統(tǒng)組件的組合中。因此,系統(tǒng)組件和方法步驟已經(jīng)被在圖中通過常規(guī)符號(hào)在適當(dāng)?shù)那闆r下表示,僅示出了關(guān)于理解本文中公開的系統(tǒng)和方法的實(shí)施例的那些特定細(xì)節(jié)以便不利用對(duì)本文領(lǐng)域那些普通技術(shù)人員而言將容易地顯而易見的細(xì)節(jié)使本公開模糊。
參考圖3,融合解決方案300可以包括三個(gè)重要方面并且可被實(shí)現(xiàn)在包括硬件和軟件模塊和功能的組合的硬件設(shè)備中。第一,可在網(wǎng)絡(luò)控制器118與存儲(chǔ)控制器112之間提供直通數(shù)據(jù)路徑304,使得向和從網(wǎng)絡(luò)的對(duì)存儲(chǔ)的訪問可以是直接的,而不要求OS棧108、PCIe總線110或CPU 106的任何介入。第二,可以提供諸如對(duì)存儲(chǔ)設(shè)備302的直通式存儲(chǔ)棧訪問,諸如向和從本地主機(jī)上的實(shí)體的對(duì)存儲(chǔ)的訪問,其允許繞過用于存儲(chǔ)訪問的復(fù)雜傳統(tǒng)軟件棧,諸如SCSI/SAS/SATA棧。第三,可以諸如通過用以保留數(shù)據(jù)和調(diào)度對(duì)數(shù)據(jù)跨網(wǎng)絡(luò)的傳送的機(jī)制來提供網(wǎng)絡(luò)的端到端擁塞管理和流控制,其保證目標(biāo)的數(shù)據(jù)對(duì)遠(yuǎn)程發(fā)起者的可用性并且在所述目標(biāo)的數(shù)據(jù)流過中間網(wǎng)絡(luò)結(jié)構(gòu)交換機(jī)時(shí)使業(yè)務(wù)的擁塞最小化。第一和第二方面從數(shù)據(jù)的路徑移除軟件棧(因此移除CPU 106和存儲(chǔ)器),消除了冗余或不必要的移動(dòng)和處理。端到端擁塞管理和流控制遞送數(shù)據(jù)的確定且可靠的傳輸。
如上面記載的那樣,融合解決方案300的一個(gè)益處是操作系統(tǒng)棧108通過常規(guī)PCIe 110或類似總線連接到融合解決方案300,使得OS棧108看到融合解決方案300以及其通過到存儲(chǔ)設(shè)備302的直通而控制的任何貯存器,如一個(gè)或多個(gè)本地持久性設(shè)備,即使物理貯存器位于遠(yuǎn)程。除了其他之外,這還包括用于DAS 308的虛擬化的能力,其可以包括通過結(jié)構(gòu)將DAS 308虛擬化,即獲取DAS 308存儲(chǔ)系統(tǒng)并將其移到計(jì)算系統(tǒng)102外面且將其放在網(wǎng)絡(luò)上。融合解決方案300的存儲(chǔ)控制器112可經(jīng)由諸如SAS、SATA或NVMe之類的各種已知協(xié)議連接到并控制網(wǎng)絡(luò)122上的DAS 308。在實(shí)施例中,虛擬化可以包括將DAS 308切分成任意的名字空間。在實(shí)施例中,使得虛擬化DAS 308如同其是實(shí)際的、本地的、物理的DAS對(duì)操作系統(tǒng)可訪問,諸如經(jīng)由諸如NVMe之類的標(biāo)準(zhǔn)協(xié)議、通過到融合解決方案300的存儲(chǔ)控制器112的PCIe總線 110由OS 108可訪問。再次地,OS 108將整個(gè)解決方案300視為本地的物理設(shè)備,諸如DAS。因此,在本文中提供了將存儲(chǔ)(包括DAS及其他存儲(chǔ)類型,諸如SAN 310)虛擬化的能力,使得OS 108將任何存儲(chǔ)類型視為DAS,即使存儲(chǔ)實(shí)際上被通過網(wǎng)絡(luò)112訪問,并且OS 108不被要求做不同于將關(guān)于本地物理存儲(chǔ)要求事情的任何事。在其中存儲(chǔ)設(shè)備302是SAN 310存儲(chǔ)的情況下,融合解決方案的存儲(chǔ)控制器112可通過被用于存儲(chǔ)區(qū)域網(wǎng)絡(luò)的適當(dāng)協(xié)議(諸如因特網(wǎng)小型計(jì)算系統(tǒng)接口(iSCSI)、光纖通道(FC)或通過以太網(wǎng)的光纖通道(FCoE))來控制SAN 310。因此,融合解決方案300為OS棧108提供了從在存儲(chǔ)中使用的任何其他協(xié)議(除其他之外還諸如以太網(wǎng)、SAS、SATA、NVMe、iSCSI、FC或FCoE)到使得不同的存儲(chǔ)類型和協(xié)議表現(xiàn)為通過PCIe 110可訪問的本地存儲(chǔ)的比如NVMe的簡(jiǎn)單協(xié)議的轉(zhuǎn)換。該轉(zhuǎn)換進(jìn)而使能存儲(chǔ)適配器(指的是任何種類的目標(biāo)存儲(chǔ)系統(tǒng))的虛擬化。因此,本文中公開的方法和系統(tǒng)包括用于在融合聯(lián)網(wǎng)/目標(biāo)存儲(chǔ)裝置300中將各種類型的非DAS存儲(chǔ)虛擬化為DAS的方法和系統(tǒng)。在實(shí)施例中,人們可以在將存儲(chǔ)作為DAS暴露給OS棧108時(shí)使用到存儲(chǔ)系統(tǒng)的各種協(xié)議將期望的不管什么存儲(chǔ)虛擬化為DAS。因此,在本文中提供了用于存儲(chǔ)設(shè)備的虛擬化(諸如使用NVMe和類似協(xié)議的那些)以及那些虛擬設(shè)備到不同的物理設(shè)備的轉(zhuǎn)換(諸如使用SATA的轉(zhuǎn)換)的方法和系統(tǒng)。
其中通過網(wǎng)絡(luò)112的存儲(chǔ)系統(tǒng)之間的隧道路徑不涉及源或目標(biāo)計(jì)算機(jī)的操作系統(tǒng)的存儲(chǔ)/網(wǎng)絡(luò)隧道304使能多個(gè)益處。在常規(guī)系統(tǒng)中,其具有單獨(dú)的存儲(chǔ)和網(wǎng)絡(luò)路徑,因此遠(yuǎn)程地訪問存儲(chǔ)要求到和來自存儲(chǔ)器、I/O總線等的大量拷貝。將兩個(gè)路徑合并意味著存儲(chǔ)業(yè)務(wù)徑直到網(wǎng)絡(luò)上。優(yōu)點(diǎn)是編程的簡(jiǎn)單。用戶不需要單獨(dú)地對(duì)SAN 310進(jìn)行編程,意味著在本文中公開的方法使能一步可編程SAN 310。可在中央并以編程方式完成配置、加密、附著、分離等,而不是要求對(duì)區(qū)(zone)的發(fā)現(xiàn)和規(guī)范等。作為示例,典型的SAN由“發(fā)起者”、“目標(biāo)”和連接發(fā)起者與目標(biāo)的交換機(jī)結(jié)構(gòu)組成。通常,哪些發(fā)起者看到哪些目標(biāo)由結(jié)構(gòu)交換機(jī)定義/控制,被稱作“區(qū)”。因此,如果發(fā)起者移動(dòng)或目標(biāo)移動(dòng),則需要更新區(qū)。SAN的第二控制部分通常屬于“目標(biāo)”。其可以控制哪個(gè)發(fā)起者端口可以看到什么邏輯單元號(hào)(LUN)(由目標(biāo)暴露的存儲(chǔ)單元)。這通常被稱為L(zhǎng)UN掩蔽和LUN映射。再次地,如果發(fā)起者移動(dòng)位置,則必須對(duì)“目標(biāo)”重新編程?,F(xiàn)在考慮的是在此類環(huán)境中如果應(yīng)用(諸如由于失效轉(zhuǎn)移、負(fù)載再平衡等)從一個(gè)主機(jī)移動(dòng)至另一個(gè),則需要更新分區(qū)和LUN掩蔽/映射。替換地,可以對(duì)SAN預(yù)編程,使得每個(gè)發(fā)起者看到每個(gè)目標(biāo)。然而,這樣做導(dǎo)致不可擴(kuò)展且不安全的SAN。在貫穿本公開描述的替換解決方案中,應(yīng)用、容器或存儲(chǔ)設(shè)備的此類移動(dòng)不要求任何SAN重新編程,導(dǎo)致零接觸解決方案。由融合解決方案300維持和執(zhí)行的映射允許應(yīng)用或容器、目標(biāo)存儲(chǔ)介質(zhì)或兩者被獨(dú)立地移動(dòng)(包括到多個(gè)位置)和擴(kuò)展(scale),而沒有由OS、管理程序或在主機(jī)CPU上運(yùn)行的其他軟件的介入。
OS 108將存儲(chǔ)視為本地盤的事實(shí)允許存儲(chǔ)的簡(jiǎn)化虛擬化。本文中公開的方法和系統(tǒng)中所涉及的間接的級(jí)別允許融合系統(tǒng)300不僅隱藏存儲(chǔ)介質(zhì)的位置而且隱藏存儲(chǔ)介質(zhì)的介質(zhì)類型。OS 108看到的全部是存在本地盤,即使實(shí)際存儲(chǔ)位于遠(yuǎn)程和/或是不同的類型,諸如SAN 310。因此,通過融合解決方案300來提供存儲(chǔ)的虛擬化,其中OS 108和應(yīng)用不必改變。可以隱藏在后面配置復(fù)雜的存儲(chǔ)類型正常地需要的管理、分層策略、備份策略、保護(hù)策略等中的全部。
融合解決方案300使能利用存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)的優(yōu)點(diǎn)的直接附著存儲(chǔ)(DAS)的簡(jiǎn)單。在本文中公開的各種實(shí)施例中的每個(gè)融合裝置300可充當(dāng)主機(jī),并且任何存儲(chǔ)設(shè)備302可能對(duì)于特定主機(jī)而言是本地的但是被其他主機(jī)看到(如在SAN 310或其他網(wǎng)絡(luò)可訪問存儲(chǔ)中的情況)。由本公開的網(wǎng)絡(luò)/存儲(chǔ)控制器使能的每個(gè)箱子中的驅(qū)動(dòng)器行為像SAN 310(例如,在網(wǎng)絡(luò)上可用),但是管理方法簡(jiǎn)單得多。當(dāng)存儲(chǔ)管理員正常地設(shè)立SAN 310時(shí),典型的企業(yè)可使整個(gè)部門設(shè)立用于SAN 310(例如,光纖通道交換機(jī))的區(qū),諸如設(shè)立“誰看到什么”。該知識(shí)必須被預(yù)加載,并且用戶必須要求SAN 310管理員做該工作以將其設(shè)立。在典型的傳統(tǒng)SAN 310架構(gòu)中不存在可編程性。本文中公開的方法和系統(tǒng)提供了在網(wǎng)絡(luò)上的本地單元,但是本地單元仍可以訪問其存儲(chǔ)而不必經(jīng)歷比如區(qū)定義等的復(fù)雜管理步驟。這些設(shè)備可以僅通過具有網(wǎng)絡(luò)和存儲(chǔ)意識(shí)兩者而做SAN所做的事。照此(as such),其表示第一可編程SAN。
可以將解決方案300描述為“融合IO控制器”,其控制存儲(chǔ)介質(zhì)302和網(wǎng)絡(luò)122兩者。該融合控制器300不僅僅是存儲(chǔ)控制器112和網(wǎng)絡(luò)控制器(NIC)118的簡(jiǎn)單集成。存儲(chǔ)和網(wǎng)絡(luò)的實(shí)際功能被合并,使得隨著數(shù)據(jù)向和從網(wǎng)絡(luò)接口穿過而執(zhí)行存儲(chǔ)功能。可在諸如如下文詳述的FPGA(一個(gè)或多個(gè))或ASIC(一個(gè)或多個(gè))之類的硬件解決方案中提供該功能。
參考圖4,由融合解決方案300使能的兩個(gè)或更多計(jì)算系統(tǒng)102可用作用于相應(yīng)的存儲(chǔ)目標(biāo)的主機(jī),其中通過將存儲(chǔ)和網(wǎng)絡(luò)合并以及控制兩個(gè)接口,可以諸如通過點(diǎn)到點(diǎn)路徑400或者通過到由融合解決方案300使能的另一計(jì)算機(jī)系統(tǒng)102的以太網(wǎng)交換機(jī)402經(jīng)由網(wǎng)絡(luò)122遠(yuǎn)程地實(shí)現(xiàn)對(duì)存儲(chǔ)302的直接訪問而不穿過內(nèi)部總線或CPU/軟件工作??梢詫?shí)現(xiàn)最高性能(高IOP和低等待時(shí)間)。進(jìn)一步地,現(xiàn)在可以跨集群匯集存儲(chǔ)資源302。在圖4中,這被通過點(diǎn)線橢圓404概念性地圖示。
在實(shí)施例中,可將融合解決方案300包括在主機(jī)計(jì)算系統(tǒng)102上,其具有如圖1中描繪的常規(guī)計(jì)算系統(tǒng)的各種組件連同如結(jié)合圖3描述的融合IO控制器300。參考圖5,在替換實(shí)施例中,可將融合控制器300布置在交換機(jī)(諸如機(jī)架交換機(jī)的頂部)中,因此使能使能存儲(chǔ)的交換機(jī)500。交換機(jī)可駐留在網(wǎng)絡(luò)122上并由諸如常規(guī)計(jì)算系統(tǒng)102的網(wǎng)絡(luò)控制器118之類的網(wǎng)絡(luò)控制器118訪問。
參考圖6,可部署其中融合控制器300既被布置在一個(gè)或多個(gè)主機(jī)計(jì)算系統(tǒng)102上又被布置在使能存儲(chǔ)的交換機(jī)500上的系統(tǒng),所述使能存儲(chǔ)的交換機(jī)500可被連接到由融合解決方案300使能的系統(tǒng)102和非使能系統(tǒng)102。如上文記載的那樣,用于主機(jī)計(jì)算系統(tǒng)102上和使能存儲(chǔ)的交換機(jī)500上的(一個(gè)或多個(gè))融合控制器300的目標(biāo)存儲(chǔ)302可以跨網(wǎng)絡(luò)對(duì)彼此可見,諸如被視為諸如對(duì)虛擬化解決方案而言的統(tǒng)一資源??偠灾诒竟_的各種替換實(shí)施例中,包括處理同一設(shè)備上的經(jīng)融合的網(wǎng)絡(luò)和存儲(chǔ)業(yè)務(wù)的智能可以位于主機(jī)系統(tǒng)中、交換機(jī)中或兩者。
本文中公開的實(shí)施例因此可以包括交換機(jī)形狀因數(shù)或網(wǎng)絡(luò)接口控制器或兩者,其可以包括主機(jī)代理(在軟件或硬件中)。這些變化的部署允許諸如在主機(jī)上和/或在交換機(jī)上和/或在前端與后端之間破壞虛擬化能力。雖然可能需要層來將某些功能虛擬化,但可以將存儲(chǔ)分離,使得可以對(duì)存儲(chǔ)和計(jì)算資源進(jìn)行單獨(dú)地?cái)U(kuò)展。并且,然后可以使能刀片服務(wù)器(即,無狀態(tài)服務(wù)器)。以前本來會(huì)涉及昂貴的刀片服務(wù)器和被附著的存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)的安裝可以代之以附著到使能存儲(chǔ)的交換機(jī)500。在實(shí)施例中,這包括其中在機(jī)架級(jí)別處將資源解聚合的“機(jī)架規(guī)?!奔軜?gòu)。
提供了用于選擇間接發(fā)生在存儲(chǔ)的虛擬化中的何處的方法和系統(tǒng)。某些功能的虛擬化可能發(fā)生在硬件中(例如,在主機(jī)102上的融合適配器300中、在使能存儲(chǔ)的交換機(jī)500中、在變化的硬件形狀因數(shù)(例如,F(xiàn)PGA或ASIC)中)和在軟件中。不同的拓?fù)淇捎?,諸如其中本文中公開的方法和系統(tǒng)被部署在主機(jī)機(jī)器102上、在機(jī)架交換機(jī)500的頂部上或者被以其組合部署。進(jìn)入(go into)虛擬化應(yīng)該發(fā)生在何處的選擇的因素包括使用的容易。想要運(yùn)行無狀態(tài)服務(wù)器的用戶可優(yōu)選使能機(jī)架存儲(chǔ)的交換機(jī)500的頂部。不關(guān)心該方法的用戶可能優(yōu)選主機(jī)102上的融合控制器300。
圖7示出了用融合控制器300使能的一組系統(tǒng)的更詳細(xì)的視圖,其包括兩個(gè)計(jì)算機(jī)系統(tǒng)102(計(jì)算機(jī)系統(tǒng)1和計(jì)算機(jī)系統(tǒng)2)以及使能存儲(chǔ)的交換機(jī)500。諸如DAS 308和SAN 310之類的存儲(chǔ)設(shè)備302可被融合控制器300或使能存儲(chǔ)的交換機(jī)500控制。在任一情況下可使用SAS、SATA或NVMe協(xié)議來控制DAS 308。在任一情況下可使用iSCSI、FC或FCoE來控制SAN 310。具有存儲(chǔ)控制器300的主機(jī)102之間的連接可以通過點(diǎn)到點(diǎn)路徑400、通過以太網(wǎng)交換機(jī)402或者經(jīng)由使能存儲(chǔ)的交換機(jī)500,其還可以提供到常規(guī)計(jì)算系統(tǒng)的連接。如上文記載的那樣,具有智能融合控制器300的多個(gè)系統(tǒng)中的每個(gè)可以用作主機(jī)和用作其他主機(jī)看到的存儲(chǔ)目標(biāo)位置,從而出于計(jì)算系統(tǒng)102的操作系統(tǒng)108的目的提供被視為存儲(chǔ)的單個(gè)集群的選項(xiàng)。
本文中公開的方法和系統(tǒng)包括在硬件融合控制器300中(可選地在融合網(wǎng)絡(luò)適配器/存儲(chǔ)適配器裝置300中)體現(xiàn)的聯(lián)網(wǎng)和存儲(chǔ)功能的虛擬化和/或間接。雖然虛擬化是一個(gè)級(jí)別的間接,但協(xié)議是另一級(jí)別的間接。本文中公開的方法和系統(tǒng)可將適合于由大部分操作系統(tǒng)用來處理本地存儲(chǔ)的協(xié)議(諸如NVMe)轉(zhuǎn)換成另一協(xié)議,諸如SAS、SATA等??蓪⒅T如NVMe之類的一致性接口暴露到OS 108,并且在融合控制器300的另一側(cè)上可轉(zhuǎn)換成劃算的不管什么存儲(chǔ)介質(zhì)302。這給予用戶價(jià)格/性能優(yōu)點(diǎn)。如果組件更便宜/更快速,則可以連接其中的任一個(gè)。融合控制器300的側(cè)面可以面對(duì)任何種類的存儲(chǔ),包括NVMe。更進(jìn)一步地,存儲(chǔ)介質(zhì)類型可以是以下中的任何,包括但不限于HDD、SSD(基于SLC、MLC或TLC閃存(flash))、RAM等或其組合。
在實(shí)施例中,融合控制器可被適配成將NVMe虛擬功能虛擬化,并且被適配成通過以太網(wǎng)交換機(jī)402經(jīng)由NVMe提供對(duì)遠(yuǎn)程存儲(chǔ)設(shè)備302(諸如被連接到使能存儲(chǔ)的交換機(jī)500的遠(yuǎn)程存儲(chǔ)設(shè)備302)的訪問。因此,融合解決方案300使能通過以太網(wǎng)700的NVMe或NVMeoE的使用。因此,本文中公開的方法和系統(tǒng)包括通過以太網(wǎng)提供NVMe。這些方法可以是用于在設(shè)備之間使用的隧道協(xié)議的基礎(chǔ),所述設(shè)備諸如由融合控制器300和/或使能存儲(chǔ)的交換機(jī)500使能的主機(jī)計(jì)算系統(tǒng)102。NVMe是按照慣例意圖轉(zhuǎn)到本地PCIe 110的適合的DAS協(xié)議。本文中公開的實(shí)施例可通過以太網(wǎng)隧道傳送NVMe協(xié)議業(yè)務(wù)。NVMe(非易失性存儲(chǔ)器express)是在Linux和Windows中提供對(duì)基于PCIe的閃存的訪問的協(xié)議。這經(jīng)由繞過在常規(guī)系統(tǒng)中使用的軟件棧來提供高性能,同時(shí)避免了從(如由OS棧108所使用的)NVMe和通過以太網(wǎng)向其他設(shè)備隧道傳輸?shù)臉I(yè)務(wù)進(jìn)行轉(zhuǎn)換的需要。
圖8是FPGA 800的框圖,其可駐留在IO控制器卡上并使能融合解決方案300的實(shí)施例。請(qǐng)注意,雖然描繪了單個(gè)FPGA 800,但可以將各種功能塊組織成多個(gè)FPGA、組織成一個(gè)或多個(gè)客戶專用集成電路(ASIC)等。例如,可以在單獨(dú)(但互連)的FPGA或ASIC中處理各種聯(lián)網(wǎng)塊和各種存儲(chǔ)塊。除在上下文另外指示的情況下之外,貫穿本公開的對(duì)FPGA 800的引用應(yīng)被理解成包含可以使能在圖8中反映的功能能力和類似功能的硬件的這些其他形式。并且,可以在商用硅晶中體現(xiàn)某些功能組,諸如用于聯(lián)網(wǎng)功能和/或存儲(chǔ)功能。
圖8的FPGA 800的實(shí)施例具有四個(gè)主要接口。第一,存在PCIe接口,諸如到主機(jī)計(jì)算機(jī)102的PCIe總線110的PCIe接口。因此,卡是PCIe端點(diǎn)。第二,存在DRAM/NVRAM接口。例如,可以提供到外部DRAM或NVRAM的DDR接口,其被嵌入式CPU、元數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)以及分組/數(shù)據(jù)緩沖使用。第三,存在到諸如DAS 308和SAN 310之類的介質(zhì)的存儲(chǔ)接口。存儲(chǔ)接口可以包括用于SAS、SATA、NVMe、iSCSI、FC和/或FCoE的存儲(chǔ)接口,并且在實(shí)施例中可以是到旋轉(zhuǎn)介質(zhì)、閃存或其他持久形式的存儲(chǔ)(其對(duì)于比如SAN 310的網(wǎng)絡(luò)使能(network-enabled)的存儲(chǔ)而言是本地的或者通過直通到比如SAN 310的網(wǎng)絡(luò)使能的存儲(chǔ))的任何接口。第四,提供網(wǎng)絡(luò)接口,諸如到網(wǎng)絡(luò)結(jié)構(gòu)的以太網(wǎng)。存儲(chǔ)接口和網(wǎng)絡(luò)接口可以被部分地用來使能通過以太網(wǎng)的NVMe。
FPGA 800的內(nèi)部功能可以包括用于融合解決方案300和自始至終記載的本公開的其他方面的多個(gè)使能特征??蔀橹鳈C(jī)提供一組虛擬端點(diǎn)(vNVMe)802。類似于被用于網(wǎng)絡(luò)接口的SR-IOV協(xié)議,這向主機(jī)呈現(xiàn)虛擬存儲(chǔ)目標(biāo)。在FPGA 800的該實(shí)施例中,NVMe具有低軟件開銷的益處,其進(jìn)而提供高性能。虛擬NVMe設(shè)備802可以被動(dòng)態(tài)地分配/解除分配/移動(dòng)和調(diào)整尺寸。如SR-IOV一樣,存在與PCIe驅(qū)動(dòng)110(參見下文)對(duì)接的一個(gè)物理功能(PF)806以及其中每個(gè)表現(xiàn)為NVMe設(shè)備的多個(gè)虛擬功能807(VF)。
在FPGA 802功能中還提供了一個(gè)或多個(gè)讀和寫直接存儲(chǔ)訪問(DMA)隊(duì)列804,在本文中的某些情況下被稱為DMA引擎804。這些可以包括中斷隊(duì)列、門鈴及其他標(biāo)準(zhǔn)功能以向和從主機(jī)計(jì)算系統(tǒng)102執(zhí)行DMA。
FPGA 800上的設(shè)備映射設(shè)施808可確定虛擬NVMe設(shè)備802的位置。位置選項(xiàng)將是本地(即——被附著到所示的存儲(chǔ)介質(zhì)接口824中的一個(gè))或在存儲(chǔ)控制器300的另一主機(jī)102上的遠(yuǎn)程。對(duì)遠(yuǎn)程vNVMe設(shè)備的訪問要求通過隧道828到網(wǎng)絡(luò)122。
NVMe虛擬化設(shè)施810可將NVMe協(xié)議指令和操作轉(zhuǎn)換成后端存儲(chǔ)介質(zhì)302的相應(yīng)協(xié)議和操作,諸如其中使用DAS 308的SAS或SATA(在后端存儲(chǔ)介質(zhì)302上的NVMe的使用的情況下,可能不需要轉(zhuǎn)換)或者諸如其中在后端中使用SAN 310存儲(chǔ)的情況下的iSCSI、FC或FCoE。在這里對(duì)后端的引用指的是從主機(jī)102來看的融合控制器300的另一側(cè)。
數(shù)據(jù)變換功能812可在數(shù)據(jù)被存儲(chǔ)到存儲(chǔ)介質(zhì)302上時(shí)將數(shù)據(jù)格式化。這些操作可以包括重寫、變換、壓縮、保護(hù)(諸如RAID)、加密和其他功能,其涉及以在必要時(shí)允許數(shù)據(jù)被適用類型的目標(biāo)存儲(chǔ)介質(zhì)308處理的任何方式改變數(shù)據(jù)的格式。在某些實(shí)施例中,存儲(chǔ)介質(zhì)308可以是遠(yuǎn)程的。
在實(shí)施例中,存儲(chǔ)讀和寫隊(duì)列814可以包括用于在傳送期間使數(shù)據(jù)登臺(tái)(staging)的數(shù)據(jù)結(jié)構(gòu)或緩沖。在實(shí)施例中,可將諸如NVRAM的DRAM(其可位于FPGA 800外)之類的瞬時(shí)存儲(chǔ)器用于數(shù)據(jù)的瞬時(shí)存儲(chǔ)。
本地存儲(chǔ)調(diào)度器和成形器818可以對(duì)對(duì)存儲(chǔ)介質(zhì)302的訪問區(qū)分優(yōu)先次序并控制對(duì)存儲(chǔ)介質(zhì)302的訪問??稍谡{(diào)度器和成形器818中實(shí)行用于本地存儲(chǔ)的任何可適用的SLA策略,其可以包括可以在每個(gè)隊(duì)列、每個(gè)發(fā)起者、每個(gè)目標(biāo)或每個(gè)c-組的基礎(chǔ)上等適用的嚴(yán)格的優(yōu)先次序、加權(quán)的輪詢調(diào)度、IOP成形器以及策略器。
數(shù)據(jù)放置設(shè)施820可實(shí)現(xiàn)確定如何在存儲(chǔ)介質(zhì)302上布局?jǐn)?shù)據(jù)的算法。其可涉及對(duì)本領(lǐng)域那些技術(shù)人員已知的各種放置方案,諸如跨介質(zhì)分條(stripping)、局部化到單個(gè)設(shè)備302、使用設(shè)備302的子集或者局部化到設(shè)備302上的特定塊。
存儲(chǔ)元數(shù)據(jù)管理設(shè)施822可以包括用于數(shù)據(jù)放置、塊和對(duì)象i節(jié)點(diǎn)、壓縮、重復(fù)數(shù)據(jù)刪除以及保護(hù)的數(shù)據(jù)結(jié)構(gòu)。元數(shù)據(jù)可被存儲(chǔ)在FPGA 800外NVRAM/DRAM中或者存儲(chǔ)介質(zhì)302中。
多個(gè)控制塊824可以提供到存儲(chǔ)介質(zhì)的接口。在每個(gè)情況下根據(jù)對(duì)于適當(dāng)類型的目標(biāo)存儲(chǔ)介質(zhì)302的需要,除了其他可能的控制塊之外,這些還可以包括SAS、SATA、NVMe、PCIe、iSCSI、FC和/或FCoE。
FPGA 800的存儲(chǔ)網(wǎng)絡(luò)隧道828可以提供結(jié)合融合解決方案300貫穿本公開描述的隧道傳輸/直通能力。除了其他之外,隧道828還提供存儲(chǔ)業(yè)務(wù)與網(wǎng)絡(luò)業(yè)務(wù)之間的網(wǎng)關(guān)。其包括封裝/解封裝或存儲(chǔ)業(yè)務(wù)、數(shù)據(jù)的重寫和格式化以及數(shù)據(jù)的傳送的端到端協(xié)調(diào)。協(xié)調(diào)可以在跨主機(jī)計(jì)算系統(tǒng)102內(nèi)的或者超過一個(gè)計(jì)算系統(tǒng)102中的節(jié)點(diǎn)的FPGA 800之間,諸如針對(duì)結(jié)合圖4描述的點(diǎn)到點(diǎn)路徑404。可執(zhí)行各種功能,諸如序列號(hào)、分組丟失、超時(shí)以及重傳。隧道傳輸可通過以太網(wǎng)發(fā)生,包括通過FCoE或NVMeoE發(fā)生。
虛擬網(wǎng)絡(luò)接口卡設(shè)施830可以包括到主機(jī)102的多個(gè)SR-IOV端點(diǎn),被呈現(xiàn)為虛擬網(wǎng)絡(luò)接口卡。一個(gè)物理功能(PF)836可與PCIe驅(qū)動(dòng)110(參見下文的軟件描述)以及多個(gè)虛擬功能(VF)837對(duì)接,其中每個(gè)虛擬功能表現(xiàn)為網(wǎng)絡(luò)接口卡(NIC)118。
一組接收/發(fā)射DMA隊(duì)列832可以包括中斷隊(duì)列、門鈴及其他標(biāo)準(zhǔn)功能以向和從主機(jī)102執(zhí)行DMA。
分類器和流管理設(shè)施834可執(zhí)行標(biāo)準(zhǔn)網(wǎng)絡(luò)業(yè)務(wù)分類,通常到IEEE標(biāo)準(zhǔn)802.1Q服務(wù)級(jí)(COS)映射或其他優(yōu)先次序別。
訪問控制和重寫設(shè)施838可處理訪問控制列表(ACL)和重寫策略,包括通常對(duì)以太網(wǎng)元組(MAC SA/DA、IP SA/DA、TCP端口等)進(jìn)行操作以將分組重新分類或重寫的訪問控制列表。
轉(zhuǎn)發(fā)功能840可諸如通過層2(L2)或?qū)?(L3)機(jī)制確定分組的目的地。
一組網(wǎng)絡(luò)接收和發(fā)射隊(duì)列842可處理到網(wǎng)絡(luò)接口的數(shù)據(jù)結(jié)構(gòu)或緩沖。FPGA 800外的DRAM可被用于分組數(shù)據(jù)。
網(wǎng)絡(luò)/遠(yuǎn)程存儲(chǔ)調(diào)度器和策略器844可提供優(yōu)先次序并且控制對(duì)網(wǎng)絡(luò)接口的訪問。在這里可實(shí)行用于遠(yuǎn)程存儲(chǔ)和網(wǎng)絡(luò)業(yè)務(wù)的SLA策略,其可以包括在每個(gè)隊(duì)列、每個(gè)發(fā)起者、每個(gè)目標(biāo)、每個(gè)c組或每個(gè)網(wǎng)絡(luò)流基礎(chǔ)上的嚴(yán)格優(yōu)先次序、加權(quán)的輪詢、IOP和帶寬成形器以及策略器等。
本地網(wǎng)絡(luò)交換機(jī)848可在FPGA中的隊(duì)列之間轉(zhuǎn)發(fā)分組,使得如果目的地對(duì)于FPGA 800或主機(jī)102而言是本地的,則業(yè)務(wù)不需要退出FPGA 800到網(wǎng)絡(luò)結(jié)構(gòu)122。
端到端擁塞控制/信用設(shè)施850可防止網(wǎng)絡(luò)擁塞。這用兩個(gè)算法被實(shí)現(xiàn)。第一,可存在利用遠(yuǎn)程FPGA 800的端到端保留/信用機(jī)制。這可類似于SCSI傳送就緒功能,其中遠(yuǎn)程FPGA 800在其可以立即接受數(shù)據(jù)的情況下允許存儲(chǔ)傳送。類似地,本地FPGA 800在遠(yuǎn)程FPGA 800請(qǐng)求傳送時(shí)向其分配信用。在這里還可實(shí)行用于遠(yuǎn)程存儲(chǔ)的SLA策略。第二,可存在分布式調(diào)度算法,諸如迭代輪詢算法,諸如在由Nick McKeown發(fā)表的出版物“The iSLIP Scheduling Algorithm for Input-Queues Switches”IEEE/ACM TRANSACTIONS ON NETWORKING,卷7,號(hào)2,1999年4月中提出的用于輸入隊(duì)列的iSLIP算法??墒褂弥虚g網(wǎng)絡(luò)結(jié)構(gòu)作為橫桿(crossbar)而在集群范圍內(nèi)執(zhí)行該算法。
重寫、標(biāo)簽以及CRC設(shè)施852可用適當(dāng)?shù)臉?biāo)簽和CRC保護(hù)將分組封裝/解封裝。
一組接口854(諸如MAC接口)可以提供到以太網(wǎng)的接口。
一組嵌入式CPU和高速緩存復(fù)合體858可實(shí)現(xiàn)過程控制計(jì)劃、異常處理以及到和來自本地主機(jī)和網(wǎng)絡(luò)遠(yuǎn)程FPGA 800的其他通信。
存儲(chǔ)器控制器860(諸如DDR控制器)可充當(dāng)用于外部DRAM/NVRAM的控制器。
由于由融合解決方案300提供的功能的集成,如在一個(gè)示例中通過FPGA 800體現(xiàn)的那樣,在本文中提供了用于將存儲(chǔ)發(fā)起和存儲(chǔ)目標(biāo)確定組合在單個(gè)硬件系統(tǒng)中的方法和系統(tǒng)。在實(shí)施例中,這些可被PCIe總線110附著。可應(yīng)用單根虛擬化功能(SR-IOV)等來獲取任何標(biāo)準(zhǔn)設(shè)備(例如,任何存儲(chǔ)介質(zhì)302設(shè)備)并使其動(dòng)作如同其是數(shù)百個(gè)此類設(shè)備一樣。本文中公開的實(shí)施例包括使用比如SR-IOV的協(xié)議來給出物理存儲(chǔ)適配器的多個(gè)虛擬實(shí)例。SR-IOV是將IO功能虛擬化的PCIe標(biāo)準(zhǔn),并且雖然其已被用于網(wǎng)絡(luò)接口,但本文中公開的方法和系統(tǒng)將其擴(kuò)展至用于存儲(chǔ)設(shè)備。因此,在本文中提供了虛擬化的目標(biāo)存儲(chǔ)系統(tǒng)。在實(shí)施例中,虛擬目標(biāo)存儲(chǔ)系統(tǒng)可處理不同的介質(zhì),如同該介質(zhì)是一個(gè)或多個(gè)盤(諸如DAS 310)一樣。
被比如FPGA 800的實(shí)施例使能,本文中公開的方法和系統(tǒng)的實(shí)施例還可以包括提供被虛擬化并動(dòng)態(tài)地分配的NVMe設(shè)備。在實(shí)施例中,可背負(fù)正常NVMe協(xié)議,但是對(duì)NVMe設(shè)備進(jìn)行劃分、虛擬化和動(dòng)態(tài)分配。在實(shí)施例中,在軟件中不存在覆蓋區(qū)。操作系統(tǒng)108保持相同或幾乎相同(可能具有看到融合網(wǎng)絡(luò)/存儲(chǔ)卡300的小驅(qū)動(dòng))。這導(dǎo)致看起來像直接附著盤的虛擬存儲(chǔ),但是區(qū)別在于現(xiàn)在我們可以跨網(wǎng)絡(luò)122將匯集此類存儲(chǔ)設(shè)備302。
在本文中公開了用于實(shí)現(xiàn)NVMe的虛擬化的方法和系統(tǒng)。不管多少資源與多少目的地相關(guān),只要來自源的數(shù)據(jù)在進(jìn)入集線器之前被首先串行化,則集線器就將數(shù)據(jù)連續(xù)地分發(fā)到指定目的地。如果是這樣,則可以將諸如DMA隊(duì)列804、832之類的數(shù)據(jù)傳輸資源減少到僅一個(gè)拷貝。這可以包括各種使用場(chǎng)景。在一個(gè)場(chǎng)景中,針對(duì)NVMe虛擬功能(VF),如果其全部被連接到同一PCIe總線110,則不管多少VF 807被配置,數(shù)據(jù)將串行地進(jìn)入VF 807的該池中,因此只存在一個(gè)DMA引擎804,并且只需要一個(gè)存儲(chǔ)塊(用于控制信息)。
在另一使用場(chǎng)景中,針對(duì)具有分立的盤/控制器的池的盤存儲(chǔ)系統(tǒng),如果數(shù)據(jù)源自于物理總線,即PCIe 110,由于數(shù)據(jù)正在串行地進(jìn)入盤的該池中,則不管多少盤/控制器在池中,可以將諸如DMA引擎804之類的傳輸資源減少到僅一個(gè)而不是每個(gè)控制器一個(gè)。
本文中公開的方法和系統(tǒng)還可以包括融合網(wǎng)絡(luò)/存儲(chǔ)適配器300的虛擬化。從業(yè)務(wù)觀點(diǎn)出發(fā),可將系統(tǒng)組合成一個(gè)。將存儲(chǔ)和網(wǎng)絡(luò)適配器組合并加入虛擬化給出顯著的優(yōu)點(diǎn)。例如,存在具有兩個(gè)PCIe總線110的單個(gè)主機(jī)102。為了從PCIe 110進(jìn)行路由,您可以使用比如遠(yuǎn)程直接存儲(chǔ)訪問(RDMA)的系統(tǒng)來到達(dá)另一機(jī)器/主機(jī)102。如果想要單獨(dú)地完成這一點(diǎn),必須單獨(dú)地配置存儲(chǔ)和網(wǎng)絡(luò)RDMA系統(tǒng)。一個(gè)必須結(jié)合每一個(gè)并將在兩個(gè)不同的地點(diǎn)對(duì)其進(jìn)行配置。在融合解決方案300中,設(shè)立QoS的整個(gè)步驟由于這是RDMA且在別處存在另一結(jié)構(gòu)而是零接觸過程,因?yàn)橛媒M合的存儲(chǔ)和聯(lián)網(wǎng)可以在單個(gè)步驟中對(duì)兩者進(jìn)行配置。也就是說,一旦知道了存儲(chǔ),就不需要單獨(dú)地在網(wǎng)絡(luò)上設(shè)立QoS。因此,由融合解決方案300使能用于RDMA解決方案的網(wǎng)絡(luò)和存儲(chǔ)的單步配置。
再次參考圖4,由如結(jié)合圖8描述的FPGA 800或類似硬件使能遠(yuǎn)程訪問。在圖4中用點(diǎn)線408來指示虛擬化邊界。在該線的左邊,虛擬存儲(chǔ)設(shè)備(例如,NVMe 802)和虛擬網(wǎng)絡(luò)接口830被呈現(xiàn)給操作系統(tǒng)108。操作系統(tǒng)不能辨別這些是虛擬設(shè)備。在虛擬化邊界408右邊是物理存儲(chǔ)設(shè)備302(例如,使用SATA或上文記載的其他協(xié)議)和物理網(wǎng)絡(luò)接口。存儲(chǔ)虛擬化功能由圖8的vNVMe 802和NVMe虛擬化設(shè)施810實(shí)現(xiàn)。網(wǎng)絡(luò)虛擬化功能由vNIC設(shè)施830實(shí)現(xiàn)。物理存儲(chǔ)介質(zhì)的位置也針對(duì)操作系統(tǒng)108被隱藏。有效地,跨服務(wù)器的物理盤302可以被匯集并被遠(yuǎn)程地訪問。操作系統(tǒng)108向存儲(chǔ)介質(zhì)302(其是虛擬設(shè)備,但操作系統(tǒng)108將其視為物理設(shè)備)發(fā)出讀或?qū)懯聞?wù)。如果物理存儲(chǔ)介質(zhì)302碰巧是遠(yuǎn)程的,則讀/寫事務(wù)被映射到適當(dāng)?shù)奈锢砦恢?、封裝以及通過以太網(wǎng)隧道傳輸。該過程可由圖8的設(shè)備映射設(shè)施808、NVMe虛擬化設(shè)施810、數(shù)據(jù)變換設(shè)施812和存儲(chǔ)-網(wǎng)絡(luò)隧道828實(shí)現(xiàn)。目標(biāo)服務(wù)器(第二計(jì)算系統(tǒng))將存儲(chǔ)讀/寫解除隧道傳輸(un-tunnel)并直接地訪問其本地存儲(chǔ)介質(zhì)302。如果事務(wù)是寫,則數(shù)據(jù)被寫入到介質(zhì)302。如果事務(wù)是讀,則數(shù)據(jù)被準(zhǔn)備、映射到源服務(wù)器、封裝并通過以太網(wǎng)隧道傳輸。事務(wù)完成到達(dá)源操作系統(tǒng)102。在常規(guī)系統(tǒng)中,這些步驟將要求軟件介入以便處理存儲(chǔ)請(qǐng)求、數(shù)據(jù)格式化以及網(wǎng)絡(luò)訪問。如所示,所有這些復(fù)雜的軟件步驟都被避免。
參考圖9,作為如貫穿本公開描述的融合解決方案300的一個(gè)實(shí)施例,提供了控制器卡902的架構(gòu)的簡(jiǎn)化框圖。控制器卡902可以是例如標(biāo)準(zhǔn)的、全高的、半高的PCIe卡,諸如Gen3 x16卡。然而,非標(biāo)準(zhǔn)卡大小是可接受的,優(yōu)選地被定大小使得其可以安裝到各種類型的作為目標(biāo)的機(jī)箱中。PCIe形狀因數(shù)限制在PCB上使用的堆疊和層。
控制器卡902可被用作商品機(jī)箱(諸如2RU 4節(jié)點(diǎn)機(jī)箱)上的附加卡。機(jī)箱的每個(gè)節(jié)點(diǎn)(被稱作滑軌)通常是1RU和6.76”寬的。母板通??稍诒趁娓浇峁㏄CIe Gen3 x16連接器。可使用轉(zhuǎn)接卡來允許將控制器卡902安裝在母板的頂部上;因此,卡與母板之間的空隙可限于大致在槽寬上。
在實(shí)施例中,由PCIe連接器供應(yīng)的最大功率是75W。控制器卡902可消耗約60W或更少。
機(jī)箱可以提供好的氣流,但是卡應(yīng)預(yù)期環(huán)境溫度中的10C上升,因?yàn)樵诒臼纠锌諝鈱⒈浑pXeon處理器和16個(gè)DIMM加溫。對(duì)于大部分服務(wù)器而言的最大環(huán)境溫度是35C,因此控制器卡902處的氣溫在某些情況下將可能是45C或更高。可將定制的散暖器和暖擋板視為暖解決方案的部分。
在圖9中描繪的控制器卡902的實(shí)施例中存在兩個(gè)FPGA,數(shù)據(jù)路徑FPGA或數(shù)據(jù)路徑芯片904以及聯(lián)網(wǎng)FPGA或聯(lián)網(wǎng)芯片908。
數(shù)據(jù)路徑芯片904提供通過PCIe連接器110到主機(jī)計(jì)算機(jī)102的連通性。從主機(jī)處理器的觀點(diǎn)出發(fā),控制器卡902看起來像多個(gè)NVMe設(shè)備。數(shù)據(jù)路徑芯片904將NVMe橋接到標(biāo)準(zhǔn)SATA/SAS協(xié)議,并且在本實(shí)施例中通過SATA/SAS鏈路而控制多達(dá)六個(gè)外部盤驅(qū)動(dòng)。請(qǐng)注意,SATA支持達(dá)到6.0Gbps,而SAS支持達(dá)到12.0Gbps。
聯(lián)網(wǎng)芯片908將NIC設(shè)備118和eCPU 1018的兩個(gè)10G以太網(wǎng)端口切換成兩個(gè)外部10G以太網(wǎng)端口。其還包含供在虛擬化中使用的大量數(shù)據(jù)結(jié)構(gòu)。
主機(jī)102的母板通常提供PCIe Gen3 x16接口,其可以被劃分成Intel芯片組中的兩個(gè)單獨(dú)PCIe Gen3 x8總線。PCIe Gen3 x8總線110中的一個(gè)被連接到Intel NIC設(shè)備118。第二PCIe Gen3 x8總線110被連接到PLX PCIe交換機(jī)芯片1010。交換機(jī)芯片1010的下游端口被配置為兩個(gè)PCIe Gen3 x8總線110??偩€110中的一個(gè)被連接到eCPU,而第二個(gè)被連接到數(shù)據(jù)路徑芯片904。
數(shù)據(jù)路徑芯片904將外部存儲(chǔ)器用于數(shù)據(jù)存儲(chǔ)。單x72 DDR3通道1012應(yīng)提供對(duì)于大部分情況而言足夠的帶寬。聯(lián)網(wǎng)芯片908也將外部存儲(chǔ)器用于數(shù)據(jù)存儲(chǔ),并且單x72 DDR3通道對(duì)于大部分情況而言很可能是足夠的。另外,數(shù)據(jù)結(jié)構(gòu)要求使用非易失性存儲(chǔ)器,諸如提供高性能和足夠密度的存儲(chǔ)器,諸如非易失性DIMM(NVDIMM),其通常具有內(nèi)置電力開關(guān)電路和超級(jí)電容器,作為用于數(shù)據(jù)保持的儲(chǔ)能元件。
eCPU 1018使用兩組接口與聯(lián)網(wǎng)908通信。其具有用于類NVMe的通信的PCIe Gen2x4接口。eCPU 1018還具有諸如通過其L2交換機(jī)連接到聯(lián)網(wǎng)芯片908的兩個(gè)10G以太網(wǎng)接口。
將貫穿兩個(gè)芯片904、908的內(nèi)部設(shè)計(jì)使用AXI總線1020(ARM芯片組的總線規(guī)范)。為了允許數(shù)據(jù)路徑芯片904與聯(lián)網(wǎng)芯片908之間的無縫通信,AXI總線1020被用于芯片至芯片連接??墒褂?Xilinx Aurora?協(xié)議、串行接口作為物理層。
對(duì)FPGA配置的關(guān)鍵要求是(1)數(shù)據(jù)路徑芯片904必須在PCIe配置開始之前就緒(QSPI閃存(具有四SPI總線接口的串行閃存)可以足夠快)和(2)芯片優(yōu)選地是現(xiàn)場(chǎng)可升級(jí)的。用于配置的閃存優(yōu)選地大到足以存儲(chǔ)配置位流的至少3個(gè)拷貝。位流指的是由Xilinx? FPGA所使用的配置存儲(chǔ)器模式。位流通常被存儲(chǔ)在非易失性存儲(chǔ)器中并被用來在初始通電期間配置FPGA。eCPU 1018可以被提供有用以讀和寫配置閃存的設(shè)施。新位流可駐留在主機(jī)102的處理器。安全和認(rèn)證可由eCPU 1018在嘗試將閃存升級(jí)之前處理。
在聯(lián)網(wǎng)子系統(tǒng)中,控制器卡902可處理主機(jī)處理器與外面世界之間的所有網(wǎng)絡(luò)業(yè)務(wù)。聯(lián)網(wǎng)芯片908可攔截來自NIC 118和外部的所有網(wǎng)絡(luò)業(yè)務(wù)。
本實(shí)施例中的Intel NIC 118將兩個(gè)10GigE、XFI接口1022連接到聯(lián)網(wǎng)芯片908。嵌入式處理器將做同樣的事情。聯(lián)網(wǎng)芯片908將執(zhí)行L2交換功能并將以太網(wǎng)業(yè)務(wù)路由出到兩個(gè)外部10GigE端口。類似地,傳入的10GigE業(yè)務(wù)將直接地到NIC 118、eCPU 1018或聯(lián)網(wǎng)芯片908的內(nèi)部邏輯。
控制器卡902可將SFP+光連接器用于兩個(gè)外部10G以太網(wǎng)端口。在其他實(shí)施例中,卡可使用外部PHY和RJ45連接器來支持10GBASE-T;但是可能需要單獨(dú)的卡,或者可能需要定制的切換卡布置以允許SFP+與RJ45之間的切換。
外部端口和光學(xué)件的所有管理(包括LED的操作)可被聯(lián)網(wǎng)芯片908控制。因此,諸如PRST、I2C/MDIO等的信號(hào)可被連接到聯(lián)網(wǎng)芯片908而不是NIC 118。
在存儲(chǔ)子系統(tǒng)中,數(shù)據(jù)路徑芯片904可直接地驅(qū)動(dòng)小型SAS HD連接器。在諸如圖10中描繪的實(shí)施例中,信號(hào)可被設(shè)計(jì)成以12Gbps操作以支持最新的SAS標(biāo)準(zhǔn)。
為了提供板空間的高效使用,可使用兩個(gè)x4小型SAS HD連接器。全部的八組信號(hào)可被連接到數(shù)據(jù)路徑芯片904,即使在任何一個(gè)時(shí)間可能只有六組信號(hào)被使用。
在機(jī)箱上,可使用高速銅線纜來將小型SAS HD連接器連接到母板。小型SAS HD連接器的放置可考慮到各種機(jī)箱的物理空間和線纜的布線。
到控制器卡902的功率可由PCIe x16連接器供應(yīng)。不需要使用外部電力連接。根據(jù)PCIe規(guī)范,PCIe x16連接器可在上電之后供應(yīng)僅多達(dá)25W的功率??刂破骺?02可被設(shè)計(jì)成使得其直到PCIe配置之后汲取小于25W。因此,可能需要在初始上電之后將多個(gè)接口和組件保持在復(fù)位中。連接器可在配置之后供應(yīng)多達(dá)75W的功率,其可被布置成使得75W被分離在3.3V和12V導(dǎo)軌(rail)之間。
圖10示出了軟件棧1000,其包括用以對(duì)接到融合解決方案300(諸如由FPGA 800使能的融合解決方案300)的驅(qū)動(dòng)1002。NVMe控制器1004是服務(wù)于NVMe控制器的功能并向主機(jī)分配虛擬設(shè)備1012的硬件(例如,F(xiàn)PGA 800)的功能的集合。在圖10中,dev1、dev2、dev3分別是被動(dòng)態(tài)地分配給容器1018 LXC1、LXC2以及LXC3的虛擬設(shè)備1012的示例。NVMe至SATA橋接器1008是將虛擬設(shè)備1012(dev1、dev2、dev3)轉(zhuǎn)換并映射到存儲(chǔ)設(shè)備302(例如,圖中的SSD)的硬件子系統(tǒng)(例如,F(xiàn)PGA 800)的部分。連接1010是提供SATA連接(除了上文記載的其他可能的連接選項(xiàng)之外)的硬件系統(tǒng)的部分。以太網(wǎng)鏈路120,其可以使用存儲(chǔ)隧道傳輸協(xié)議將虛擬設(shè)備1012(即dev1、dev2、dev3)暴露給經(jīng)由以太網(wǎng)鏈路120連接的(一個(gè)或多個(gè))其他主機(jī)102。PCI-E(NVMe驅(qū)動(dòng))1002可對(duì)用于存儲(chǔ)側(cè)的硬件子系統(tǒng)進(jìn)行編程和驅(qū)動(dòng)。該驅(qū)動(dòng)1002可在主機(jī)上作為操作系統(tǒng)(例如本示例中的Linux OS)的部分運(yùn)行。塊層1014可以是Linux操作系統(tǒng)的常規(guī)SCSI子系統(tǒng),其可與融合解決方案PCIe驅(qū)動(dòng)1002對(duì)接以使虛擬存儲(chǔ)設(shè)備1012暴露。容器1018(LXC1、LXC2、LXC3)可請(qǐng)求并被動(dòng)態(tài)地分配虛擬存儲(chǔ)設(shè)備1012(分別地分配dev1、dev2和dev3)。
圖11至15示出了首先在缺少融合解決方案300的情況下且然后在存在此類融合解決方案300的情況下的應(yīng)用容器1018(例如,Linux容器)跨多個(gè)系統(tǒng)102的移動(dòng)的示例。圖11示出了具有主控OS/管理程序棧108中的虛擬化軟件的常規(guī)存儲(chǔ)控制器112和網(wǎng)絡(luò)控制器118的兩個(gè)常規(guī)計(jì)算機(jī)系統(tǒng)102的示例。計(jì)算機(jī)系統(tǒng)1(C1)具有與圖1中所示的配置類似的配置,具有CPU、存儲(chǔ)器及常規(guī)存儲(chǔ)控制器112和網(wǎng)絡(luò)控制器118。系統(tǒng)運(yùn)行操作系統(tǒng)108(諸如Linux?、Microsoft Windows?等)和/或管理程序軟件(諸如Xen、VMware等)以自然地(natively)或通過虛擬化環(huán)境(諸如經(jīng)由虛擬機(jī)或容器)為多個(gè)應(yīng)用提供支持。在該計(jì)算機(jī)系統(tǒng)102中,應(yīng)用App1 1102在虛擬機(jī)VM1 1104內(nèi)部運(yùn)行。應(yīng)用App2 1108和App3 1112分別地在虛擬化容器LXC1 1110和LXC2 1114內(nèi)運(yùn)行。除這些之外,應(yīng)用App4 1118自然地通過操作系統(tǒng)108運(yùn)行。雖然通常實(shí)際場(chǎng)景可能僅具有虛擬機(jī)或容器或本機(jī)應(yīng)用(并非全部三個(gè)),但在這里以組合方式故意地將其描繪成涵蓋虛擬化環(huán)境的所有情況。計(jì)算機(jī)系統(tǒng)2(C2)102具有分別地在容器中和自然地支持App5和App6的類似配置。這些應(yīng)用中的每個(gè)相互獨(dú)立地訪問其存儲(chǔ)設(shè)備302,即App1使用S1、App2使用S2等。這些存儲(chǔ)設(shè)備302(指定為S1-S6)不限于是獨(dú)立的物理實(shí)體。其可以在被認(rèn)為必要時(shí)在邏輯上從一個(gè)或多個(gè)物理存儲(chǔ)元件切分出來。如可以看到的(用從每個(gè)存儲(chǔ)設(shè)備302至應(yīng)用的箭頭表示),存儲(chǔ)302與應(yīng)用1102、1108、1112、1118之間的數(shù)據(jù)流在其到達(dá)應(yīng)用之前通過存儲(chǔ)控制器112和操作系統(tǒng)/管理程序棧108,引起結(jié)合圖1描述的挑戰(zhàn)。
參考圖12,當(dāng)應(yīng)用或容器從C1移動(dòng)至C2時(shí),其相應(yīng)存儲(chǔ)設(shè)備也需要被移動(dòng)??赡苡捎谌缦率聦?shí)而需要移動(dòng): C1可能在一段時(shí)間內(nèi)諸如由于現(xiàn)有應(yīng)用(App1-App4)內(nèi)的行為改變而用完了用以支持這些應(yīng)用的資源(諸如CPU、存儲(chǔ)器等)。
通常,只要應(yīng)用狀態(tài)和存儲(chǔ)設(shè)備在大小方面合理,在合理的時(shí)間量?jī)?nèi)實(shí)現(xiàn)移動(dòng)更容易。通常,存儲(chǔ)密集的應(yīng)用可使用大量(例如,幾萬億字節(jié))存儲(chǔ),在該情況下,在可接受的時(shí)間量?jī)?nèi)移動(dòng)存儲(chǔ)302可能是實(shí)際的。在那個(gè)情況下,存儲(chǔ)可繼續(xù)停留在其所在的地方,并且將采取軟件級(jí)分路/隧道傳輸來遠(yuǎn)程地訪問存儲(chǔ),如圖13中所示。
如圖13中所示,App2 1108在其移動(dòng)至計(jì)算機(jī)系統(tǒng)C2之后通過穿過系統(tǒng)C1和C2兩者的操作系統(tǒng)或管理程序108來繼續(xù)訪問位于計(jì)算機(jī)系統(tǒng)C1上的其原始存儲(chǔ)S2。這是因?yàn)橛稍谥鰿PU內(nèi)運(yùn)行的操作系統(tǒng)或管理程序軟件棧108完成通過網(wǎng)絡(luò)控制器118到該存儲(chǔ)控制器112及其附著存儲(chǔ)設(shè)備302的存儲(chǔ)訪問的映射。
如圖13中所示,在其移動(dòng)至C2之后,App2 1108通過穿過系統(tǒng)C1和C2兩者的操作系統(tǒng)或管理程序108來繼續(xù)訪問位于C1中的其原始存儲(chǔ)S2。這是因?yàn)橛稍诿總€(gè)計(jì)算機(jī)系統(tǒng)的主CPU內(nèi)運(yùn)行的操作系統(tǒng)或管理程序軟件108完成通過網(wǎng)絡(luò)控制器118從C2到C1且接著到C1的該存儲(chǔ)控制器112的存儲(chǔ)訪問的映射。
當(dāng)如圖14中所示地應(yīng)用融合控制器300時(shí)考慮類似場(chǎng)景。如可以看到的,該場(chǎng)景與圖11幾乎相同,除了融合IO控制器300替換了單獨(dú)的存儲(chǔ)控制器112和網(wǎng)絡(luò)控制器118。在該情況下,當(dāng)App2 1108連同其容器LXC1儀器移動(dòng)至C2時(shí)(如圖15中所示),存儲(chǔ)S2不移動(dòng),并且通過避免穿過在存在于計(jì)算系統(tǒng)C1中的主CPU中運(yùn)行的任何軟件(操作系統(tǒng)、管理程序108或任何其他)來優(yōu)化訪問。
因此,在本文中提供了繞過存儲(chǔ)設(shè)備位于的主CPU的新型方式,這進(jìn)而(a)允許在跨多個(gè)計(jì)算機(jī)系統(tǒng)訪問存儲(chǔ)中顯著地減少等待時(shí)間和帶寬,并且(b)大大地簡(jiǎn)化并改善其中需要使應(yīng)用從其存儲(chǔ)位于其上的機(jī)器移開的情況。
以太網(wǎng)在最好的努力的基礎(chǔ)上運(yùn)轉(zhuǎn),并且因此本質(zhì)上是有損的且突發(fā)的。任何分組都可能被永遠(yuǎn)丟失或緩沖并連同其他分組以突發(fā)且被延遲的方式遞送。雖然典型的以存儲(chǔ)為中心的應(yīng)用對(duì)損失和突發(fā)是敏感的,但重要的是何時(shí)通過以太網(wǎng)來發(fā)送存儲(chǔ)業(yè)務(wù)。
通過其總線/網(wǎng)絡(luò)的常規(guī)存儲(chǔ)訪問涉及可靠且可預(yù)測(cè)的方法。例如,光纖通道網(wǎng)絡(luò)采用基于信用的流控制來限制由最終系統(tǒng)做出的訪問的數(shù)量。并且給予最終系統(tǒng)的信用的數(shù)量基于存儲(chǔ)設(shè)備是否具有足夠的命令緩沖器以在滿足所要求的等待時(shí)間和帶寬需要的可預(yù)測(cè)時(shí)間量中接收和滿足存儲(chǔ)請(qǐng)求。下圖示出了由不同類型的總線(諸如SATA、光纖通道(FC)、SCSI、SAS等)所采用的某些信用方案。
參考圖16,以太網(wǎng)在最好的努力的基礎(chǔ)上運(yùn)轉(zhuǎn),并且因此趨向于是本質(zhì)上有損的且是突發(fā)的。任何分組都可能被永遠(yuǎn)丟失或者緩沖并連同許多其他分組以延遲的方式在引發(fā)擁塞的突發(fā)中被遞送。典型的以存儲(chǔ)為中心的應(yīng)用對(duì)損失和突發(fā)是敏感的,因此當(dāng)通過總線和以太網(wǎng)來發(fā)送存儲(chǔ)業(yè)務(wù)時(shí)重要的是那些涉及用于維持完整性的可靠且可預(yù)測(cè)的方法。例如,光纖通道網(wǎng)絡(luò)按照慣例采用基于信用的流控制來限制在任何一個(gè)時(shí)間由最終系統(tǒng)做出的訪問的數(shù)量。給予最終系統(tǒng)的信用的數(shù)量可以基于存儲(chǔ)設(shè)備302是否具有足夠的命令緩沖器以在滿足所要求的等待時(shí)間和帶寬要求的可預(yù)測(cè)時(shí)間量中接收和滿足存儲(chǔ)請(qǐng)求。圖16示出了由不同類型的總線(諸如SATA總線1602、光纖通道(FC)1604以及SCSI/SAS連接1608)所采用的除了其他類型的此類方案之外的某些信用方案。
如可以看到的,例如,F(xiàn)C控制器1610可在將存儲(chǔ)命令發(fā)送到基于FC的存儲(chǔ)設(shè)備1612之前使其自己的緩沖達(dá)到“N”個(gè)存儲(chǔ)命令的極限,但是FC設(shè)備1612可能具有不同的緩沖極限,在本示例中例如“M”,其可以大于、等于或小于“N”。典型的基于信用的方案使用目標(biāo)級(jí)(在本示例中,存儲(chǔ)設(shè)備302中的一個(gè)(諸如FC設(shè)備1602)是目標(biāo))聚合信用,關(guān)于所述信用的信息被傳播到嘗試訪問目標(biāo)302的各種源(在本示例中,控制器(諸如FC控制器1610)是源)。例如,如果兩個(gè)源正在訪問具有“N”的隊(duì)列深度的目標(biāo),則給予源的信用的和將不超過“N”,使得在任何給定時(shí)間,目標(biāo)將不接收到超過“N”個(gè)命令。源之間的信用的分配可以是任意的,或者其可基于各種類型的策略(例如,基于成本/定價(jià)、SLA等的優(yōu)先次序)。當(dāng)服務(wù)于隊(duì)列時(shí),通過滿足命令請(qǐng)求,可酌情在源處補(bǔ)充信用。通過遵守該類型的基于信用的存儲(chǔ)訪問,可以避免將由目標(biāo)處的隊(duì)列被埋沒(overwhelm)引起的損失。
通過以太網(wǎng)(諸如FCOE iSCSI等)的典型存儲(chǔ)訪問可將面向目標(biāo)、基于信用的命令履行擴(kuò)展至通過以太網(wǎng)鏈路的傳送。在該情況下,其可以是面向目標(biāo)設(shè)備的而不是面向源的。在本文中提供了新的基于信用的方案,其可以代之以基于哪一或什么種類的源應(yīng)得到多少信用。例如,直接地將網(wǎng)絡(luò)對(duì)接到存儲(chǔ)的上文描述的融合解決方案300可采用復(fù)用器來將面向源、基于信用的調(diào)度方案映射到面向目標(biāo)設(shè)備、基于信用的方案,如圖17中所示。
如圖17中所示,四個(gè)源位于以太網(wǎng)上,并且存在兩個(gè)目標(biāo)存儲(chǔ)設(shè)備302。典型的面向目標(biāo)、基于信用的方案將使兩個(gè)隊(duì)列(每個(gè)目標(biāo)一個(gè))或每個(gè)源的兩個(gè)連接暴露于每個(gè)目標(biāo)。代之以,如圖17中所示,隊(duì)列(Q1、Q2、Q3、Q4)1702在每個(gè)源的基礎(chǔ)上,并且其被跨(一個(gè)或多個(gè))復(fù)用器1708而映射/復(fù)用到兩個(gè)面向目標(biāo)的隊(duì)列(Q5、Q6)1704。通過采用此類面向源、基于信用的方案,可獨(dú)立于目標(biāo)存儲(chǔ)設(shè)備302的數(shù)量而保證訪問帶寬和可預(yù)測(cè)的訪問等待時(shí)間。作為示例,一種類型的復(fù)用是確保Q1的隊(duì)列大小“P”不超過Q5和Q6的“L+M”,使得Q1不被其源所埋沒。
在實(shí)施例中,描述了用以提供對(duì)來自存儲(chǔ)設(shè)備302的數(shù)據(jù)塊的訪問的方法和系統(tǒng)。特別地,描述了一種用以允許應(yīng)用訪問其數(shù)據(jù)、滿足特定的一組訪問要求的新型方法。
如本文所使用的術(shù)語“應(yīng)用驅(qū)動(dòng)的數(shù)據(jù)存儲(chǔ)”(ADS)包含在應(yīng)用的數(shù)據(jù)如何被存儲(chǔ)、訪問、傳送、高速緩存和遞送給應(yīng)用方面向任何應(yīng)用提供透明性的存儲(chǔ)。ADS可允許應(yīng)用控制這些單獨(dú)的階段以解決特定應(yīng)用的特定需要。作為示例,應(yīng)用可能由其本身的多個(gè)實(shí)例以及跨越跨網(wǎng)絡(luò)的多個(gè)Linux節(jié)點(diǎn)散布的多個(gè)過程組成。這些過程可能在其之間以共享或排他的方式訪問多個(gè)文件?;趹?yīng)用想要如何處理這些文件,這些過程可能想要更頻繁地訪問文件的不同部分,可能需要快速訪問或使用一次并丟棄?;谶@些準(zhǔn)則,其可能想要預(yù)取和/或保持高速緩存和/或貯存器的不同層中的文件的特定部分,用于在每個(gè)會(huì)話或每個(gè)文件基礎(chǔ)上的立即訪問,如其希望的那樣。這些應(yīng)用特定的要求不能被以一般方式滿足,諸如整個(gè)文件系統(tǒng)的盤分條、預(yù)讀連續(xù)塊的預(yù)取、保留服務(wù)器中的物理存儲(chǔ)器或者文件內(nèi)容的基于LRU或FIFO的高速緩存。
應(yīng)用驅(qū)動(dòng)的數(shù)據(jù)存儲(chǔ)I/O不可單獨(dú)簡(jiǎn)單地應(yīng)用于存儲(chǔ)實(shí)體。其以若干方式影響整個(gè)存儲(chǔ)棧。第一,其影響其中應(yīng)用正在運(yùn)行的計(jì)算節(jié)點(diǎn)中的存儲(chǔ)I/O棧,包括由聯(lián)網(wǎng)硬件和軟件提供的Linux尋呼系統(tǒng)、緩沖、底層文件系統(tǒng)客戶端、TCP/IP棧、分類、QoS處理和分組排隊(duì)。第二,其影響將應(yīng)用節(jié)點(diǎn)及其存儲(chǔ)互連的聯(lián)網(wǎng)基礎(chǔ)設(shè)施,包括以太網(wǎng)段、最佳路徑選擇、交換機(jī)中的緩沖、等待時(shí)間敏感存儲(chǔ)業(yè)務(wù)的分類和QoS處理以及與存儲(chǔ)I/O相關(guān)的內(nèi)爆問題。并且,其在文件方面影響存儲(chǔ)和維持?jǐn)?shù)據(jù)的存儲(chǔ)基礎(chǔ)設(shè)施,包括底層文件布局、冗余、訪問時(shí)間、各種類型的存儲(chǔ)之間的分層以及遠(yuǎn)程儲(chǔ)存庫。
本文中公開的方法和系統(tǒng)包括涉及影響應(yīng)用節(jié)點(diǎn)內(nèi)的典型應(yīng)用的元素和融合解決方案300可如何改變現(xiàn)狀以解決應(yīng)用的某些關(guān)鍵要求的方法和系統(tǒng)。
常規(guī)Linux??捎珊?jiǎn)單的構(gòu)造塊、此類一般存儲(chǔ)器分配、過程調(diào)度、文件訪問、存儲(chǔ)器映射、頁面高速緩存等組成。雖然這些對(duì)于應(yīng)用在Linux上運(yùn)行而言是必不可少的,但這對(duì)于輸入/輸出(IO)密集的某些種類的應(yīng)用(諸如NoSQL)而言并不是最佳的。NoSQL應(yīng)用是非常IO密集的,并且更難以以一般方式預(yù)測(cè)其數(shù)據(jù)訪問。如果應(yīng)用必須被部署在實(shí)用計(jì)算環(huán)境中,則對(duì)于Linux而言提供這些構(gòu)造塊的一般最低程度的實(shí)現(xiàn)是不理想的。優(yōu)選的是使這些構(gòu)造塊是高度靈活的且具有可以從(一個(gè)或多個(gè))應(yīng)用可控制的應(yīng)用相關(guān)特征。
雖然每個(gè)應(yīng)用具有其自己的特定要求,但在示例性實(shí)施例中,應(yīng)用的NoSQL類具有以下要求:其在通過Linux棧尋址時(shí)可以大大地提高NoSQL應(yīng)用及其他IO密集應(yīng)用的性能。要求首先是文件級(jí)別優(yōu)先次序的使用。Linux文件系統(tǒng)應(yīng)在最低限度上提供不同文件之間的訪問級(jí)別優(yōu)先次序。例如,應(yīng)用進(jìn)程(由多個(gè)線程組成)訪問兩個(gè)不同的文件,其中一個(gè)文件被給予比另一個(gè)高的優(yōu)先次序(諸如比另一個(gè)高的一個(gè)數(shù)據(jù)庫/表格/索引)。這將使得能夠基于被訪問的數(shù)據(jù)而優(yōu)選地利用的寶貴的存儲(chǔ)I/O資源。將爭(zhēng)辯的是這可以通過運(yùn)行以較高或較低優(yōu)先次序運(yùn)行的一個(gè)線程/進(jìn)程來間接地解決,但是那些進(jìn)程級(jí)別優(yōu)先次序未被傳送到文件系統(tǒng)或存儲(chǔ)組件上。進(jìn)程或線程級(jí)別優(yōu)先次序僅僅意圖用于利用CPU資源。而且,可能的是同一線程可能訪問這兩個(gè)文件,并且因此將基于什么數(shù)據(jù)(文件)被訪問而以兩個(gè)不同的級(jí)別利用存儲(chǔ)資源。第二,可存在對(duì)訪問級(jí)別偏好的要求。Linux文件系統(tǒng)可在文件(打開的文件)的會(huì)話期間提供各種偏好(主要是SLA),諸如文件會(huì)話之間的優(yōu)先次序、塊的緩沖量、各種塊的保持/壽命時(shí)間偏好、針對(duì)資源閾值和競(jìng)爭(zhēng)的提醒以及性能統(tǒng)計(jì)。作為示例,當(dāng)諸如MongoDB或Cassandra之類的NoSQL應(yīng)用將具有用于寫和讀的兩個(gè)或更多線程時(shí),其中如果寫可能必須被相比于讀給予偏好,則用于寫的文件會(huì)話可能必須被相比于用于同一文件的讀的文件會(huì)話被給予偏好。該能力使得同一文件的兩個(gè)會(huì)話能夠具有兩個(gè)不同的優(yōu)先次序。
許多NoSQL應(yīng)用將不同類型的數(shù)據(jù)存儲(chǔ)到同一文件中;例如,MongoDB將用戶集合以及(b樹)索引集合存儲(chǔ)在同一組數(shù)據(jù)庫文件中。MongoDB可能想要將索引頁(b樹和集合)優(yōu)先于用戶集合頁保持在存儲(chǔ)器中。當(dāng)這些文件被打開時(shí),MongoDB可能想要影響Linux、文件和存儲(chǔ)系統(tǒng)以根據(jù)MongoDB策略來處理頁面,與在不知道應(yīng)用的要求的一般FIFO或LRU基礎(chǔ)上處理這些頁面相反。
資源提醒和性能統(tǒng)計(jì)使得NoSQL數(shù)據(jù)庫能夠理解底層文件和存儲(chǔ)系統(tǒng)的行為,并且可以因此服務(wù)于其數(shù)據(jù)庫查詢或?qū)⒈粓?zhí)行的觸發(fā)動(dòng)作,諸如數(shù)據(jù)庫的分片或針對(duì)在同一主機(jī)中運(yùn)行的其他作業(yè)(諸如備份、分片、服務(wù)的編號(hào)讀/寫查詢等)的文件I/O偏好的減少/增加。例如,關(guān)于IOP和等待時(shí)間的最小、最大和平均數(shù)以及在給定時(shí)間段內(nèi)進(jìn)出(thrash in and out)主機(jī)存儲(chǔ)器的前十個(gè)候選頁面的性能說明將使得應(yīng)用能夠動(dòng)態(tài)地微調(diào)它本身,調(diào)整上面記載的參數(shù)。
還可存在用于高速緩存偏好和對(duì)偏好進(jìn)行分層的要求。Linux文件系統(tǒng)可能需要在應(yīng)用訪問其文件的同時(shí)具有動(dòng)態(tài)可配置的高速緩存策略。當(dāng)前,Linux文件系統(tǒng)通常預(yù)取文件的連續(xù)塊,希望應(yīng)用以比如流的連續(xù)方式讀文件。雖然對(duì)于比如web服務(wù)器和視頻流式傳輸器之類的許多傳統(tǒng)應(yīng)用而言是正確的,但新興的NoSQL應(yīng)用并不嚴(yán)格地遵循連續(xù)讀。這些應(yīng)用隨機(jī)地讀塊。作為示例,MongoDB以b樹形式將文檔密鑰存儲(chǔ)在索引表中,在文件的一部分上平面布局,其在密鑰被搜索時(shí)隨機(jī)地訪問塊直至其將密鑰定位為止。而且,這些文件并未單獨(dú)地專用于此類基于b樹的索引表。這些文件在諸如用戶文檔和系統(tǒng)索引文件之類的各種類型的表格(集合)之間被共享。由于這,Linux文件系統(tǒng)不能預(yù)測(cè)文件的什么部分需要被高速緩存、提前讀、換出用于高效的存儲(chǔ)器使用等。
在本文中描述的方法和系統(tǒng)的實(shí)施例中,在其對(duì)存儲(chǔ)的要求中存在跨各種應(yīng)用的公共線程。特別地,在需要的特定時(shí)間和位置處用于特定類型的數(shù)據(jù)的等待時(shí)間和IOP對(duì)這些應(yīng)用的性能是非常有影響的。
例如,為了解決上面列出的主機(jī)級(jí)要求,在本文中公開了用于良好地微調(diào)的文件系統(tǒng)客戶端的方法和系統(tǒng),所述文件系統(tǒng)客戶端使得應(yīng)用能夠根據(jù)主機(jī)內(nèi)和在別處的偏好來完全影響和控制數(shù)據(jù)的存儲(chǔ)、檢索、保持和分層。
如圖18中所示,文件系統(tǒng)(FS)客戶端1802保持用于文件(fd1和fd2)的單獨(dú)會(huì)話的單獨(dú)緩沖池。其還為每個(gè)應(yīng)用或進(jìn)程集合預(yù)分配和維持聚合存儲(chǔ)器池??捎蓱?yīng)用在其中文件I/O被執(zhí)行的進(jìn)程/線程內(nèi)內(nèi)部地或者從另一組進(jìn)程外部地運(yùn)用SLA代理 1804,以影響FS客戶端1802以動(dòng)態(tài)地提供適當(dāng)?shù)拇鎯?chǔ)I/O SLA。從外部進(jìn)程控制SLA在沒有這些較新的存儲(chǔ)控制特征的知識(shí)的情況下使能傳統(tǒng)應(yīng)用,而直接不修改應(yīng)用本身。
本文中公開的方法和系統(tǒng)可為跨網(wǎng)絡(luò)和主機(jī)的數(shù)據(jù)檢索提供廣泛的(extensive)分層服務(wù)。如在下文中的圖19中可看到的,高性能分布式文件服務(wù)器(DFS)1902使得應(yīng)用能夠以容器化形式在平臺(tái)1904中運(yùn)行以確定并執(zhí)行文件的什么部分應(yīng)動(dòng)態(tài)地以高速緩存形式存儲(chǔ)形式駐留在哪些介質(zhì)(DRAM、NVRAM、SSD或HDD)中。這些應(yīng)用容器1908可以確定其他存儲(chǔ)策略,諸如文件是否也必須被分條、鏡像、搜捕和災(zāi)難恢復(fù)(DR)。
本文中公開的方法和系統(tǒng)還提供了廣泛的高速緩存服務(wù)。其中高性能DFS 1902中的應(yīng)用容器可以從本地存儲(chǔ)和/或遠(yuǎn)程位置前攝地(proactively)檢索文件的特定頁面并將這些頁面推送到特定位置,用于在稍后需要時(shí)的快速檢索。例如,該方法和系統(tǒng)可檢索運(yùn)行應(yīng)用的主機(jī)的本地存儲(chǔ)器和SSD使用,并將應(yīng)用感興趣的頁面前攝地推送到這些主機(jī)的本地存儲(chǔ)器/SSD中的任何中。該方法和系統(tǒng)可在子DFS平臺(tái)1904中使用出于該目的提供的存儲(chǔ)器、SSD和HDD的本地層,用于在其需要的稍后時(shí)間由應(yīng)用進(jìn)行非常低的等待時(shí)間檢索。
跨應(yīng)用的主機(jī)擴(kuò)展高速緩存的使用是無限的。例如,在MongoDB中,當(dāng)工作集合瞬時(shí)地增長(zhǎng)超過其本地主機(jī)的存儲(chǔ)器時(shí),顛簸發(fā)生,并且其顯著地降低查詢處理性能。這是因?yàn)楫?dāng)所需的文件數(shù)據(jù)頁被丟棄以便帶入新頁面以滿足查詢且隨后在必須將原始頁面帶回來的情況下,系統(tǒng)必須從盤子系統(tǒng)重新讀頁面刷新時(shí),從而招致完成查詢中的巨大等待時(shí)間。應(yīng)用驅(qū)動(dòng)的存儲(chǔ)訪問通過將丟棄頁面的高速緩存瞬時(shí)地保持在網(wǎng)絡(luò)中的別處(在另一應(yīng)用主機(jī)的存儲(chǔ)器/SSD中或者在高性能DFS系統(tǒng)1902的存儲(chǔ)的本地層中)直至MongoDB再次要求頁面為止并且從而顯著地減少完成查詢中的等待時(shí)間來幫助這些種類的場(chǎng)景。
參考圖20,高性能DFS 1902在單個(gè)、統(tǒng)一的基于RAM和SSD的層/高速緩存2002中跨應(yīng)用主機(jī)利用DRAM和SSD資源,以便在必要時(shí)并如由應(yīng)用影響和控制的那樣高速緩存和服務(wù)應(yīng)用數(shù)據(jù)。
如圖21中所示,在本文中公開了由一組主機(jī)(H1至HN)、文件或塊服務(wù)器2102和存儲(chǔ)子系統(tǒng)2104組成的系統(tǒng)。主機(jī)H1-H通常是運(yùn)行需要對(duì)被永久地或瞬時(shí)地存儲(chǔ)在貯存器中的數(shù)據(jù)的訪問的應(yīng)用的計(jì)算機(jī)。文件或卷服務(wù)器2102可以是數(shù)據(jù)組織器和數(shù)據(jù)服務(wù)器,通常運(yùn)行包括中央處理單元(CPU)、存儲(chǔ)器和用以連接到諸如聯(lián)網(wǎng)和存儲(chǔ)設(shè)備之類的外部設(shè)備的專用硬件的硬件。文件或卷服務(wù)器2102在被稱為塊的多個(gè)固定或可變數(shù)量的字節(jié)方面組織用戶數(shù)據(jù)。其將這些數(shù)據(jù)塊存儲(chǔ)在內(nèi)部或外部貯存器中。隨機(jī)但邏輯上相關(guān)的塊序列被組織成文件或卷。一個(gè)或多個(gè)主機(jī)H1-HN可以通過應(yīng)用編程界面(API)或任何其他協(xié)議來訪問這些文件或卷。文件或卷服務(wù)器可以向一個(gè)或多個(gè)主機(jī)提供一個(gè)或多個(gè)文件和卷。應(yīng)注意的是主機(jī)和文件或卷服務(wù)器可以在被直接地或者通過網(wǎng)絡(luò)連接的兩個(gè)不同物理實(shí)體中,或者其可以在邏輯上一起位于單個(gè)物理計(jì)算機(jī)中。
存儲(chǔ)器2104可以是能夠瞬時(shí)地或永久地保持?jǐn)?shù)據(jù)片的實(shí)體的集合。這通常包括靜態(tài)或動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(RAM)、固態(tài)貯存器(SSD)、硬盤驅(qū)動(dòng)(HDD)或所有這些的組合。貯存器可以是通過鏈路或網(wǎng)絡(luò)連接到文件或卷服務(wù)器2102的獨(dú)立物理實(shí)體。其還可以被與文件或卷服務(wù)器2102集成在單個(gè)物理實(shí)體中。因此,主機(jī)H1-HN、文件或卷服務(wù)器2102和貯存器2104可以在物理上共同位于單個(gè)硬件實(shí)體中。
如圖22中所示,主機(jī)通常由多個(gè)邏輯實(shí)體組成。應(yīng)用2202通常在主機(jī)中運(yùn)行并將通過由其本地操作系統(tǒng)2204或替代其的任何其他實(shí)體提供的API來訪問其數(shù)據(jù)元素。操作系統(tǒng)2204通常具有標(biāo)準(zhǔn)API接口以通過其文件系統(tǒng)客戶端2206對(duì)接到文件系統(tǒng)。文件系統(tǒng)客戶端2206是在主機(jī)內(nèi)運(yùn)行以與位于遠(yuǎn)程或本地的文件或卷服務(wù)器2210對(duì)接的軟件實(shí)體。其將通過從文件或卷服務(wù)器2210檢索應(yīng)用2202所需的數(shù)據(jù)元素(存在于單個(gè)或多個(gè)文件或卷中)并將其保持在主機(jī)的存儲(chǔ)器2208中直至應(yīng)用完成其對(duì)數(shù)據(jù)元素的處理來提供所述數(shù)據(jù)元素。在典型的應(yīng)用場(chǎng)景中,特定的數(shù)據(jù)片將根據(jù)要求被讀和/或修改多次。在某些類型的應(yīng)用中,由多個(gè)數(shù)據(jù)元素組成的整個(gè)文件或卷潛在地比本地存儲(chǔ)器2208的大小大得多也是典型的。這使得操作系統(tǒng)2204和文件系統(tǒng)客戶端2206在其實(shí)現(xiàn)中更復(fù)雜,以便基于應(yīng)用2202在未來可能或者可能不訪問數(shù)據(jù)塊的預(yù)測(cè)來決定什么數(shù)據(jù)塊將被保持在存儲(chǔ)器2208中或從存儲(chǔ)器2028驅(qū)逐。到目前為止,現(xiàn)有的實(shí)現(xiàn)執(zhí)行某些一般的和應(yīng)用無關(guān)的方法,諸如先進(jìn)先出(FIFO)或最近最少使用(LRU),以保持或驅(qū)逐存儲(chǔ)器中的數(shù)據(jù)塊以便從文件或卷服務(wù)器2210帶入新的數(shù)據(jù)塊。而且,當(dāng)被數(shù)據(jù)塊占用的存儲(chǔ)器將被收回以便存儲(chǔ)另一數(shù)據(jù)塊時(shí),原始數(shù)據(jù)被簡(jiǎn)單地擦掉而不考慮其未來使用。正常地,盤子系統(tǒng)是非常緩慢的,并且當(dāng)數(shù)據(jù)塊被從其讀并被文件或卷服務(wù)器2210傳送到文件系統(tǒng)客戶端2206至存儲(chǔ)器2208時(shí)招致高的等待時(shí)間。因此,當(dāng)原始數(shù)據(jù)塊被擦除時(shí),應(yīng)用可能必須等待更長(zhǎng)時(shí)間,如果其嘗試在近期訪問原始數(shù)據(jù)的話。關(guān)于該種類的實(shí)現(xiàn)的主要問題是數(shù)據(jù)訪問路徑中的模塊(即操作系統(tǒng)2204、文件系統(tǒng)客戶端2206、存儲(chǔ)器2208、塊服務(wù)器2210和貯存器)中沒有一個(gè)具有什么數(shù)據(jù)塊將被應(yīng)用2202訪問、數(shù)據(jù)塊何時(shí)將被應(yīng)用2202訪問以及數(shù)據(jù)塊將被應(yīng)用2202多么頻繁訪問的任何知識(shí)。
在圖23中示出了描繪從貯存器2212訪問數(shù)據(jù)塊的應(yīng)用2202的示例場(chǎng)景。被編號(hào)的圓圈示出在訪問數(shù)據(jù)塊的過程中涉及的步驟。下文解釋這些步驟。第一,應(yīng)用2202使用文件或操作系統(tǒng)2204的API來訪問數(shù)據(jù)塊。操作系統(tǒng)2204調(diào)用用于文件系統(tǒng)客戶端2206的等價(jià)API以對(duì)其進(jìn)行訪問。第二,文件系統(tǒng)客戶端2206嘗試找到數(shù)據(jù)是否存在于專用于此目的的其本地存儲(chǔ)器緩沖器中。如果找到,則跳過下面的步驟(3)至(7)。第三,發(fā)送用以從塊服務(wù)器2210檢索數(shù)據(jù)的命令。第四,塊服務(wù)器2210向貯存器2212發(fā)送用以從貯存器讀數(shù)據(jù)塊的讀命令。第五,貯存器2212在從貯存器讀數(shù)據(jù)塊之后將其返回到塊服務(wù)器2210。第六,塊服務(wù)器2210將數(shù)據(jù)塊返回到文件系統(tǒng)客戶端2206。第七,文件系統(tǒng)客戶端2206將數(shù)據(jù)保存在存儲(chǔ)器2208中的存儲(chǔ)器緩沖器中以用于任何未來訪問。第八,文件系統(tǒng)客戶端2206將所請(qǐng)求的數(shù)據(jù)返回到應(yīng)用2202。
在本文中公開的方法和系統(tǒng)中,為了解決與由在NoSQL和大數(shù)據(jù)領(lǐng)域中的最新類別的應(yīng)用進(jìn)行的數(shù)據(jù)訪問相關(guān)的性能要求,已提出由任何應(yīng)用2202控制數(shù)據(jù)塊訪問中的組件,其包括操作系統(tǒng)2204、文件系統(tǒng)客戶端2206、存儲(chǔ)器2208、塊服務(wù)器2210和貯存器2212。即,我們提出以下各項(xiàng)。第一,使得操作系統(tǒng)2204能夠提供附加API以允許應(yīng)用控制文件系統(tǒng)客戶端2206。第二,增強(qiáng)文件系統(tǒng)客戶端2206以支持以下各項(xiàng):(a)允許應(yīng)用2202針對(duì)特定的文件或卷在存儲(chǔ)器2208中創(chuàng)建專用存儲(chǔ)器池,在該意義上,文件或卷將具有專用的存儲(chǔ)器緩沖器池以保持出于其他文件或卷的目的而未被共享或移除的特定于其的數(shù)據(jù);(b)允許應(yīng)用2202針對(duì)具有文件或卷的特定會(huì)話在存儲(chǔ)器2208中創(chuàng)建專用存儲(chǔ)器池,使得具有文件或卷的兩個(gè)獨(dú)立會(huì)話將具有獨(dú)立的存儲(chǔ)器緩沖器來保持其數(shù)據(jù)。作為示例,關(guān)鍵重要的文件會(huì)話可在存儲(chǔ)器2208中具有大量存儲(chǔ)器緩沖器,使得該會(huì)話可以利用更多被呈現(xiàn)的數(shù)據(jù)用于更快且頻繁的訪問,而具有同一文件的第二會(huì)話可被分配非常少的緩沖器,并且因此其可能必須招致更多延遲和用以訪問文件的各種部分的其緩沖器的再使用;(c)允許應(yīng)用2202創(chuàng)建跨其他主機(jī)或塊服務(wù)器2210的超出存儲(chǔ)器2208的擴(kuò)展緩沖器池用于更快的訪問。這使得能夠?qū)?shù)據(jù)塊保持在其他主機(jī)的存儲(chǔ)器2208以及存在于文件或塊服務(wù)器2210中的任何存儲(chǔ)器2402中;(d)允許應(yīng)用2202使得任何數(shù)據(jù)塊相對(duì)于用于文件、卷或會(huì)話的其他數(shù)據(jù)塊而言在存儲(chǔ)器2208中更加持久。這允許應(yīng)用挑揀和選擇將始終可用于立即訪問的數(shù)據(jù)塊且不讓操作系統(tǒng)2204或文件系統(tǒng)客戶端2206基于其自己的驅(qū)逐策略將所述數(shù)據(jù)塊驅(qū)逐;以及(e)允許應(yīng)用2202使得任何數(shù)據(jù)塊相對(duì)于用于文件、卷或會(huì)話的其他數(shù)據(jù)塊而言在存儲(chǔ)器存儲(chǔ)器2208中不那么持久。這允許應(yīng)用讓操作系統(tǒng)2204和文件系統(tǒng)客戶端2206隨著和在其選擇時(shí)驅(qū)逐和再使用數(shù)據(jù)塊的緩沖器。這幫助將其他正常數(shù)據(jù)塊保持達(dá)更長(zhǎng)的時(shí)間段。第三,使得塊服務(wù)器2210能夠用以下能力如圖24中所示地在應(yīng)用容器2400方面主控應(yīng)用特定的模塊:(a)使得應(yīng)用容器2400能夠提前獲取應(yīng)用2202感興趣的數(shù)據(jù)塊并將其存儲(chǔ)在本地存儲(chǔ)器2402中用于稍后的快速訪問,并避免與貯存器2212相關(guān)聯(lián)的等待時(shí)間損失和(b)使得能夠?qū)闹鳈C(jī)的存儲(chǔ)器2208驅(qū)逐的頁面存儲(chǔ)在本地存儲(chǔ)器2402中以用于由應(yīng)用2202進(jìn)行的任何稍后訪問。
上文的應(yīng)用驅(qū)動(dòng)的特征(2)(c)需要進(jìn)一步解釋。存在兩個(gè)場(chǎng)景。第一個(gè)涉及從塊服務(wù)器2210的存儲(chǔ)器檢索數(shù)據(jù)塊。另一場(chǎng)景涉及從另一主機(jī)檢索該數(shù)據(jù)塊。假設(shè)已由兩個(gè)主機(jī)(H1)和(H2)從貯存器2212讀完全相同的數(shù)據(jù)塊,本文中公開的方法和系統(tǒng)提供諸如在圖25中描繪的系統(tǒng)。當(dāng)注意到數(shù)據(jù)塊存在于另一主機(jī)(H2)中時(shí),其被文件系統(tǒng)客戶端2206從所述主機(jī)(H2)直接地檢索而不是要求塊服務(wù)器2210將其從貯存器2212檢索所述數(shù)據(jù)塊,那將更慢并招致高等待時(shí)間。
在實(shí)施例中,如果文件系統(tǒng)客戶端2206由于在其地點(diǎn)上存儲(chǔ)更重要的數(shù)據(jù)塊而決定將數(shù)據(jù)塊從(D1)驅(qū)逐,則文件系統(tǒng)客戶端2206可以將被驅(qū)逐數(shù)據(jù)塊發(fā)送到文件系統(tǒng)客戶端2206'以代表其被存儲(chǔ)在存儲(chǔ)器2208'中。
應(yīng)注意的是上面提及的技術(shù)可以在主機(jī)的(一個(gè)或多個(gè))故障的情況下被應(yīng)用于實(shí)現(xiàn)快速的失效轉(zhuǎn)移。更進(jìn)一步地,上述高速緩存技術(shù)、尤其是關(guān)于RAM的高速緩存技術(shù)可以被用來用暖高速緩存實(shí)現(xiàn)失效轉(zhuǎn)移。圖25示出了用暖高速緩存的快速失效轉(zhuǎn)移系統(tǒng)的示例。最終結(jié)果是在節(jié)點(diǎn)的故障期間,新節(jié)點(diǎn)上的最終應(yīng)用將不在(RAM中的)高速緩存變暖之前經(jīng)受一段時(shí)間并從而招致一定時(shí)段的較低應(yīng)用性能。
在本文中提供了具有帶有應(yīng)用特定模塊以根據(jù)應(yīng)用的需要來控制存儲(chǔ)訪問的的文件服務(wù)器和處理器的系統(tǒng)和方法。
在本文中還提供了具有使得應(yīng)用特定模塊能夠根據(jù)應(yīng)用的需要來控制存儲(chǔ)訪問的處理器和數(shù)據(jù)(組成固定大小字節(jié)的塊、具有可變字節(jié)數(shù)的類似或不同對(duì)象)存儲(chǔ)器的系統(tǒng)和方法。
在本文中還提供了一種系統(tǒng)和方法,其從主機(jī)的存儲(chǔ)器和/或其瞬時(shí)或永久存儲(chǔ)元件檢索出于應(yīng)用使用的目的而預(yù)先保持的舊文件或存儲(chǔ)數(shù)據(jù)塊,并將其存儲(chǔ)在另一主機(jī)的存儲(chǔ)器和/或其瞬時(shí)或永久存儲(chǔ)元件中,以供應(yīng)用在稍后的時(shí)間使用。
在本文中還提供了一種系統(tǒng)和方法,其從主機(jī)的存儲(chǔ)器和/或其瞬時(shí)或永久存儲(chǔ)元件檢索出于應(yīng)用使用的目的而預(yù)先保持的任何文件或存儲(chǔ)數(shù)據(jù)塊,并將其存儲(chǔ)在另一主機(jī)的存儲(chǔ)器和/或其瞬時(shí)或永久存儲(chǔ)元件中,以供應(yīng)用在稍后的時(shí)間使用。
在本文中還提出了一種系統(tǒng)和方法,其出于減少數(shù)據(jù)訪問的等待時(shí)間的目的而利用主機(jī)的存儲(chǔ)器和/或其瞬時(shí)或永久存儲(chǔ)元件來存儲(chǔ)隨后將被在另一主機(jī)中運(yùn)行的應(yīng)用訪問的任何文件或存儲(chǔ)數(shù)據(jù)塊。
出于應(yīng)用使用的目的而預(yù)先保持的任何文件或存儲(chǔ)數(shù)據(jù)塊可被存儲(chǔ)在另一主機(jī)的存儲(chǔ)器和/或其瞬時(shí)或永久存儲(chǔ)元件中,以供應(yīng)用在稍后的時(shí)間使用。
通過網(wǎng)絡(luò)將出于應(yīng)用使用的目的而預(yù)先保持的文件或存儲(chǔ)數(shù)據(jù)塊從主機(jī)的存儲(chǔ)器和/或其瞬時(shí)或永久存儲(chǔ)元件傳輸?shù)搅硪恢鳈C(jī)的機(jī)制。
根據(jù)各種示例性且非限制性實(shí)施例,公開了一種設(shè)備,該設(shè)備包括融合輸入/輸出控制器,其包含物理目標(biāo)存儲(chǔ)介質(zhì)控制器、物理網(wǎng)絡(luò)接口控制器和存儲(chǔ)介質(zhì)控制器與網(wǎng)絡(luò)接口控制器之間的網(wǎng)關(guān),其中網(wǎng)關(guān)提供用于存儲(chǔ)介質(zhì)控制器與網(wǎng)絡(luò)接口控制器之間的存儲(chǔ)業(yè)務(wù)和網(wǎng)絡(luò)業(yè)務(wù)的直接連接。
根據(jù)某些實(shí)施例,所述設(shè)備還可以包括虛擬存儲(chǔ)接口,其將被存儲(chǔ)介質(zhì)控制器控制的存儲(chǔ)介質(zhì)呈現(xiàn)為本地附著存儲(chǔ),不管存儲(chǔ)介質(zhì)的位置如何。根據(jù)其他實(shí)施例,所述設(shè)備還可以包括虛擬存儲(chǔ)接口,其將被存儲(chǔ)介質(zhì)控制器控制的存儲(chǔ)介質(zhì)呈現(xiàn)為本地附著存儲(chǔ),不管存儲(chǔ)介質(zhì)的類型如何。根據(jù)其他實(shí)施例,所述設(shè)備還可以包括促進(jìn)存儲(chǔ)介質(zhì)的動(dòng)態(tài)提供的虛擬存儲(chǔ)接口,其中物理存儲(chǔ)可以是本地的或遠(yuǎn)程的。
根據(jù)其他實(shí)施例,所述設(shè)備還可以包括促進(jìn)存儲(chǔ)介質(zhì)的動(dòng)態(tài)提供的虛擬網(wǎng)絡(luò)接口,其中物理存儲(chǔ)可以是本地的或遠(yuǎn)程的。根據(jù)其他實(shí)施例,所述設(shè)備可適合于作為控制器卡安裝在主機(jī)計(jì)算系統(tǒng)上,特別地,其中網(wǎng)關(guān)在沒有主機(jī)計(jì)算系統(tǒng)的操作系統(tǒng)的介入的情況下操作。
根據(jù)其他實(shí)施例,設(shè)備可以包括提供設(shè)備的存儲(chǔ)功能和網(wǎng)絡(luò)功能中的至少一個(gè)的至少一個(gè)現(xiàn)場(chǎng)可編程門陣列。根據(jù)其他實(shí)施例,設(shè)備可被配置為網(wǎng)絡(luò)部署交換機(jī)。根據(jù)其他實(shí)施例,所述設(shè)備還可以包括用于在第一協(xié)議與至少一個(gè)其他協(xié)議之間轉(zhuǎn)換存儲(chǔ)介質(zhì)指令的設(shè)備的功能組件。
參考圖26,圖示了存儲(chǔ)設(shè)備的虛擬化的示例性且非限制性方法。第一,在步驟2600處,訪問對(duì)按照第一存儲(chǔ)協(xié)議的指令進(jìn)行響應(yīng)的物理存儲(chǔ)設(shè)備。第二,在步驟2602中,將指令在第一存儲(chǔ)協(xié)議與第二存儲(chǔ)協(xié)議之間轉(zhuǎn)換。最后,在步驟2604處,使用第二協(xié)議,將物理存儲(chǔ)設(shè)備呈現(xiàn)給操作系統(tǒng),使得物理存儲(chǔ)設(shè)備的存儲(chǔ)可以被動(dòng)態(tài)地提供,不管物理存儲(chǔ)設(shè)備對(duì)使用操作系統(tǒng)的主機(jī)計(jì)算系統(tǒng)而言是本地的還是遠(yuǎn)程的。
根據(jù)各種實(shí)施例,第一協(xié)議是SATA協(xié)議、NVMe協(xié)議、SAS協(xié)議、iSCSI協(xié)議、光纖通道協(xié)議和以太網(wǎng)光纖通道協(xié)議中的至少一個(gè)。在其他實(shí)施例中,第二協(xié)議是NVMe協(xié)議。
在某些實(shí)施例中,所述方法還可以包括提供操作中系統(tǒng)與執(zhí)行指令在第一和第二存儲(chǔ)協(xié)議之間的轉(zhuǎn)換的設(shè)備之間的接口和/或提供執(zhí)行指令的轉(zhuǎn)換的設(shè)備與遠(yuǎn)程網(wǎng)絡(luò)部署存儲(chǔ)設(shè)備之間的以太網(wǎng)NMVe連接。
參考圖27,圖示了促進(jìn)應(yīng)用和容器中的至少一個(gè)的遷移的示例性且非限制性方法。第一,在步驟2700處,提供了融合存儲(chǔ)和聯(lián)網(wǎng)控制器,其中網(wǎng)關(guān)在沒有主機(jī)計(jì)算機(jī)的操作系統(tǒng)的介入的情況下提供用于設(shè)備的存儲(chǔ)組件與聯(lián)網(wǎng)組件之間的用于網(wǎng)絡(luò)和存儲(chǔ)業(yè)務(wù)的連接。接下來,在步驟2702處,將至少一個(gè)應(yīng)用或容器映射到被融合存儲(chǔ)和聯(lián)網(wǎng)控制器控制的目標(biāo)物理存儲(chǔ)設(shè)備,使得當(dāng)應(yīng)用或容器移動(dòng)到另一計(jì)算系統(tǒng)時(shí),在沒有目標(biāo)物理存儲(chǔ)器被附著到的主機(jī)系統(tǒng)的操作系統(tǒng)的介入的情況下,應(yīng)用或容器可以訪問目標(biāo)物理存儲(chǔ)器。
根據(jù)各種實(shí)施例,遷移是Linux容器或向外擴(kuò)展應(yīng)用的。
根據(jù)其他實(shí)施例,目標(biāo)物理存儲(chǔ)器是使用iSCSI協(xié)議、光纖通道協(xié)議和以太網(wǎng)光纖通道協(xié)議中的至少一個(gè)的網(wǎng)絡(luò)部署存儲(chǔ)設(shè)備。在其他實(shí)施例中,目標(biāo)物理存儲(chǔ)器是盤附著存儲(chǔ)設(shè)備,其使用SAS協(xié)議、SATA協(xié)議和NVMe協(xié)議中的至少一個(gè)。
參考圖28,圖示了為網(wǎng)絡(luò)提供服務(wù)質(zhì)量(QoS)的示例性且非限制性方法。第一,在步驟2800處,提供了融合存儲(chǔ)和聯(lián)網(wǎng)控制器,其中網(wǎng)關(guān)在沒有主機(jī)計(jì)算機(jī)的操作系統(tǒng)的介入的情況下提供用于設(shè)備的存儲(chǔ)組件與聯(lián)網(wǎng)組件之間的用于網(wǎng)絡(luò)和存儲(chǔ)業(yè)務(wù)的連接。接下來,在步驟2802處,在沒有主機(jī)計(jì)算機(jī)的操作系統(tǒng)的介入的情況下,管理與在其數(shù)據(jù)路徑中部署了存儲(chǔ)和聯(lián)網(wǎng)控制器的網(wǎng)絡(luò)相關(guān)的至少一個(gè)服務(wù)質(zhì)量(QoS)參數(shù),此類管理是基于由融合存儲(chǔ)和聯(lián)網(wǎng)控制器處理的存儲(chǔ)業(yè)務(wù)和網(wǎng)絡(luò)業(yè)務(wù)中的至少一個(gè)。
雖然僅示出并描述了本公開的幾個(gè)實(shí)施例,但對(duì)于本領(lǐng)域的技術(shù)人員而言阱顯而易見的是在不脫離如在以下權(quán)利要求中描述的本公開的精神和范圍的情況下可對(duì)其進(jìn)行許多變更和修改。在本文中參考的所有專利申請(qǐng)和專利(國外和國內(nèi)兩者)以及所有其他公開被整體地通過引用結(jié)合到本文中至法律允許的最大程度。
本文中描述的方法和系統(tǒng)可部分地或完全地通過在處理器上執(zhí)行計(jì)算機(jī)軟件、程序代碼和/或指令的機(jī)器來部署。本公開可被實(shí)現(xiàn)為機(jī)器上方法、作為機(jī)器的部分或相對(duì)于機(jī)器的系統(tǒng)或裝置或者作為在機(jī)器中的一個(gè)或多個(gè)上執(zhí)行的計(jì)算機(jī)可讀介質(zhì)中所體現(xiàn)的計(jì)算機(jī)程序產(chǎn)品。在實(shí)施例中,處理器可以是服務(wù)器、云服務(wù)器、客戶端、網(wǎng)絡(luò)基礎(chǔ)設(shè)施、移動(dòng)計(jì)算平臺(tái)、固定計(jì)算平臺(tái)或其他計(jì)算平臺(tái)的部分。處理器可以是能夠執(zhí)行程序指令、代碼、二進(jìn)制指令等的任何種類的計(jì)算或處理設(shè)備。處理器可以是或者可以包括信號(hào)處理器、數(shù)字處理器、嵌入式處理器、微處理器或任何變體,諸如協(xié)處理器(數(shù)學(xué)協(xié)處理器、圖形協(xié)處理器、通信協(xié)處理器等)等,其可直接地或間接地促進(jìn)存儲(chǔ)在其上面的程序代碼或程序指令的執(zhí)行。另外,處理器可使得能夠執(zhí)行多個(gè)程序、線程以及代碼。該線程可被同時(shí)地執(zhí)行以增強(qiáng)處理器的性能并促進(jìn)應(yīng)用的同時(shí)操作。通過實(shí)現(xiàn),可在一個(gè)或多個(gè)線程中實(shí)現(xiàn)本文中描述的方法、程序代碼、程序指令等。該線程可衍生出其他線程,其可具有與之相關(guān)聯(lián)的分配優(yōu)先次序;處理器可基于優(yōu)先次序或者基于在程序代碼中提供的指令的任何其他順序來執(zhí)行這些線程。處理器或利用處理器的任何機(jī)器可以包括存儲(chǔ)如在本文中和別處所述的方法、代碼、指令和程序的非瞬時(shí)存儲(chǔ)器。處理器可通過可接口來訪問存儲(chǔ)如在本文中和別處所述的方法、代碼以及指令的非瞬時(shí)存儲(chǔ)介質(zhì)。用于存儲(chǔ)方法、程序、代碼、程序指令或能夠被計(jì)算或處理設(shè)備執(zhí)行的其他類型的指令的與處理器相關(guān)聯(lián)的存儲(chǔ)介質(zhì)可以包括但不限于CD-ROM、DVD、存儲(chǔ)器、硬盤、閃速驅(qū)動(dòng)、RRAM、ROM、高速緩存等中的一個(gè)或多個(gè)。
處理器可以包括可增強(qiáng)多處理器的速度和性能的一個(gè)或多個(gè)核。在實(shí)施例中,處理器可以是雙核處理器、四核處理器、將兩個(gè)或更多獨(dú)立的核(稱為管芯)組合的其他芯片級(jí)多處理器等。
本文中描述的方法和系統(tǒng)可部分地或完全地通過在服務(wù)器、客戶端、隔火墻、網(wǎng)關(guān)、集線器、路由器或其他此類計(jì)算機(jī)和/或網(wǎng)絡(luò)硬件上執(zhí)行計(jì)算機(jī)軟件的機(jī)器來部署。軟件程序可與服務(wù)器相關(guān)聯(lián),該服務(wù)器包括文件服務(wù)器、打印服務(wù)器、域服務(wù)器、因特網(wǎng)服務(wù)器、內(nèi)部網(wǎng)服務(wù)器、云服務(wù)器以及其他變體,諸如輔助服務(wù)器、主機(jī)服務(wù)器、分布式服務(wù)器等。服務(wù)器可以包括存儲(chǔ)器、處理器、計(jì)算機(jī)可讀介質(zhì)、存儲(chǔ)介質(zhì)、端口(物理和虛擬)、通信設(shè)備以及能夠通過有線或無線介質(zhì)等訪問其他服務(wù)器、客戶端、機(jī)器以及設(shè)備的接口中的一個(gè)或多個(gè)。如在本文中和別處所述的方法、程序或代碼可被服務(wù)器執(zhí)行。另外,執(zhí)行如在本申請(qǐng)中所述的方法所需的其他設(shè)備可被視為與服務(wù)器相關(guān)聯(lián)的基礎(chǔ)設(shè)施的部分。
服務(wù)器可以提供到其他設(shè)備的接口,該設(shè)備在沒有限制的情況下包括客戶端、其他服務(wù)器、打印機(jī)、數(shù)據(jù)庫服務(wù)器、打印服務(wù)器、文件服務(wù)器、通信服務(wù)器、分布式服務(wù)器、社交服務(wù)器等。另外,此耦合和/或連接可促過程序跨網(wǎng)絡(luò)的遠(yuǎn)程執(zhí)行。在不違背本公開的范圍的情況下,某些或所有這些設(shè)備的聯(lián)網(wǎng)可促進(jìn)一個(gè)或多個(gè)位置處的程序或方法的并行處理。另外,通過接口被附著到服務(wù)器的任何設(shè)備可以包括能夠存儲(chǔ)方法、程序、代碼和/或指令的至少一個(gè)存儲(chǔ)介質(zhì)。中央儲(chǔ)存庫可以提供要在不同設(shè)備上執(zhí)行的程序指令。在本實(shí)現(xiàn)中,遠(yuǎn)程儲(chǔ)存庫可充當(dāng)用于程序代碼、指令以及程序的存儲(chǔ)介質(zhì)。
軟件指令可與客戶端相關(guān)聯(lián),該服務(wù)器包括文件客戶端、打印客戶端、域客戶端、因特網(wǎng)客戶端、內(nèi)部網(wǎng)客戶端、云服務(wù)器以及其他變體,諸如輔助客戶端、主機(jī)客戶端、分布式客戶端等??蛻舳丝梢园ù鎯?chǔ)器、處理器、計(jì)算機(jī)可讀介質(zhì)、存儲(chǔ)介質(zhì)、端口(物理和虛擬)、通信設(shè)備以及能夠通過有線或無線介質(zhì)等訪問其他客戶端、服務(wù)器、機(jī)器以及設(shè)備的接口中的一個(gè)或多個(gè)。如在本文中和別處所述的方法、程序或代碼可被客戶端執(zhí)行。另外,執(zhí)行如在本申請(qǐng)中所述的方法所需的其他設(shè)備可被視為與客戶端相關(guān)聯(lián)的基礎(chǔ)設(shè)施的部分。
客戶端可以提供到其他設(shè)備的接口,該設(shè)備在沒有限制的情況下包括服務(wù)器、其他客戶端、打印機(jī)、數(shù)據(jù)庫服務(wù)器、打印服務(wù)器、文件服務(wù)器、通信服務(wù)器、分布式服務(wù)器等。另外,該耦合和/或連接可促進(jìn)程序跨網(wǎng)絡(luò)的遠(yuǎn)程執(zhí)行。在不違背本公開的范圍的情況下,某些或所有這些設(shè)備的聯(lián)網(wǎng)可促進(jìn)一個(gè)或多個(gè)位置處的程序或方法的并行處理。另外,通過接口被附著到客戶端的任何設(shè)備可以包括能夠存儲(chǔ)方法、程序、應(yīng)用、代碼和/或指令的至少一個(gè)存儲(chǔ)介質(zhì)。中央儲(chǔ)存庫可以提供要在不同設(shè)備上執(zhí)行的程序指令。在本實(shí)現(xiàn)中,遠(yuǎn)程儲(chǔ)存庫可充當(dāng)用于程序代碼、指令以及程序的存儲(chǔ)介質(zhì)。
本文中描述的方法和系統(tǒng)可部分地或完全地通過網(wǎng)絡(luò)基礎(chǔ)設(shè)施來部署。網(wǎng)絡(luò)基礎(chǔ)設(shè)施可以包括諸如計(jì)算設(shè)備、服務(wù)器、路由器、集線器、防火墻、客戶端、個(gè)人計(jì)算機(jī)、通信設(shè)備、路由設(shè)備和如本領(lǐng)域中已知的其他有源和無源設(shè)備、模塊和/或部件之類的元件。與網(wǎng)絡(luò)基礎(chǔ)設(shè)施相關(guān)聯(lián)的計(jì)算和/或非計(jì)算設(shè)備除其他部件之外還可以包括存儲(chǔ)介質(zhì),諸如閃存、緩沖器、堆棧、RAM、ROM等。在本文中和別處所述的過程、方法、程序代碼、指令可被網(wǎng)絡(luò)基礎(chǔ)設(shè)施元件中的一個(gè)或多個(gè)執(zhí)行。本文中描述的方法和系統(tǒng)可適合于與任何種類的私人、團(tuán)體或混合式云計(jì)算網(wǎng)絡(luò)或云計(jì)算環(huán)境一起使用,包括涉及軟件即服務(wù)(SaaS)、平臺(tái)即服務(wù)(PaaS)和/或基礎(chǔ)設(shè)施即服務(wù)(IaaS)的特征的那些。
在本文中和別處所述的方法、程序代碼以及指令可在具有多個(gè)小區(qū)的蜂窩網(wǎng)絡(luò)上實(shí)現(xiàn)。該蜂窩網(wǎng)絡(luò)可以是頻分多址(FDMA)網(wǎng)絡(luò)或碼分多址(CDMA)網(wǎng)絡(luò)。該蜂窩式網(wǎng)絡(luò)可以包括移動(dòng)設(shè)備、小區(qū)站點(diǎn)、基站、重發(fā)器、天線、塔架等。蜂窩網(wǎng)絡(luò)可以是GSM、GPRS 3G、EVDO、網(wǎng)狀網(wǎng)絡(luò)或其他網(wǎng)絡(luò)類型。
在本文中和別處所述的方法、程序代碼以及指令可在移動(dòng)設(shè)備上或通過移動(dòng)設(shè)備來實(shí)現(xiàn)。移動(dòng)設(shè)備可以包括導(dǎo)航設(shè)備、蜂窩電話、移動(dòng)電話、移動(dòng)個(gè)人數(shù)字助理、膝上計(jì)算機(jī)、掌上式電腦、上網(wǎng)本、尋呼機(jī)、電子書閱讀器、音樂播放器等。這些設(shè)備除其他部件之外還可以包括存儲(chǔ)介質(zhì),諸如閃存、緩沖器、ROM、ROM和一個(gè)或多個(gè)計(jì)算設(shè)備??墒沟门c移動(dòng)設(shè)備相關(guān)聯(lián)到計(jì)算設(shè)備能夠執(zhí)行存儲(chǔ)在其上面的程序代碼、方法以及指令。替換地,移動(dòng)設(shè)備可被配置成與其他設(shè)備相合作地執(zhí)行指令。移動(dòng)設(shè)備可與跟服務(wù)器對(duì)接且被配置成執(zhí)行程序代碼的基站通信。移動(dòng)設(shè)備可在端對(duì)端網(wǎng)絡(luò)、網(wǎng)狀網(wǎng)絡(luò)或其他通信網(wǎng)絡(luò)上通信。程序代碼可被存儲(chǔ)在與服務(wù)器相關(guān)聯(lián)的存儲(chǔ)介質(zhì)上并被嵌入服務(wù)器內(nèi)的計(jì)算設(shè)備執(zhí)行?;究梢园ㄓ?jì)算設(shè)備和存儲(chǔ)介質(zhì)。存儲(chǔ)設(shè)備可存儲(chǔ)被與基站相關(guān)聯(lián)的計(jì)算設(shè)備執(zhí)行的程序代碼和指令。
可在可以包括以下各項(xiàng)的機(jī)器可讀介質(zhì)上存儲(chǔ)和/或訪問計(jì)算機(jī)軟件、程序代碼和/或指令:保持被用于在一定時(shí)間間隔內(nèi)的計(jì)算的數(shù)字?jǐn)?shù)據(jù)的計(jì)算機(jī)部件、設(shè)備以及記錄介質(zhì);稱為隨機(jī)訪問儲(chǔ)器(RAM)的半導(dǎo)體儲(chǔ)存器;通常用于更持久的存儲(chǔ)的大容量?jī)?chǔ)存器,諸如光盤、比如硬盤、磁帶、鼓、卡片及其他類型的形式;處理器寄存器、高速緩沖存儲(chǔ)器、易失性存儲(chǔ)器、非易失性存儲(chǔ)器;光學(xué)儲(chǔ)存器,諸如CD、DVD;可移動(dòng)介質(zhì),諸如閃存(例如USB棒或鍵)、軟盤、磁帶、織帶、穿孔卡、獨(dú)立RAM盤、壓縮驅(qū)動(dòng)器、可移動(dòng)大容量?jī)?chǔ)存器、離線等;其他計(jì)算機(jī)存儲(chǔ)器,諸如動(dòng)態(tài)存儲(chǔ)器、靜態(tài)存儲(chǔ)器、讀/寫儲(chǔ)存器、可變儲(chǔ)存器、只讀、隨機(jī)訪問、順序訪問、位置可尋址、文件可尋址、內(nèi)容可尋址、網(wǎng)絡(luò)附加存儲(chǔ)、存儲(chǔ)區(qū)域網(wǎng)絡(luò)、條形碼、磁性墨水等。
本文中描述的方法和系統(tǒng)可將物理和/或無形項(xiàng)目從一個(gè)狀態(tài)變換成另一個(gè)。本文中描述的方法還可將表示物理和/或無形項(xiàng)目的數(shù)據(jù)從一個(gè)狀態(tài)變換成另一個(gè)。
在本文中(包括直通各圖用流程圖和框圖)描述和描繪的元件暗示元件直接的邏輯邊界。然而,根據(jù)軟件或硬件工程實(shí)踐,所描繪的元件及其功能可在機(jī)器上通過具有處理器的計(jì)算機(jī)可執(zhí)行介質(zhì)來實(shí)現(xiàn),該處理器能夠?qū)⒋鎯?chǔ)在其上面的程序指令作為單塊軟件結(jié)構(gòu)、作為獨(dú)立軟件模塊或者作為采用外部例程、代碼、服務(wù)等的模塊或者這些的任何組合來執(zhí)行,并且所有此類實(shí)現(xiàn)都可以在本公開的范圍內(nèi)。此類機(jī)器的示例可以包括但可不限于個(gè)人數(shù)字助理、膝上計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、移動(dòng)電話、其他手持計(jì)算設(shè)備、醫(yī)療設(shè)備、有線或無線通信設(shè)備、換能器、芯片、計(jì)算器、衛(wèi)星、平板電腦PC、電子圖書、小配件、電子設(shè)備、具有人工智能的設(shè)備、計(jì)算設(shè)備、聯(lián)網(wǎng)設(shè)別、服務(wù)器、路由器等。進(jìn)一步地,用流程圖或框圖描繪的元件或任何其他邏輯部件可在能夠執(zhí)行程序指令的機(jī)器上實(shí)現(xiàn)。因此,雖然前文的附圖和描述闡述了公開系統(tǒng)的功能方面,但不應(yīng)從這些描述推斷用于實(shí)現(xiàn)這些功能方面的軟件的特定布置,除非明確地?cái)⑹龌蛘吡硗鈴纳舷挛娘@而易見。同樣地,將領(lǐng)會(huì)到的是上文識(shí)別和描述的各種步驟可改變,并且步驟的順序可適應(yīng)于本文中公開的技術(shù)的特定應(yīng)用。所有此類變化和修改意圖落在本公開的范圍內(nèi)。同樣地,不應(yīng)將用于各種步驟的順序的描繪和/或描述理解成要求用于按下步驟的特定執(zhí)行順序,除非特定應(yīng)用要求或者明確地?cái)⑹龌蛘吡硗鈴纳舷挛娘@而易見。
上文描述的方法和/或過程以及與之相關(guān)聯(lián)的步驟可用硬件、軟件或適合于特定應(yīng)用的硬件和軟件的任何組合來實(shí)現(xiàn)。硬件可以包括通用計(jì)算機(jī)和/或?qū)S糜?jì)算設(shè)備或特定計(jì)算設(shè)備或特定計(jì)算設(shè)備的特定方面或部件??稍谝粋€(gè)或多個(gè)微處理器、微控制器、嵌入式微控制器、可編程數(shù)字信號(hào)處理器或其他可編程設(shè)備以及內(nèi)部和/或外部存儲(chǔ)器中實(shí)現(xiàn)各過程??赏瑯踊虼栽趯S眉呻娐?、可編程門陣列、可編程陣列邏輯或可被配置成處理電子信號(hào)的任何其他設(shè)備或設(shè)備組合中體現(xiàn)該過程。將進(jìn)一步領(lǐng)會(huì)到的是可將過程中的一個(gè)或多個(gè)實(shí)現(xiàn)為能夠在機(jī)器可讀介質(zhì)上執(zhí)行的計(jì)算機(jī)可執(zhí)行代碼。
可使用諸如C之類的結(jié)構(gòu)化編程語言、諸如C++之類的面向?qū)ο缶幊陶Z言或者可以被存儲(chǔ)、編譯或解釋以在上述設(shè)備中的一個(gè)以及處理器的異構(gòu)組合、處理器架構(gòu)或不同硬件和軟件的組合或者能夠執(zhí)行程序指令的任何其他機(jī)器上執(zhí)行的任何其他高級(jí)或低級(jí)編程語言(包括匯編語言、硬件描述語言以及數(shù)據(jù)庫編程語言和技術(shù))來創(chuàng)建計(jì)算機(jī)可執(zhí)行代碼。
因此,在一個(gè)方面,可用當(dāng)在一個(gè)或多個(gè)計(jì)算設(shè)備上執(zhí)行時(shí)執(zhí)行上文所述的方法及其組合的步驟的計(jì)算機(jī)可執(zhí)行代碼來體現(xiàn)上文所述的方法及其組合。在另一方面,可在執(zhí)行該方法的步驟的系統(tǒng)中體現(xiàn)該方法,并且可以許多方式跨設(shè)備分布,或者可將所有功能集成到專用、獨(dú)立設(shè)備或其他硬件中。在另一方面,用于執(zhí)行與上述過程相關(guān)聯(lián)的步驟的手段可以包括任何上文所述的硬件和/或軟件。所有此類置換和組合意圖落在本公開的范圍內(nèi)。
雖然已結(jié)合詳細(xì)地示出并描述的優(yōu)選實(shí)施例公開了本公開,但其各種修改和改進(jìn)對(duì)于本領(lǐng)域的技術(shù)人員而言將是顯而易見的。因此,本公開的精神和范圍不限于前述示例,而是應(yīng)在法律允許的最寬泛意義上理解。
術(shù)語“一”和“一個(gè)”和“所述”和類似指示物在描述本公開的上下文中(尤其是在以下權(quán)利要求的上下文中)的使用應(yīng)被理解成涵蓋單數(shù)和復(fù)數(shù)兩者,除非在本文中另外指明或明顯地與上下文矛盾。應(yīng)將術(shù)語“包括”、“具有” 、“包含”和“含有”理解為開放式術(shù)語(即,意指“包括但不限于”),除非另外說明。本文中的值范圍的敘述僅僅意圖充當(dāng)單獨(dú)地提及落在該范圍內(nèi)的每個(gè)單獨(dú)值的簡(jiǎn)寫方法(除非在本文中另外指明),并且每個(gè)單獨(dú)值被結(jié)合到本文中,如同其在本文中被單獨(dú)地?cái)⑹鲆粯?。可以按照任何適當(dāng)?shù)捻樞騺韴?zhí)行本文中描述的所有方法,除非在本文中另外指明或者很明顯與上下文矛盾。在本文中提供的任何和所有示例或示例性語言(例如"諸如")的使用僅僅意圖更好地舉例說明本公開,而不對(duì)本公開的范圍施加限制,除非另外要求保護(hù)。不應(yīng)將本說明書中的語言理解為指示對(duì)于本公開的實(shí)施而言必不可少的任何未要求保護(hù)要素。
雖然本發(fā)明的前文編寫描述使得普通技術(shù)人員能夠完成和使用目前被認(rèn)為是其最佳方式的內(nèi)容,但普通技術(shù)人員將理解并領(lǐng)會(huì)到本文中的特定實(shí)施例、方法以及示例的變體、組合以及等價(jià)物的存在。因此本公開不應(yīng)受到上述實(shí)施例、方法以及示例的限制,而是受到在本公開的精神和范圍內(nèi)的所有實(shí)施例和方法的限制。
在本文中參考的所有文獻(xiàn)被通過引用結(jié)合到本文中。