本申請要求于2016年2月2日提交的第62/290,295號美國專利申請和2016年4月19日提交的第15/133,085號美國專利申請的權(quán)益和優(yōu)先權(quán),所述美國專利申請的公開通過引用完整地包含于此。
本公開總體涉及存儲裝置,更具體地說,涉及一種可經(jīng)由裝置控制接口轉(zhuǎn)換為不同裝置的多態(tài)存儲裝置。
背景技術(shù):
與傳統(tǒng)的數(shù)據(jù)存儲裝置(諸如,硬盤驅(qū)動器)相比,固態(tài)硬盤(ssd)提供更多的復(fù)雜性和偽通用可編程性。例如,基于閃存的ssd越來越多地封裝更強大的cpu和更高容量的內(nèi)存和存儲器,并使那些資源對用戶應(yīng)用可用。此外,對于數(shù)據(jù)密集型應(yīng)用,普遍認為將代碼移動到數(shù)據(jù)要遠遠有效于將數(shù)據(jù)移動到代碼。因此,有效的數(shù)據(jù)處理系統(tǒng)通過使用諸如早期的選擇下推和早期的聚合(或預(yù)聚合)的技術(shù)來試圖將代碼下推到盡可能遠的查詢-處理管道。相似地,并行的或分布式的數(shù)據(jù)處理系統(tǒng)可運行盡可能多的與保持數(shù)據(jù)的節(jié)點接近的查詢。
傳統(tǒng)上,代碼卸載技術(shù)已經(jīng)通過以專門的(ad-hoc)方式調(diào)整ssd的固件和主機的操作系統(tǒng)(os)而被實現(xiàn)。盡管永久存儲、易失性存儲和處理之間的邊界正日益變得模糊,但是主機os、庫、固定協(xié)議和存儲裝置抽象層之間的現(xiàn)有功能的分離通常引入冗余的實現(xiàn)并可能成為瓶頸或浪費的資源消耗者。
非sql(nosql)數(shù)據(jù)庫(db)(例如,鍵值存儲、文檔存儲、圖形數(shù)據(jù)庫、對象數(shù)據(jù)庫等)在現(xiàn)代計算機系統(tǒng)中被廣泛使用。與關(guān)系db相比,nosqldb簡單、靈活和輕量,并可提供優(yōu)秀的可擴展性和具有一定工作負荷的大的性能增益??焖僖苿拥皆朴嬎愫途哂写髷?shù)據(jù)的大系統(tǒng)有助于nosqldb的日益流行。
技術(shù)實現(xiàn)要素:
根據(jù)一個實施例,一種存儲裝置包括:應(yīng)用容器,包含一個或多個應(yīng)用;多態(tài)存儲裝置(psd)內(nèi)核,被配置為從主機接收包括數(shù)據(jù)、消息和命令的多個包,并基于包括在所述多個包中的命令將所述多個包路由到應(yīng)用容器中的應(yīng)用;psd接口層,被配置為提供一個或多個應(yīng)用與psd內(nèi)核之間的接口。
根據(jù)另一實施例,一種存儲系統(tǒng)包括:主機;多態(tài)存儲裝置(psd);psd接口,用于提供主機與psd之間的接口。psd包括:應(yīng)用容器,包含一個或多個應(yīng)用;psd內(nèi)核,被配置為從主機接收包括數(shù)據(jù)、消息和命令的多個包,并基于包括在所述多個包中的命令將所述多個包路由到應(yīng)用容器中的應(yīng)用;psd接口層,被配置為提供一個或多個應(yīng)用與psd內(nèi)核之間的接口。
根據(jù)另一實施例,一種操作存儲裝置的方法包括:將一個或多個應(yīng)用存儲在存儲裝置的應(yīng)用容器中;從主機接收包括數(shù)據(jù)、消息和命令的多個包;基于包括在所述多個包中的命令將所述多個包路由到應(yīng)用容器中的應(yīng)用;運行存儲裝置上的psd內(nèi)核以根據(jù)經(jīng)由psd接口從主機接收的控制命令來配置存儲裝置的一個或多個硬件;操作由psd內(nèi)核配置的存儲裝置。
附圖說明
作為本說明書的一部分而被包括的附圖示出目前優(yōu)選的實施例,并與上面給出的一般描述和下面給出的優(yōu)選的實施例的詳細描述一起用于解釋和教導(dǎo)在此描述的原理。
圖1示出傳統(tǒng)的nosql數(shù)據(jù)庫(db)系統(tǒng);
圖2示出針對另一傳統(tǒng)的nosqldb系統(tǒng)的系統(tǒng)架構(gòu)的示例;
圖3示出示例存儲裝置的存儲器控制器的層;
圖4示出根據(jù)一個實施例的包括多態(tài)存儲裝置的示例存儲系統(tǒng)的框圖;
圖5示出根據(jù)一個實施例的示例多態(tài)存儲裝置的固件堆棧;
圖6a示出根據(jù)一個實施例的以集中方式遷移和復(fù)制應(yīng)用的示例;
圖6b示出根據(jù)一個實施例以分散方式遷移和復(fù)制應(yīng)用的另一示例。
附圖不必按比例繪制,并且貫穿附圖,相似的結(jié)構(gòu)或功能的元件出于說明的目的通常由相同的參考標號表示。附圖僅意在使在此描述的各種實施例的描述容易。附圖不描述在此公開的教導(dǎo)的每一方面,也不限制權(quán)利要求的范圍。
具體實施方式
在此公開的特征和教導(dǎo)中的每個可單獨使用,或連同其他特征和教導(dǎo)來使用,以提供可經(jīng)由裝置控制接口轉(zhuǎn)換為不同裝置的多態(tài)存儲裝置。利用多個這些額外的特征和教導(dǎo)的典型的示例參照附圖被更詳細地單獨或一起描述。本具體實施方式僅意在教導(dǎo)本領(lǐng)域技術(shù)人員用于實現(xiàn)本教導(dǎo)的多個方面的進一步細節(jié),并不意在限制權(quán)利要求的范圍。因此,上面公開的特征的組合在具體實施方式中可不必在最廣泛的意義上實現(xiàn)教導(dǎo),而只是被教導(dǎo)以描述本教導(dǎo)的特定典型的示例。
在下面的描述中,僅出于解釋的目的,闡明具體的術(shù)語以提供本公開的徹底的理解。然而,本領(lǐng)域技術(shù)人員將清楚的是,不需要這些具體的細節(jié)來實現(xiàn)本公開的教導(dǎo)。
在此詳細描述的一些部分按照以計算機存儲器中的數(shù)據(jù)比特的操作的算法和符號表示被呈現(xiàn)。這些算法的描述和表示由數(shù)據(jù)處理領(lǐng)域的技術(shù)人員使用以有效地將他們的工作的內(nèi)容傳達給本領(lǐng)域其他技術(shù)人員。算法在這里通常被構(gòu)思為導(dǎo)致期望的結(jié)果的步驟的自相一致的序列。步驟是需要物理量的物理操縱的步驟。通常(雖然不是必要地),這些量采取能夠被存儲、轉(zhuǎn)移、組合、比較和另外操縱的電的或磁的信號的形式。已經(jīng)證明,有時方便(主要出于共同使用的原因)將這些信號稱作比特、值、元素、符號、字符、項、數(shù)字等。
然而,應(yīng)該被牢記的是,所有的這些和相似的術(shù)語將與適當?shù)奈锢砹肯嚓P(guān),并僅僅是應(yīng)用于這些量的方便的標簽。除非另外具體地闡明,否則從下面的討論將清楚的理解,貫穿描述,利用術(shù)語(諸如,“處理”、“運算”、“計算”、“確定”、“顯示”等)的討論表示計算機系統(tǒng)或類似的電子計算裝置的動作和處理,計算機系統(tǒng)或類似的電子計算裝置操縱在計算機系統(tǒng)的寄存器和存儲器中表示為物理(電子)量的數(shù)據(jù)并將所述數(shù)據(jù)變換為在計算機系統(tǒng)的存儲器或寄存器或其他這樣的信息存儲器、傳輸或顯示裝置中類似地表示為物理量的其他數(shù)據(jù)。
在此提出的算法不是固有地與任何特定的計算機或其他設(shè)備相關(guān)。各種通用的系統(tǒng)、計算機服務(wù)器或個人計算機可根據(jù)在此的教導(dǎo)與程序一起使用,或者可證明便于構(gòu)建更為專用的用于執(zhí)行要求的方法步驟的設(shè)備。針對各種這些系統(tǒng)的要求的結(jié)構(gòu)將從下面的描述而清楚。將理解,各種編程語言可用于實現(xiàn)在此描述的公開的教導(dǎo)。
此外,為了提供本教導(dǎo)的額外有用的實施例,典型的示例和從屬權(quán)利要求的各種特征可以以沒有具體和明確列舉的方式被組合。還應(yīng)清楚說明的是,所有的數(shù)值范圍或?qū)嶓w的組的指示出于原始的公開的目的以及出于限制要求保護的主題的目的公開每一可能的中間值或中間實體。還應(yīng)清楚說明的是,在附圖中示出的組件的尺寸和形狀被設(shè)計為幫助理解本教導(dǎo)如何被實現(xiàn),但不意在限制在示例中示出的尺寸和形狀。
圖1示出傳統(tǒng)的nosql數(shù)據(jù)庫(db)系統(tǒng)。nosqldb系統(tǒng)100包括重疊的組件和冗余的映射。nosqldb系統(tǒng)100包括:通過主機至ssd接口190進行通信的主機110和存儲裝置150。主機110包括:具有用于鍵-lba(邏輯塊地址)轉(zhuǎn)換(keytolbatranslation)的映射表121的nosqldb120、操作系統(tǒng)130和ssd接口140。主機至ssd接口190的示例包括(但不限于):快速外圍組件互聯(lián)(pcie)、串行scsi(sas)、以太網(wǎng)和串行at附件(sata)。存儲裝置150包括:存儲器控制器160和非易失性存儲器170。存儲器控制器160包括:主機接口161、lba-pba映射表162、糾錯碼(ecc)存儲器163和用于與非易失性存儲器170接口連接的閃存接口164。主機110和存儲裝置150通過主機至ssd接口190進行命令、lba和數(shù)據(jù)通信。
存在包括針對鍵-lba映射的第一映射層和針對lba-pba映射的第二映射層的兩個冗余的映射層。傳統(tǒng)上,主機110和存儲裝置150基于用于指定存儲裝置150中的存儲位置的地址的lba來互相通信。為了兼容性,存儲裝置150使用lba工作,存儲器控制器160的閃存轉(zhuǎn)換層(ftl)維持lba-pba轉(zhuǎn)換。ftl使用映射表162將邏輯塊地址(lba)轉(zhuǎn)換為物理塊地址(pba),并訪問由映射表162指示的非易失性存儲器170的物理塊,以對非易失性存儲器170的物理塊執(zhí)行請求的操作(例如,讀、寫、讀/修改/寫(rmw)和刪除)。
如果在主機與存儲裝置之間做出適當?shù)陌才牛瑒t可消除主機110中的鍵-lba映射。圖2示出針對另一傳統(tǒng)的nosqldb系統(tǒng)的系統(tǒng)架構(gòu)的示例。nosqldb系統(tǒng)200可包括:通過主機至ssd接口290進行通信的主機210和存儲裝置250。主機210可包括:nosql用戶應(yīng)用程序接口(api)220、操作系統(tǒng)230和ssd接口240。與圖1的主機至ssd接口190相似,主機至ssd接口290可為pcie、sas、以太網(wǎng)、sata等中的任何一個。存儲裝置250可包括:用于與與非易失性存儲器270接口連接的存儲器控制器260。存儲器控制器260可包括:主機接口261、集成nosqldb的ftl262、糾錯碼(ecc)存儲器263和閃存接口264。集成nosqldb的ftl262可消除在主機210中的鍵-lba映射,因此nosqldb系統(tǒng)200與圖1的需要兩個冗余的映射層的nosqldb系統(tǒng)100相比可具有更好的聚合性能。
主機210和存儲裝置250可通過主機至ssd接口290進行查詢命令、鍵和數(shù)據(jù)通信。非易失性存儲器270可為包括(但不限于)閃存存儲器、相變ram(pram)、自旋-轉(zhuǎn)移矩磁性隨機存取存儲器(stt-mram)和電阻式ram(reram)的各種類型的非易失性存儲器。
定義存儲裝置的行為的現(xiàn)有的多態(tài)存儲裝置的固件可經(jīng)由固件更新被重新配置?,F(xiàn)有的多態(tài)存儲裝置可通過固件更新被轉(zhuǎn)換為與原始的配置不同類型的裝置。例如,現(xiàn)有的多態(tài)存儲器最初被配置為通用存儲裝置。它可通過固件更新被轉(zhuǎn)換為專用存儲裝置(諸如,存儲內(nèi)計算裝置、鍵值存儲裝置、hadoop分布式文件系統(tǒng)(hdfs)裝置、對象存儲裝置等)。
圖3示出示例存儲裝置的存儲器控制器的層。存儲器控制器360具有四層,即:主機接口層(hil)310、閃存轉(zhuǎn)換層(ftl)320、虛擬閃存層(vfl)330和閃存接口層(fil)340。這四層可在可于存儲裝置的一個或多個嵌入式處理器上運行的存儲裝置的固件中被實現(xiàn)。主機接口層310可實現(xiàn)總線接口協(xié)議(諸如,sata、sas或快速pci(pcie))。閃存轉(zhuǎn)換層320負責將主機os中的邏輯塊地址(lba)映射到存儲裝置的非易失性存儲器中的物理塊地址(pba)。虛擬閃存層330和閃存接口層340負責存儲裝置的非易失性存儲器與dram存儲器之間的數(shù)據(jù)轉(zhuǎn)移。存儲裝置的固件可提供包括ecc邏輯和直接存儲器存取(dma)的其他功能。為了提高非易失性存儲器的i/o性能,存儲器控制器360可使用芯片級和/或通道級的交織技術(shù)。
本公開提供可經(jīng)由裝置控制接口從一個裝置類型變換為另一裝置類型的多態(tài)存儲裝置。圖4示出根據(jù)一個實施例的包括多態(tài)存儲裝置的示例存儲系統(tǒng)的框圖。存儲系統(tǒng)400包括可經(jīng)由多態(tài)存儲裝置(psd)接口490通信的主機410和psd450。主機410可包括:用于存儲可用于重新配置psd450的多個裝置驅(qū)動程序411a至411c的裝置驅(qū)動程序池413。psd450可包括:psd內(nèi)核455、用于與應(yīng)用451接口連接的psd接口層(pil)452、包括多個cpu461a至461d的可重新配置和可擴展的硬件、非易失性存儲器470和dram480。psd450還可包括用于提供允許應(yīng)用451與可重新配置和可擴展的硬件通信的裝置驅(qū)動程序接口的硬件抽象層456。盡管本示例示出psd450包括可重新配置和可擴展的硬件,但是應(yīng)當理解,在不脫離本公開的范圍的情況下,psd450可包括非可重新配置和非可擴展的硬件??芍匦屡渲煤涂蓴U展的硬件可提供psd450的靈活性和可編程性。
根據(jù)一個實施例,主機側(cè)接口415可包括:第一用戶接口420、第二用戶接口421和用于psd450的psd控制接口422。例如,第一用戶接口420可提供到文件系統(tǒng)(fs)和/或數(shù)據(jù)庫(db)等的接口。文件系統(tǒng)和數(shù)據(jù)庫所需要的輸入/輸出(i/o)控制命令(例如,裝置控制命令和元數(shù)據(jù))可經(jīng)由第一用戶接口420被發(fā)送到主機410并且經(jīng)由第一用戶接口420從主機410被發(fā)送。例如,第二用戶接口421可提供到鍵值和/或?qū)ο蟠鎯Φ慕涌?,并提供針對鍵值和/或?qū)ο蟠鎯Φ牟樵?31(例如,放置、獲取)。psd控制接口422可經(jīng)由psd接口490將命令和消息432提供給主機410和psd450。通過使用主機410的裝置驅(qū)動程序池413中的多個裝置驅(qū)動程序411a至411c之一,psd450可根據(jù)從psd控制接口422接收的命令被配置(或重新配置)。那些經(jīng)由psd控制接口422的命令可控制在psd上運行的應(yīng)用451a至451d。在此,在psd上運行的應(yīng)用451a至451d還被稱為psd感知應(yīng)用,這是因為它們可使用經(jīng)由psd控制接口422接收的命令來配置psd450,并將psd450從第一類型的存儲裝置變換為第二類型的存儲裝置。psd控制接口422還可提供對存儲在主機側(cè)裝置驅(qū)動程序池413中的裝置驅(qū)動程序和它們的裝置驅(qū)動程序管理器的控制。
根據(jù)一個實施例,psd接口490可仿真用于向后兼容性的主機側(cè)用戶接口420和421或者用于管理和控制在psd450上運行的psd感知應(yīng)用451a至451d的psd控制接口422。供應(yīng)商特定的命令可經(jīng)由psd接口490被提供給psd感知應(yīng)用451a至451d。這樣的供應(yīng)商特定的命令的示例包括(但不限于):“創(chuàng)建”、“開始/停止”、“暫停/繼續(xù)”等。psd450可與主機410通信,并可在沒有固件更新的情況下添加、移除和改變功能或應(yīng)用。
根據(jù)一個實施例,在主機410和psd450之間的psd接口490可在psd450內(nèi)提供卸載或集成的功能。例如,psd感知應(yīng)用451a至451d或主機側(cè)應(yīng)用可與psd450的用戶接口而不是與存儲系統(tǒng)接口交互,其中,存儲系統(tǒng)接口為通常由主機410的主機os和裝置驅(qū)動程序411a至411c提供的接口。傳統(tǒng)上,在主機410上運行的主機側(cè)應(yīng)用在主機410上使用應(yīng)用邏輯來實現(xiàn)它的功能。根據(jù)一個實施例,在主機410上運行的主機側(cè)應(yīng)用的應(yīng)用邏輯可被分發(fā)到psd450。例如,psd450的集成的鍵值ftl可在主機側(cè)應(yīng)用虛擬地移除所有邏輯,并僅有針對鍵值nosql操作的用戶api被提供給psd450的psd內(nèi)核455。其余的操作可在psd450內(nèi)被處理,并且psd感知應(yīng)用451a至451d可使用經(jīng)由psd接口490接收的命令和消息來運行鍵值nosql操作。
因為psd450可同時處理多于一個應(yīng)用(例如,451a至451d),所以對應(yīng)的主機側(cè)裝置驅(qū)動程序411可存在于裝置驅(qū)動程序池413中。如果psd450僅具有一個裝置驅(qū)動程序的活動實例,則裝置驅(qū)動程序池413以與傳統(tǒng)存儲系統(tǒng)相似的方式僅使用一個裝置驅(qū)動程序411來工作。如在圖4中所示,psd450可使用控制psd450內(nèi)的應(yīng)用451的實例的psd控制接口422。從這個意義上說,因為psd控制接口422提供應(yīng)用451的控制機制而不是直接與應(yīng)用451進行交互,所以psd控制接口422的提供類似于虛擬機(vm)管理器或管理程序。
多個應(yīng)用451可在psd450上同時運行。然而,主機410與psd450之間的物理通信通道的數(shù)量被限制為物理裝置的數(shù)量。為此,每一應(yīng)用451與psd450內(nèi)的應(yīng)用容器之間的通信可在psd450內(nèi)被復(fù)用和解復(fù)用。psd接口490可為包括(但不限于)sata、sas、nvme、以太網(wǎng)、光纖通道(fc)、無限帶寬(ib)、遠程直接存儲器訪問(rdma)等的任何物理接口。主機側(cè)裝置驅(qū)動程序池413還可滿足復(fù)用的需要以將所有消息/命令/數(shù)據(jù)嵌入/封裝入提供物理接口的現(xiàn)有的通信協(xié)議。在一些實施例中,psd的自己的協(xié)議可用于減少將數(shù)據(jù)過載到現(xiàn)有協(xié)議上的開銷。
圖5示出根據(jù)一個實施例的示例多態(tài)存儲裝置的固件堆棧。psd固件堆棧500包括:閃存控制器層535、psd內(nèi)核555、psd接口層552和應(yīng)用容器510。應(yīng)用容器510可包括一個或多個應(yīng)用511a、511b和511c。在本示例中,應(yīng)用511c表示在psd上運行的當前租戶,以將其自身與其他應(yīng)用511a和511b相區(qū)別。在下文中,應(yīng)用511a、511b和511c可共同被稱為應(yīng)用511。應(yīng)用511可包括:主機協(xié)議和消息處理器513、應(yīng)用特定的地址轉(zhuǎn)換邏輯(atl)514、應(yīng)用特定的損耗均衡邏輯(wearlevelinglogic,wl)515和應(yīng)用特定的垃圾回收邏輯(gc)516。
例如,應(yīng)用511可為鍵值緩存應(yīng)用、hdfs應(yīng)用和mongodb應(yīng)用之一。針對鍵值緩存應(yīng)用,atl514可為集成索引的ftl,并且gc516可通過利用最近最少使用(lru)列表而更有效。針對hdfs應(yīng)用,atl514可從它的存儲器占用的角度(例如,它的間隔尺寸為64mb)被配置為更小。因此,它的應(yīng)用特定的atl514是必須的。另外,針對一些hdfs應(yīng)用,如果gc516和wl515包含很多(即便不是全部)冷數(shù)據(jù)(即,一旦創(chuàng)建就從未更新的數(shù)據(jù)),則gc516和wl515可被最小化(或優(yōu)化)。針對mongodb應(yīng)用,一些主機操作可被卸載到atl514和gc516。每一應(yīng)用511可具有不同的atl514、gc516和wl515,以適合于應(yīng)用511的特性和需求。
閃存控制器層535包括:虛擬閃存層(vfl)530和閃存接口層(fil)540。閃存控制器層535可提供硬件支持,以便為psd提供增加的效率。根據(jù)在psd上運行的應(yīng)用511,閃存控制器層535可優(yōu)化可重新配置和可擴展的硬件的使用,以將有效的接口提供給閃存存儲器。閃存控制器層535可通過固件更新而被更新,以支持應(yīng)用511的功能。
從主機接收的包(例如,數(shù)據(jù)、消息和命令)被首先發(fā)送到psd內(nèi)核555。psd內(nèi)核555的上下文(ctx)管理器556和消息路由器557負責路由從主機接收的包。ctx管理器556知道psd上的當前租戶應(yīng)用及其特性。ctx管理器556可包括用于跟蹤當前運行的應(yīng)用和其他現(xiàn)有的應(yīng)用二者的應(yīng)用id的表以及相關(guān)的atl514、wl515和gc516的配置。ctx管理器556還負責控制當前租戶應(yīng)用(諸如,開始/停止、繼續(xù)和暫停等)的執(zhí)行和活躍度(例如,上下文控制)。psd內(nèi)核555可解封裝路由的包并據(jù)此處理路由的包。例如,如果用于“創(chuàng)建”應(yīng)用511的命令被接收,則ctx管理器556可使用主機提供的數(shù)據(jù)創(chuàng)建應(yīng)用511的應(yīng)用上下文。主機提供的數(shù)據(jù)可包括:atl514、wl515、gc516的配置概要文件或邏輯,以及在psd上可執(zhí)行的應(yīng)用511的二進制代碼和包括psd庫的元數(shù)據(jù),從而允許應(yīng)用511與psd內(nèi)核555通信。
如果從主機接收的消息與在psd上注冊的應(yīng)用511有關(guān)并且注冊的應(yīng)用511的上下文是活躍的,則psd內(nèi)核555可將消息以及對應(yīng)的數(shù)據(jù)和/或命令路由到注冊的應(yīng)用511。如果注冊應(yīng)用511的上下文不是活躍的,則psd內(nèi)核555將錯誤消息返回到主機。如果未注冊的或未識別的消息從主機被接收,則psd內(nèi)核555可將其他錯誤消息發(fā)送到主機。
ctx管理器556負責控制應(yīng)用容器510。ctx管理器556可創(chuàng)建應(yīng)用511的應(yīng)用上下文,并將psd的硬件資源分發(fā)到atl514、wl515和gc516并管理psd的硬件資源。ctx管理器556可以以完全虛擬化的方式(類似于虛擬機(vm))或者以半虛擬化的方式被實現(xiàn)。在一個實施例中,應(yīng)用511可在通用存儲裝置上作為一般的固件運行而無需實現(xiàn)psd內(nèi)核555。在另一實施例中,應(yīng)用511可作為了解由psd提供的功能而專門為psd設(shè)計的新應(yīng)用來運行。
一些應(yīng)用511可需要應(yīng)用特定的損耗均衡(wl)和/或垃圾回收(gc)邏輯。這些邏輯可能對psd的性能是關(guān)鍵的。psd內(nèi)核555提供包括應(yīng)用特定的wl/gc接口的psd庫和通用api以與psd內(nèi)核555接口連接。在后一種情況下,應(yīng)用511可注冊那些提供的庫而不是實現(xiàn)它們自己的wl/gc邏輯515和516。在前一種情況下,psd內(nèi)核555通過將所有的權(quán)限提供給psd固件堆棧500的層中的應(yīng)用511,而不做與wl/gc有關(guān)的任何事。
應(yīng)用511可經(jīng)由psd接口層552與下層的psd內(nèi)核555通信。psd接口層552可提供通信api和通過psd接口層552傳送到psd的包(例如,消息、命令和數(shù)據(jù))。
應(yīng)用511可在單個psd上以應(yīng)用上下文的形式共存。應(yīng)用容器510可保持可為激活或空閑的應(yīng)用511的應(yīng)用上下文。應(yīng)用511可包括:應(yīng)用邏輯、主機協(xié)議和消息處理器層513、應(yīng)用特定的地址轉(zhuǎn)換邏輯(atl)514、損耗平衡(wl)邏輯515、垃圾回收(gc)邏輯516等。在一些實施例中,wl邏輯515和gc邏輯516是可選的。例如,鍵值存儲應(yīng)用可具有針對核心邏輯的它們的鍵值結(jié)構(gòu)和算法。主機協(xié)議和消息處理器層513可與核心邏輯的功能的包裝器一樣簡單。在鍵值存儲應(yīng)用的情況下,應(yīng)用特定的atl514可被合并為集成的ftl(例如,圖2的集成nosqldb的ftl262)。
盡管在現(xiàn)代ssd上沒有額外的邏輯從硬件的角度被必須需要,但是下面的因素可加速psd的執(zhí)行??杉铀賞sd的執(zhí)行的因素的示例包括(但不限于):多個轉(zhuǎn)換后備緩沖器(tlb)或更大的tlb、具有應(yīng)用容器id的緩存、具有多個體以減少沖突的存儲器和/或多個按照雙列直插存儲器模塊(dimm)的寄存器、針對直接存儲器存取(dma)的多個靈活的支持、更多數(shù)量的尚未解決的dma、針對從嵌入的處理器虛擬化的支持、應(yīng)用上下文感知的閃存控制器、了解多態(tài)的細粒度功率控制、硬件輔助消息路由等。在另一示例中,psd可包括現(xiàn)場可編程門陣列(fpga)以提供加速的應(yīng)用特定的功能。應(yīng)用(諸如,機器學(xué)習內(nèi)核)、在大數(shù)據(jù)處理中的科學(xué)計算(諸如,神經(jīng)網(wǎng)絡(luò)、矩陣運算、快速傅里葉變換(fft)、模式匹配等)可使用fpga而不是在通用裝置的cpu上運行代碼來加速。
根據(jù)一個實施例,存儲系統(tǒng)400可針對單個psd450或多個psd提供多個實例(應(yīng)用)。此外,存儲系統(tǒng)400可支持在多個多態(tài)存儲裝置450之間的遷移和復(fù)制。
圖6a和圖6b示出在多個psd之間遷移和復(fù)制應(yīng)用的示例。多個多態(tài)存儲裝置650a至650c可支持以集中方式或分散方式中的任一方式的應(yīng)用遷移和復(fù)制。
圖6a示出根據(jù)一個實施例的以集中方式遷移和復(fù)制應(yīng)用的示例。psd控制接口622可提供命令和消息432以在多個psd650a至650c之間執(zhí)行遷移和復(fù)制。在集中的實現(xiàn)中,遷移和復(fù)制操作可通過psd650a至650c的ctx管理器(例如,圖5的ctx管理器556)和psd控制接口622被實現(xiàn)。psd控制接口653可派生用于執(zhí)行集中的遷移和復(fù)制操作的接口653。
圖6b示出根據(jù)一個實施例的以分散方式遷移和復(fù)制應(yīng)用的另一示例。在分散的實現(xiàn)中,每一多態(tài)存儲裝置能夠基于相鄰裝置之間的點對點通信操作應(yīng)用遷移/復(fù)制。
根據(jù)一個實施例,一種存儲裝置包括:應(yīng)用容器,包含一個或多個應(yīng)用;多態(tài)存儲裝置(psd)內(nèi)核,被配置為從主機接收包括數(shù)據(jù)、消息和命令的多個包,并基于包括在所述多個包中的命令將所述多個包路由到應(yīng)用容器中的應(yīng)用;psd接口層,被配置為提供一個或多個應(yīng)用與psd內(nèi)核之間的接口。
存儲裝置還可包括:根據(jù)從主機接收的控制命令可重新配置的一個或多個硬件??芍匦屡渲玫挠布砂ǎ阂粋€或多個處理器、非易失性存儲器和dram。
包括psd控制接口和應(yīng)用接口的主機側(cè)接口可被提供給主機。
存儲裝置可根據(jù)經(jīng)由psd控制接口接收的控制命令,從第一類型的存儲裝置轉(zhuǎn)換為第二類型的存儲裝置。
第一類型的存儲裝置可為存儲內(nèi)計算裝置、鍵值存儲裝置、hdfs裝置和對象存儲裝置中的一個裝置。第二類型的存儲裝置可為存儲內(nèi)計算裝置、鍵值存儲裝置、hdfs裝置和對象存儲裝置中的另一裝置。
psd控制接口可被配置為將控制命令和消息提供給存儲裝置。
應(yīng)用接口可包括:仿真的主機側(cè)接口和psd感知應(yīng)用接口,仿真的主機側(cè)接口被配置為提供用于向后兼容性的仿真的主機側(cè)接口。
一個或多個供應(yīng)商命令可經(jīng)由psd控制接口被提供。
一個或多個供應(yīng)商命令可包括:創(chuàng)建命令、開始命令、停止命令、暫停命令和繼續(xù)命令。
一個或多個供應(yīng)商命令可包括:用于經(jīng)由psd控制接口將在存儲裝置上運行的應(yīng)用遷移或復(fù)制到另一存儲裝置的遷移命令或復(fù)制命令。
應(yīng)用可以以集中方式或分散方式被遷移或復(fù)制。
根據(jù)另一實施例,一種存儲系統(tǒng)包括:主機;多態(tài)存儲裝置(psd);psd接口,用于提供主機與psd之間的接口。psd包括:應(yīng)用容器,包含一個或多個應(yīng)用;psd內(nèi)核,被配置為從主機接收包括數(shù)據(jù)、消息和命令的多個包,并基于包括在所述多個包中的命令將所述多個包路由到應(yīng)用容器中的應(yīng)用;psd接口層,被配置為提供一個或多個應(yīng)用與psd內(nèi)核之間的接口。
存儲系統(tǒng)還可包括:根據(jù)從主機接收的控制命令可重新配置的一個或多個硬件。psd的可重新配置的硬件可包括:一個或多個處理器、非易失性存儲器和dram。
包括psd控制接口和應(yīng)用接口的主機側(cè)接口可被提供給主機。
存儲裝置可根據(jù)經(jīng)由psd控制接口接收的控制命令,從第一類型的存儲裝置轉(zhuǎn)換為第二類型的存儲裝置。
psd控制接口可被配置為將控制命令和消息提供給psd。
根據(jù)另一實施例,一種方法包括:將一個或多個應(yīng)用存儲在存儲裝置的應(yīng)用容器中;從主機接收包括數(shù)據(jù)、消息和命令的多個包;基于包括在所述多個包中的命令將所述多個包路由到應(yīng)用容器中的應(yīng)用;在存儲裝置上運行psd內(nèi)核以根據(jù)經(jīng)由psd接口從主機接收的控制命令來配置存儲裝置的一個或多個硬件;操作由psd內(nèi)核配置的存儲裝置。
該方法還可包括:根據(jù)經(jīng)由psd接口從主機接收的另一命令來重新配置一個或多個硬件。所述一個或多個硬件可包括:一個或多個處理器、非易失性存儲器和dram。
該方法還可包括:將主機側(cè)接口提供給主機。主機側(cè)接口可包括psd控制接口和應(yīng)用接口。
該方法還可包括:根據(jù)經(jīng)由psd控制接口接收的控制命令,將psd從第一類型的存儲裝置轉(zhuǎn)換為第二類型的存儲裝置。
上面的示例實施例在上文中已被描述,以示出實現(xiàn)可經(jīng)由裝置控制接口轉(zhuǎn)換為不同裝置的多態(tài)存儲裝置的各種實施例。從公開的示例實施例的各種修改和變更將被本領(lǐng)域普通技術(shù)人員想到。意圖落入本發(fā)明的范圍內(nèi)的主題在權(quán)利要求中被闡明。