欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于應用優(yōu)化的數(shù)據(jù)存儲的方法和裝置與流程

文檔序號:11261796閱讀:205來源:國知局
基于應用優(yōu)化的數(shù)據(jù)存儲的方法和裝置與流程

本公開的實施例涉及存儲系統(tǒng),并且更具體地涉及對應用數(shù)據(jù)的存儲進行優(yōu)化的方法和裝置。



背景技術(shù):

目前第三代存儲平臺(p3)應用正引起人們的濃厚興趣,其中包括例如云計算、大數(shù)據(jù)、移動和社交等。這些第三代平臺應用中通常需要非關(guān)系型數(shù)據(jù)庫(nosql)作為骨干應用。預計一直到2020年,nosql將以26%的符合年增長率(cagr)增長。鍵值數(shù)據(jù)庫(k-v)是nosql的一種,通常用于高速緩存,元數(shù)據(jù)等,其具有速度快,非內(nèi)存集約式的特點。

非關(guān)系型數(shù)據(jù)庫(例如k-v)主要由互聯(lián)網(wǎng)推動興起,優(yōu)勢在于在靈活、無預定義模式、能夠水平擴展、具有最終一致性和多副本等特性,并且速度快。然而具有內(nèi)存為中心的架構(gòu)的nosql應用通常運行在內(nèi)存中。這導致如下缺陷:

首先,其擴展性目前受限于內(nèi)存的容量,并且成本高;

另外,由于內(nèi)存在停機和重啟預熱時會有時延或者數(shù)據(jù)丟失,這導致該應用的性能波動。

因此,目前存在將該應用運行于非易失性存儲器,例如閃存中的嘗試。例如,有些廠商正尋求通過對應用做一些改變來使其適用于在閃存中運行。但是,該技術(shù)目前還不成熟,并且性能未知。另外,對應用做出過大的改變是不期望的。

目前市面上有較多的閃存產(chǎn)品,它們通常以硬件盒子的形式出現(xiàn),并具有各種接口和功能。但是,目前還不存在非易失性存儲器(例如閃存)和應用的高效的集合方式。

在本公開的實施例中,提供了方法和裝置,以解決以上問題中的至少一些問題。



技術(shù)實現(xiàn)要素:

本公開的實施例提出了用于存儲系統(tǒng)中的數(shù)據(jù)存儲的方法和裝置。下面給出了對各實施例的簡要概述,以提供對各種實施例的一些方面的基本理解。該概述不旨在標識關(guān)鍵元素的要點或描述各種實施例的范圍。其唯一目的在于以簡化形式呈現(xiàn)一些概念,作為對后述更具體描述的前序。

本公開的第一方面提供了一種用于數(shù)據(jù)存儲的方法,該方法包括:從應用獲取對應用數(shù)據(jù)的描述信息;基于所述描述信息,執(zhí)行存儲優(yōu)化;以及在將所述應用數(shù)據(jù)發(fā)送到后端存儲設備之前,基于所述描述信息,提前執(zhí)行要由所述后端存儲設備實施的至少部分存儲功能。

在一個實施例中,描述信息可以包括以下中的至少一項:所述應用數(shù)據(jù)是否熱數(shù)據(jù)或者冷數(shù)據(jù);所述應用數(shù)據(jù)是否元數(shù)據(jù)、所述應用數(shù)據(jù)是否可壓縮或者可刪除重復、所述應用數(shù)據(jù)是否數(shù)據(jù)快照、所述應用數(shù)據(jù)是否到期、以及所述應用數(shù)據(jù)是否垃圾數(shù)據(jù)。

在另一實施例中,從應用獲取對應用數(shù)據(jù)的描述信息可以包括:通過查詢所述應用的應用程序接口api,和/或通過接收來自所述應用的輸入輸出請求,來獲取所述描述信息。

在又一實施例中,執(zhí)行存儲優(yōu)化可以包括執(zhí)行以下中的至少一項:寫合并、預讀、非均衡存儲器訪問numa、通過就地執(zhí)行xip或者零拷貝來減少內(nèi)存拷貝、優(yōu)先級排隊、以及讀或者寫高速緩存。

在一個實施例中,要由所述后端存儲設備實施的至少部分存儲功能可以包括以下中的至少一項:使用安全散列算法(sha)獲取所述應用數(shù)據(jù)的摘要;執(zhí)行重復刪除;對所述應用數(shù)據(jù)進行壓縮;對所述應用數(shù)據(jù)進行分片,確定要將所述應用數(shù)據(jù)發(fā)送到的目標存儲設備;以及通過遠程直接數(shù)據(jù)存取(rdma)將所述應用數(shù)據(jù)發(fā) 送到所述目標存儲設備。

在另一實施例中,該方法可以進一步包括:在提前執(zhí)行至少一些要由所述后端存儲設備實施的存儲功能后,將所述應用數(shù)據(jù)發(fā)送到所述后端存儲設備。在又一實施例中,將所述應用數(shù)據(jù)發(fā)送到所述后端存儲設備包括通過網(wǎng)絡將所述應用數(shù)據(jù)發(fā)送到所述后端存儲設備。

在一些實施例中,后端存儲設備可以是為非易失性存儲設備。

作為示例,應用可以包括以下中的至少一項:關(guān)系型數(shù)據(jù)庫sqldb、非關(guān)系型數(shù)據(jù)庫nosql、文件系統(tǒng)fs、以及虛擬機vm。

在一些實施例中,方法可以進一步包括執(zhí)行以下管理操作中的至少一項:監(jiān)測所述數(shù)據(jù)存儲;報告所述數(shù)據(jù)存儲的狀態(tài);以及對所述數(shù)據(jù)存儲進行路徑管理。

在另一些實施例中,該方法在運行所述應用的服務器中實施。

本公開的第二方面提供了一種用于數(shù)據(jù)存儲的裝置,其包括:應用集成單元,被配置為從應用獲取對應用數(shù)據(jù)的描述信息;存儲優(yōu)化單元,被配置為用于基于所述描述信息,執(zhí)行存儲優(yōu)化;以及存儲功能協(xié)調(diào)單元,被配置為在將所述應用數(shù)據(jù)發(fā)送到后端存儲設備之前,基于所述描述信息,提前執(zhí)行要由所述后端存儲設備實施的至少部分存儲功能。

在一個實施例中,該裝置可以進一步包括:發(fā)送單元,被配置為在提前執(zhí)行至少一些要由所述后端存儲設備實施的存儲功能后,將所述應用數(shù)據(jù)發(fā)送到所述后端存儲設備。

在另一實施例中,該裝置可以進一步包括管理單元,被配置為執(zhí)行以下管理操作中的至少一項:監(jiān)測所述數(shù)據(jù)存儲、報告所述數(shù)據(jù)存儲的狀態(tài)、以及對所述數(shù)據(jù)存儲進行路徑管理。

本公開的第三方面提供了一種應用服務器,其包括應用以及根據(jù)本公開的第二方面所述的裝置。

本公開的第四方面提供了一種裝置,該裝置包括至少一個處理器;以及包括計算機程序代碼的至少一個存儲器,其中該至少一個 存儲器和該計算機程序代碼被配置為:與該至少一個處理器一起,促使該裝置執(zhí)行根據(jù)本公開的第一方面的方法。

本公開的第五方面提供了一種包括指令的計算機程序,所述指令在至少一個處理器中執(zhí)行時,促使所述至少一個處理器執(zhí)行根據(jù)本公開的第一方面所述的方法。

根據(jù)本公開的實施例的方法或裝置,能夠提供應用和非易失性存儲設備的高效的結(jié)合方式,使應用和存儲能夠協(xié)調(diào),以改進效率和可擴展性,和/或降低總體擁有成本(tco)。

盡管在附圖中通過示例的方式示出了特定的實施例,然而,應當理解,本文的具體實施例的描述不意在將實施例限制為所公開的具體形式。

附圖說明

從下文的公開內(nèi)容和權(quán)利要求中,本公開的目標、優(yōu)點和其他特征將變得更加明顯。這里僅出于示例的目的,參考附圖來給出優(yōu)選實施例的非限制性描述,在附圖中:

圖1a-1b示出了現(xiàn)有技術(shù)中應用和存儲設備的結(jié)合方式的示意圖;

圖2示出了用于數(shù)據(jù)存儲的方法的示例性流程圖;

圖3a-3c示出了用于數(shù)據(jù)存儲的裝置的示例性結(jié)構(gòu)圖;

圖4示出了在服務器中實施本公開的實施例的方法/裝置的示意圖;以及

圖5示出了一個可以用來實施本公開的實施例的設備的示意性框圖。

具體實施方式

在以下描述中,出于說明的目的而闡述許多細節(jié)。然而,本領域普通技術(shù)人員將認識到可以在不使用這些具體細節(jié)的情況下實現(xiàn)本公開的實施例。因此,本公開不旨在于受限于所示實施例、而是 將被賦予與本文描述的原理和特征一致的最寬的范圍。

應當理解,術(shù)語“第一”、“第二”等僅被用來將一個元素與另一個元素區(qū)分開來。而實際上第一元素也能夠被稱為第二元素,反之亦然。另外還應當理解“包括”,“包含”僅被用來說明所陳述的特征、元素、功能或者部件的存在,然而并不排除存在一個或者多個其他的特征、元素、功能或者部件。

如上該,關(guān)于在閃存中運行p3應用,目前還沒有有效的解決方案。例如,目前應用和閃存結(jié)合的方式是一種松散的耦合,即,閃存和應用基本獨立,如圖1a所示的結(jié)構(gòu)100。在應用服務器110處,應用數(shù)據(jù)要經(jīng)歷多個層(例如,系統(tǒng)高速緩存101、文件系統(tǒng)102和內(nèi)核103等),在每個層經(jīng)歷一些處理,這導致時延較長且效率較低。另外,應用數(shù)據(jù)然后還要經(jīng)過網(wǎng)絡120被傳送到閃存存儲器130,從而數(shù)據(jù)路徑進一步增加,導致額外的時延。另外,在如圖1所示結(jié)構(gòu)中,應用140(例如k-v數(shù)據(jù)庫應用)和在閃存存儲器130(例如emctm全閃存陣列xtremio塊)之間缺乏有效的協(xié)同優(yōu)化。這導致閃存存儲器130并不了解該應用140的應用數(shù)據(jù)的特性,因此也無法針對該特性進行相應的優(yōu)化,從而數(shù)據(jù)存儲效率較低。

作為另一種替代方案,目前也有關(guān)于將應用和閃存進行緊密耦合的嘗試。例如,一種方法是簡單地將應用140(例如k-v數(shù)據(jù)庫應用)集成到閃存130中,并一起封裝成容器,如圖1b所示的結(jié)構(gòu)100’。但是,這種解決方案和松散的耦合實際上并無本質(zhì)區(qū)別,其僅僅省略了通過網(wǎng)絡120進行傳輸?shù)牟糠?;而在封裝后的容器中,應用和存儲依然獨立運行,數(shù)據(jù)依然會經(jīng)歷多個層處理;時延和效率問題依然存在。不僅如此,這種結(jié)構(gòu)還進一步導致其它問題。例如,這種情況下,可能導致關(guān)于內(nèi)存/cpu的資源競爭嚴重,將需要更復雜的管理機制來處理,因此將增加管理開銷。另外,這種結(jié)構(gòu)的管理、維護、擴展開銷較大。例如從支持一個kv擴展到支持另一個kv將均需要大量的摘要和資源投入。

為了解決以上問題中的至少一些問題,本公開的實施例提出了 用于數(shù)據(jù)存儲的更有效的方法和裝置。

盡管出于說明的目的,在本公開的一些實施例中使用非關(guān)系型數(shù)據(jù)庫(例如k-v)應用和閃存存儲器為例來描述本公開的方法或者裝置的原理,但是,如本領域技術(shù)人員能夠理解的,本公開的實施例能夠更加廣泛地應用于存在類似問題的、和/或能夠受益于該原理的其他場景,而不僅僅限于所列舉的示例布置。

本公開的實施例可以體現(xiàn)為智能的客戶端或者庫,用于降低或者簡化應用主機側(cè)的軟件堆棧和開銷。一些實施例能夠卸載或者協(xié)調(diào)存儲任務,使處理更加高效。另一些實施例能夠降低總體擁有成本(tco),提高閃存/非易失性存儲器生命周期。在又一些實施例中,根據(jù)本公開的實施例的客戶機可以和應用一起被封裝成容器,并且可以與存儲器容器一起運行。另外,本公開的實施例對應用邏輯和存儲器側(cè)的改變均較小。

圖2中示出了用于數(shù)據(jù)存儲的方法200的示例性流程圖。該方法可以在應用服務器(例如圖1a中的110)中的客戶端處實施,使得該客戶端作為應用和存儲設備之間的橋梁。但是本公開的實施例并不限于此。

如圖2所示,該方法200包括:在塊s201,從應用獲取對應用數(shù)據(jù)的描述信息;在塊s202,基于該描述信息,執(zhí)行存儲優(yōu)化;以及在將該應用數(shù)據(jù)發(fā)送到后端存儲設備之前,在塊s203,基于該描述信息,提前執(zhí)行要由該后端存儲設備實施的至少部分存儲功能。

在該方法200中,通過客戶端與應用的通信,能夠獲取關(guān)于應用數(shù)據(jù)的描述信息,該描述信息進一步被用來執(zhí)行優(yōu)化處理和存儲功能的協(xié)調(diào),從而降低處理時延,縮短至少一些處理的路徑,提高處理效率。

在一個實施例中,描述信息可以包括(但不限于)以下中的至少一項:該應用數(shù)據(jù)是否熱數(shù)據(jù)或者冷數(shù)據(jù)、該應用數(shù)據(jù)是否元數(shù)據(jù)、該應用數(shù)據(jù)是否可壓縮或可重復數(shù)據(jù)刪除、該應用數(shù)據(jù)是否數(shù)據(jù)快照、該應用數(shù)據(jù)是否到期、以及該應用數(shù)據(jù)是否垃圾數(shù)據(jù)。

例如,在一個實施例中,在s201,可以通過查詢應用的應用程序接口(api)來獲取該描述信息。利用該描述信息,能夠執(zhí)行存儲優(yōu)化,提高存儲效率。例如,對于熱數(shù)據(jù)和冷數(shù)據(jù)可以進行不同的處理,并且/或者,對于到期的數(shù)據(jù)或者垃圾數(shù)據(jù)可以進行丟棄,并收回相應的存儲空間。在另一實施例中,在s201,可以通過接收來自所述應用的輸入輸出(io)請求,來獲取所述描述信息。例如,該描述信息可以作為標簽(tag)被包括在io請求中。

取決于獲得的描述信息,在s202執(zhí)行的存儲優(yōu)化操作可以不同。僅作為示例,該存儲優(yōu)化可以包括執(zhí)行以下中的至少一項:寫合并、預讀、非均衡存儲器訪問(numa)、通過就地執(zhí)行(xip)或者零拷貝(zero-copy)來減少內(nèi)存拷貝、進行優(yōu)先級排隊、以及讀或者寫高速緩存。一些優(yōu)化操作使得能夠跳過一些處理功能,縮短路徑。另一些操作(例如,寫合并)能夠延長io壽命。

替代地或者附加地,在s203中提前執(zhí)行的要由該后端存儲設備實施的至少部分存儲功能包括以下中的至少一項:使用安全散列算法(sha)獲取該應用數(shù)據(jù)的摘要、執(zhí)行重復刪除、對該應用數(shù)據(jù)進行壓縮、對該應用數(shù)據(jù)進行分片,確定要將該應用數(shù)據(jù)發(fā)送到的目標存儲設備、以及通過rdma將該應用數(shù)據(jù)發(fā)送到該目標存儲設備。其中獲取數(shù)據(jù)摘要有助于確定是否存在重復數(shù)據(jù),以便于能夠據(jù)此進行重復刪除。壓縮操作能夠減少在網(wǎng)絡上傳輸?shù)臄?shù)據(jù)量。另外,基于在s201獲取的應用數(shù)據(jù)的描述信息,能夠確定針對特定的應用數(shù)據(jù)選擇性地執(zhí)行操作。例如,如果該數(shù)據(jù)為元數(shù)據(jù),則在s203不進行壓縮操作。又例如,如果該應用數(shù)據(jù)是已經(jīng)壓縮過的數(shù)據(jù),則在s203也不執(zhí)行壓縮操作。

在一個實施例中,后端存儲設備可以是為非易失性存儲設備,例如但不限于,全閃存存儲設備、混合的閃存存儲設備、針對非易失性存儲器/閃存優(yōu)化的存儲設備等。在另一實施例中,該方法實施于應用服務器中,并且該應用服務器可以經(jīng)由網(wǎng)絡訪問該后端存儲設備。

在現(xiàn)有技術(shù)中,可以通過網(wǎng)絡將應用數(shù)據(jù)發(fā)送到后端存儲設備中的任意存儲器盒子,然后由該存儲器盒子進一步將應用數(shù)據(jù)轉(zhuǎn)發(fā)到目的存儲器。在本公開的一個實施例中,可以提前進行數(shù)據(jù)的分片(partition),確定該應用數(shù)據(jù)的最終目的存儲器,從而能夠直接將該應用數(shù)據(jù)發(fā)送到目的存儲器,從而節(jié)省了在后端存儲設備中執(zhí)行的轉(zhuǎn)發(fā)操作。在另一實施例中,在s203可以通過遠程存儲器接入(rdma)將應用數(shù)據(jù)發(fā)送到該最終目的存儲器。

rdma主要是為了降低網(wǎng)絡傳輸中端數(shù)據(jù)處理的延遲,降低主cpu的開銷。rdma的實現(xiàn)包括,例如,融合以太網(wǎng)上的(roce),infiniband,以及iwarp。rdma的工作過程可以包括:1)當一個應用執(zhí)行rdma讀或?qū)懻埱髸r,在不需要任何內(nèi)核內(nèi)存參與的條件下,rdma請求從運行在用戶空間中的應用中發(fā)送到本地網(wǎng)卡(nic);2)nic讀取緩沖的內(nèi)容,并通過網(wǎng)絡傳送到遠程nic;3)在網(wǎng)絡上傳輸?shù)膔dma信息包含尋址信息(其為元數(shù)據(jù),例如包括目標虛擬地址、內(nèi)存索引)和數(shù)據(jù)本身。rdma操作使應用可以從一個遠程應用的內(nèi)存中讀數(shù)據(jù)或向這個內(nèi)存寫數(shù)據(jù);4)目標nic確認地址索引,直接將數(shù)據(jù)寫人應用緩存中。

如上所述,通過將一些存儲功能/服務提前,能夠?qū)崿F(xiàn)端到端性能的優(yōu)化,并且將對后端存儲設備的改變最小化。

該方法200可以在應用服務中的客戶端或者庫(lib)中執(zhí)行,使得客戶端或者庫作為應用和存儲產(chǎn)品之間的橋梁。即,使得應用能夠通過客戶端或者lib訪問存儲功能,以優(yōu)化端到端性能。

在一個實施例中,方法200還可以進一步包括s204,其中,將s203中提前處理后的應用數(shù)據(jù)發(fā)送到后端存儲設備。在另一實施例中,將該應用數(shù)據(jù)發(fā)送到該后端存儲設備包括通過網(wǎng)絡將該應用數(shù)據(jù)發(fā)送到該后端存儲設備。本公開的實施例不限于任何特定的網(wǎng)絡。并且僅作為示例,該網(wǎng)絡可以是因特網(wǎng)。

盡管在本公開的一些實施例中,以nosql應用為例介紹本公開的原理,但是本公開的實施例不限于該具體應用。僅作為示例,方 法200涉及的應用還可以是(但不限于)關(guān)系型數(shù)據(jù)庫(sqldb)、文件系統(tǒng)(fs)、以及虛擬機(vm)等。其中,nosql的示例可以是鍵值數(shù)據(jù)庫(k-v)和寬表項數(shù)據(jù)庫(column)。

替代地或者附加地,在一些實施例中,方法200可以進一步包括:在塊s205,執(zhí)行管理操作,該管理操作可以包括(但不限于)以下中的至少一項:監(jiān)測該數(shù)據(jù)存儲;報告該數(shù)據(jù)存儲的狀態(tài);以及對該數(shù)據(jù)存儲進行路徑管理。

以下參考附圖3a-3c描述用于數(shù)據(jù)存儲的裝置300示意性的結(jié)構(gòu)。裝置300可以位于運行應用的應用服務器中,并且用作應用和存儲設備之間溝通的橋梁。該裝置通過利用關(guān)于應用數(shù)據(jù)的信息能夠提高數(shù)據(jù)存儲處理的效率。在一些實施例中,該應用可以包括(但不限于)以下中的至少一項:關(guān)系型數(shù)據(jù)庫sqldb、非關(guān)系型數(shù)據(jù)庫nosql、文件系統(tǒng)fs、以及虛擬機vm等。其中nosql的示例可以是k-v或者寬表項數(shù)據(jù)庫(column)。

裝置300可以執(zhí)行參考圖2所述的方法200,但是不限于執(zhí)行該方法200。同樣,該方法200可以由裝置300執(zhí)行,但是不限于由裝置300執(zhí)行。例如方法200的至少一些操作可以由其它的裝置來執(zhí)行。

如圖3a所示,裝置300包括應用集成單元301,被配置為從應用獲取對應用數(shù)據(jù)的描述信息;存儲優(yōu)化單元302,被配置為用于基于該描述信息,執(zhí)行存儲優(yōu)化;以及存儲功能協(xié)調(diào)單元303,被配置為在將該應用數(shù)據(jù)發(fā)送到后端存儲設備之前,基于該描述信息,提前執(zhí)行要由該后端存儲設備實施的至少部分存儲功能。

在一個實施例中,應用集成單元301可以包括一個可擴展的api集合,使得能夠有效地從上層各種應用獲得描述信息。獲得這些描述信息,有助于本方法后續(xù)模塊進行高效,快速,有針對性的處理。如結(jié)合圖2所述的,在一個實施例中,應用數(shù)據(jù)的描述信息可以包括但不限于,以下中的至少一項:該應用數(shù)據(jù)是否熱數(shù)據(jù)或者冷數(shù)據(jù)、該應用數(shù)據(jù)是否元數(shù)據(jù)、該應用數(shù)據(jù)是否可壓縮或可重復數(shù)據(jù) 刪除、該應用數(shù)據(jù)是否數(shù)據(jù)快照、該應用數(shù)據(jù)是否到期、以及該應用數(shù)據(jù)是否垃圾數(shù)據(jù)。這使得存儲優(yōu)化單元302能夠根據(jù)應用層收集/獲取的描述信息確定針對特定數(shù)據(jù)類型的優(yōu)化處理,實現(xiàn)應用和存儲功能的更高效的耦合。

例如,描述信息可以包括哪些數(shù)據(jù)是該應用的元數(shù)據(jù)。對于元數(shù)據(jù),由于其性能、可靠性等方面的更高要求,可配置地,元數(shù)據(jù)可以被給予更高的io優(yōu)先級,或者可以被免除執(zhí)行某些功能,例如壓縮,重復數(shù)據(jù)刪除等。在另一示例中,應用集成單元301獲得的描述信息可以包括哪些數(shù)據(jù)是冷數(shù)據(jù)。上層應用往往維護冷熱數(shù)據(jù)的最近最少使用統(tǒng)計(lru);對于冷數(shù)據(jù),可以預先處理但對其設置較低的運行優(yōu)先級。在又一示例中,描述信息可以包括哪些數(shù)據(jù)是快照數(shù)據(jù)??煺諗?shù)據(jù)可能短期內(nèi)并不會被訪問,因此可以預先進行處理。在另一示例中,描述信息可以包括哪些數(shù)據(jù)是過期數(shù)據(jù)。應用(例如,k-v)允許用戶設置一個過期時限;應用會定期掃描以檢測該信息。在應用集成單元301獲得過期數(shù)據(jù)之后,這些數(shù)據(jù)可以被快速回收。

在一個實施例中,應用集成單元301可以,例如,通過查詢應用的api,從應用收集關(guān)于數(shù)據(jù)特性的描述信息。該收集可以是定期或者不定期主動執(zhí)行的。在另一實施例中,可以由上層應用在發(fā)起io時,附上標簽以提供該描述信息。在又一實施例中,可以混合使用上述兩種方法。例如,應用集成單元301可以主動查詢應用以獲知哪些是冷數(shù)據(jù),哪些是過期的數(shù)據(jù);同時還可以被動地獲知哪些數(shù)據(jù)是元數(shù)據(jù)和/或數(shù)據(jù)快照。

在另一實施例中,存儲優(yōu)化單元302可以被配置為執(zhí)行以下優(yōu)化操作中的至少一項:寫合并、預讀、非均衡存儲器訪問(numa)、通過就地執(zhí)行(xip)或者零拷貝來減少內(nèi)存拷貝、進行優(yōu)先級排隊、以及讀或者寫高速緩存。

在一個實施例中,存儲優(yōu)化單元302可以被配置為閃存高性能io處理模塊。其可以用于降低通用軟件處理開銷,例如鎖,cpu切 換,用戶空間-內(nèi)核空間進出,多次拷貝數(shù)據(jù)等。該存儲優(yōu)化單元302的主要模塊可以運行在用戶空間。

在圖3b中示出了存儲優(yōu)化單元302與其它模塊的連接以及其內(nèi)部示例操作的示意圖。如圖3b所示,存儲優(yōu)化單元302可以被配置為針對每個cpu-核建立收發(fā)隊列(302-1、302-2、302-3),并且在每核上進行數(shù)據(jù)合并,例如按照數(shù)據(jù)地址偏移量進行合并。在另一實施例中,存儲優(yōu)化單元302可以被配置為將多核上的數(shù)據(jù)在io之前進行全局合并(302-4)。在又一實施例中,存儲優(yōu)化單元302可以被配置為最終向下層發(fā)送io。在該存儲優(yōu)化單元302內(nèi)減少或者避免內(nèi)存拷貝(302-5),并跳過內(nèi)核的緩存層,可采用例如rdma技術(shù),或者linuxuio,dax技術(shù)等??蛇x地,存儲優(yōu)化單元302可以被配置為例如利用后臺預讀模塊302-6,根據(jù)訪問模型和趨勢把數(shù)據(jù)事先讀取到內(nèi)置的緩存模塊302-7。

替代地或者附加地,在一個實施例中,由存儲功能協(xié)調(diào)單元303提前執(zhí)行的要由后端存儲設備實施的至少部分存儲功能可以包括以下中的至少一項:使用安全散列算法(sha)獲取該應用數(shù)據(jù)的摘要、執(zhí)行重復刪除、對該應用數(shù)據(jù)進行壓縮、對該應用數(shù)據(jù)進行分片,確定要將該應用數(shù)據(jù)發(fā)送到的目標存儲設備、以及通過rdma將該應用數(shù)據(jù)發(fā)送到該目標存儲設備。

sha是一種經(jīng)典的數(shù)據(jù)摘要算法。例如,sha的一種實現(xiàn),sha1,會根據(jù)輸入數(shù)據(jù)的內(nèi)容產(chǎn)生一個160位的消息摘要;可以用作數(shù)字簽名。在本公開的實施例中其主要起摘要目的。摘要相同的兩段數(shù)據(jù)內(nèi)容相同(即是重復的)的概率也是很高的。因此,該算法可以用于確定是否執(zhí)行重復刪除。

在一個實施例中,存儲功能協(xié)調(diào)單元303可以被配置為針對閃存實際后端存儲以及應用集成單元301所獲得的元數(shù)據(jù)進行有針對性的優(yōu)化,或者預處理。在圖3c中示出了其操作的示例。如圖3c所示,其可以被配置為:例如采用sha算法對io數(shù)據(jù)(310)進行摘要計算(303-1)以進行重復數(shù)據(jù)刪除,目的是消除冗余數(shù)據(jù),減 小實際數(shù)據(jù)的寫入量,提高寫性能并降低flash/磁盤的損耗。在另一實施例中,存儲功能協(xié)調(diào)單元303可以被配置為執(zhí)行數(shù)據(jù)壓縮(303-2)。例如可以采用常見的gzip,lz4,lzs算法等。應該注意,以上操作,可以根據(jù)應用集成單元301所獲得的的描述信息和系統(tǒng)配置有針對性的激活或關(guān)閉。例如為性能考慮,可以不對元數(shù)據(jù)執(zhí)行上述操作。

在另一實施例中,存儲功能協(xié)調(diào)單元303可以被配置為例如采用crc64算法產(chǎn)生校驗碼并保存(303-3),以確保數(shù)據(jù)完整性。在進一步的實施例中,存儲功能協(xié)調(diào)單元303可以被配置為執(zhí)行下述中的任意一項:

-加密數(shù)據(jù)(303-4),密鑰可以實現(xiàn)配置,例如整個磁盤/卷公用一個密鑰;

-數(shù)據(jù)分片(303-5):把數(shù)據(jù)依據(jù)實現(xiàn)規(guī)則分布到多臺存儲節(jié)點上。例如可以按照數(shù)據(jù)的內(nèi)容(以摘要代表內(nèi)容)或者數(shù)據(jù)的偏移量。數(shù)據(jù)分片推薦與后端存儲集群保持一致。即將后端存儲的分配規(guī)則前移,運行在服務器端;

-對于后端是flash集群的應用場景,考慮到節(jié)點可能動態(tài)的添加/減少(例如維護,擴容,異常),為了使得分片保持一致,后端flash集群可以異步將節(jié)點變化情況通知服務器(303-6,303-7);

–將元數(shù)據(jù)統(tǒng)一保存在flash存儲,或者采用查詢-應答方式交互(303-8)。例如,可以只計算數(shù)據(jù)的摘要,然后將多個數(shù)據(jù)的摘要信息批處理的發(fā)送給flash存儲集群,flash存儲集群查詢?nèi)值恼獛欤瑥亩祷仄渲蟹侵貜偷恼畔⒔o服務器;服務器基于此可以只發(fā)送這些非重復數(shù)據(jù);

-數(shù)據(jù)傳輸(303-9),非重復數(shù)據(jù)從服務器根據(jù)分片規(guī)則直接發(fā)送給存儲節(jié)點(320),可選的可以采用rdma方式;該存儲節(jié)點可以是例如共享的水平擴展的flash存儲集群。

-另一種情況是flash存儲并非共享存儲,而是每個服務器內(nèi)置flash存儲器,且多臺服務器以對等方式協(xié)同工作。此時數(shù)據(jù)可以保 存在服務器本地,可選的為提高可靠性,可以將一個或者多個副本發(fā)送給另一臺服務器(303-a)。

如前結(jié)合方法200所述的,該后端存儲設備可以是(但不限于)非易失性存儲設備。在一個實施例中,該裝置300可以進一步包括:發(fā)送單元304,其被配置為將存儲功能協(xié)調(diào)單元303所提前處理過的應用數(shù)據(jù)發(fā)送到該后端存儲設備。在另一實施例中,該發(fā)送單元304可以進一步被配置為通過網(wǎng)絡將該應用數(shù)據(jù)發(fā)送到該后端存儲設備。本公開的實施例不限于任何特定的網(wǎng)絡形式,例如其可以是因特網(wǎng)。

替代地或者附加地,在一個實施例中,裝置300可以進一步包括管理單元305,其被配置為執(zhí)行管理操作。該管理操作可以包括(但不限于)以下中的至少一項:監(jiān)測該數(shù)據(jù)存儲、報告該數(shù)據(jù)存儲的狀態(tài)、以及對該數(shù)據(jù)存儲進行路徑管理。

如圖4所示,根據(jù)本公開的一個實施例的裝置可以體現(xiàn)為在應用節(jié)點400(例如應用服務器)中運行的客戶端/庫/驅(qū)動器(例如客戶端401或者407),以使得該應用節(jié)點能夠和存儲系統(tǒng)(例如存儲設備402、403)協(xié)調(diào),并且有效地將存儲設備和應用(例如nosql404、405)連接。該應用服務器可以例如通過網(wǎng)絡406連接到存儲設備。

圖4中所示的本公開的實施例的裝置(例如實施為客戶端401或者407,或者其一部分)可以采用分層的設計,如前參考圖3a-3c所述。例如,可以由低層驅(qū)動器處理各種網(wǎng)絡連接;該低層驅(qū)動器可以包括圖3a-3c中的存儲功能協(xié)調(diào)單元303的至少部分功能。在另一示例中,由高層的驅(qū)動器負責可視接口和api,該高層的驅(qū)動器可以包括圖3a-3c中的應用集成單元301、存儲優(yōu)化單元302、以及存儲功能協(xié)調(diào)單元303的至少部分功能。

根據(jù)本公開的另一實施例的裝置可以被分成控制模塊和數(shù)據(jù)路徑模塊。其中該控制模塊可以是(或者包括)例如圖3a中的管理單元305,其可以被配置為執(zhí)行設備發(fā)現(xiàn)、認證、配置、輸出、監(jiān)測、 高可靠性(ha)等功能。數(shù)據(jù)路徑模塊可以具有分層的結(jié)構(gòu),并且使得能夠在必要時繞過文件系統(tǒng)(fs)/系統(tǒng)緩存,以降低上下文切換/系統(tǒng)調(diào)用。例如,其可以被配置為使一部分功能運行在用戶態(tài)而非內(nèi)核態(tài)中,由此來降低開銷。在一些實施例中,該數(shù)據(jù)路徑模塊可以包括,例如,圖3a-3c中的應用集成單元301、存儲優(yōu)化單元302、以及存儲功能協(xié)調(diào)單元303的至少部分功能。

如前結(jié)合裝置300所述的,其中應用集成單元301可以從應用層獲知信息,用于前攝性地負載/非同步清除;以及/或者還可以收集垃圾數(shù)據(jù)分布信息,用于收回相應的閃存存儲空間;以及/或者,還可以進行寫合并或者實施存儲器側(cè)的檢查點。存儲優(yōu)化單元302可以被配置用于公共閃存/非易失性存儲器優(yōu)化。其可以根據(jù)來自應用集成層301的信息進行成批地小的寫操作、預加載數(shù)據(jù)等;并且/或者,經(jīng)由execute-in-place(xip)或者directaccess(dax)跳過文件系統(tǒng)/頁面緩存,降低從用戶空間到設備的數(shù)據(jù)拷貝;并且/或者保持必要的數(shù)據(jù)/元數(shù)據(jù)。該存儲優(yōu)化單元302使得數(shù)據(jù)緩存能夠被透寫,因此數(shù)據(jù)對于閃存陣列是持續(xù)的,高效的。存儲功能協(xié)調(diào)單元303能夠用于閃存陣列優(yōu)化,例如能夠用于從后端存儲設備卸載任務,或者用于主機輔助的數(shù)據(jù)重復刪除/壓縮;以及校驗和生成等。k-v應用是內(nèi)存集約式而不是cpu集約式的,數(shù)據(jù)重復刪除有助于消除到陣列中的重復值流量。另外,存儲功能協(xié)調(diào)單元303能夠緩解后端設備遭受的壓縮挑戰(zhàn)。例如在數(shù)據(jù)塊不足夠大、或者不適合壓縮或者已經(jīng)被壓縮的情況下,后端存儲設備在不了解數(shù)據(jù)特性時可能會繼續(xù)對其進行不必要的壓縮處理,而存儲功能協(xié)調(diào)單元303能夠?qū)嚎s功能提前,并利用來自應用的數(shù)據(jù)描述信息避免不必要的操作。另外,如前所述,存儲功能協(xié)調(diào)單元303還能夠執(zhí)行分片(partition)功能,利用sha腳印,應用能夠直接與特定存儲節(jié)點溝通,消除一跳,縮短處理時延。對于擴展陣列集群的情況,存儲功能協(xié)調(diào)單元303能夠提前復制數(shù)據(jù),并且將其直接分布到其他主機上。在一個實施例中,可以利用遠程存儲器訪問(rdma)在應 用和陣列之間傳送數(shù)據(jù)。該操作能夠被ib、互聯(lián)網(wǎng)小型計算機接口(iscsi,iser)或者甚至因特網(wǎng)支持,能夠降低cpu的使用和處理延時。

在本公開的另一實施例中,還提供一種應用服務器,例如圖4中的應用服務器400,該應用服務器包括應用以及例如參考圖3a-3c所述的任一裝置。

如本領域技術(shù)人員能夠理解的,裝置300和服務器400還可以包括圖3a-3c中未示出的其它單元;并且/或者,在一些實施例中,圖3a-4中的某些單元可以被省略。

在提出本公開的實施例的方法和裝置之前,不存在用于將應用和非易失性存儲設備結(jié)合的有效方式。而本公開的實施例提供了方法和裝置,用于使能應用和存儲設備的溝通、以及存儲功能的協(xié)調(diào)。

本領域技術(shù)人員將容易地認識到,各種上述各種方法中的塊或者步驟可以通過編程的計算機來執(zhí)行。在本公開中,一些實施例還意在涵蓋一種包括指令的計算機程序,該指令在至少一個處理器中執(zhí)行時,促使該至少一個處理器執(zhí)行方法200中的任一方法。在本公開中,一些實施例還意在涵蓋程序存儲系統(tǒng),例如,數(shù)字數(shù)據(jù)存儲介質(zhì),這是機器或計算機可讀的并且編碼機器可執(zhí)行或計算機可執(zhí)行的指令程序,其中,該指令執(zhí)行上述方法200中的一些或所有步驟。程序存儲系統(tǒng)可以是,例如,數(shù)字存儲器、諸如磁盤和磁帶的磁存儲介質(zhì)、硬盤驅(qū)動器或光學可讀數(shù)字數(shù)據(jù)存儲介質(zhì)。該實施例還意在涵蓋編程為執(zhí)行該上述方法的步驟的計算機。一些實施例還意在涵蓋一種裝置,該裝置包括至少一個處理器;以及至少一個包括計算機程序代碼的存儲器,其中該至少一個存儲器和該計算機程序代碼被配置為:與該至少一個處理器一起,促使該裝置執(zhí)行方法200。

圖5示出了一個可以用來實施本公開的實施例的設備500的示意性框圖。如圖所示,設備500包括處理單元(例如但不限于cpu)501,其可以根據(jù)存儲在只讀存儲器(rom)502中的計算機程序指 令、或者來自存儲單元508的計算機程序指令(例如,從存儲單元508加載到隨機訪問存儲器(ram)503中的計算機程序指令),來執(zhí)行各種適當?shù)膭幼骱吞幚?。在ram503中,還可存儲設備500操作所需的各種程序和數(shù)據(jù)。處理單元501、rom502以及ram503通過總線504彼此相連。輸入/輸出(i/o)接口505也連接至總線504。

設備500中的多個部件連接至i/o接口505,包括:輸入單元506,例如鍵盤、鼠標等;輸出單元507,例如各種類型的顯示器、揚聲器等;存儲單元508,例如磁盤、光盤等;以及通信單元509,例如網(wǎng)卡、調(diào)制解調(diào)器、無線通信收發(fā)機等。通信單元509允許設備500通過諸如因特網(wǎng)的計算機網(wǎng)絡和/或各種電信網(wǎng)絡與其他設備交換信息/數(shù)據(jù)。

上文所描述的各個過程和處理,例如方法200,可由處理單元501執(zhí)行。例如,在一些實施例中,方法200可被實現(xiàn)為計算機軟件程序,其被有形地包含于機器可讀介質(zhì),例如存儲單元508。在一些實施例中,計算機程序的部分或者全部可以經(jīng)由rom502和/或通信單元509而被載入和/或安裝到設備500上。當計算機程序被加載到ram503并由處理單元501執(zhí)行時,可以執(zhí)行上文描述的方法200的一個或多個步驟。

因此,本公開的解決方案可以利用各種方式來提供。例如,在一些實施例中,可以將實施例的方法/裝置實現(xiàn)為硬件、軟件或者軟件和硬件的結(jié)合。在一些實施例中,實施例的方法/裝置可以被實現(xiàn)為應用服務器中的客戶端或者庫或者驅(qū)動器。在另一實施例中,可以將本公開的解決方案實施為開源的軟件庫和閃存的集成,或者進一步與閃存,應用服務器集成為超融合系統(tǒng)(hyperconvergedsystem,例如emctm的vce產(chǎn)品),例如將非關(guān)系型數(shù)據(jù)庫應用節(jié)點和非易失性存儲器(例如xtremio)集成,或者將應用、客戶端和存儲一起集成為容器。

在附圖中示出的裝置的各種元件的功能,可以通過使用軟件、 專用硬件以及與適當軟件相關(guān)聯(lián)的能夠執(zhí)行軟件的硬件、或者固件、或者其結(jié)合來提供。當由處理器提供時,該功能可以由單個專用處理器、由單個共享處理器或由多個單獨的處理器來提供。此外,術(shù)語“處理器”可以包括但不限于,數(shù)字信號處理器(dsp)硬件、網(wǎng)絡處理器、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga),用于存儲軟件的只讀存儲器(rom)、隨機存取存儲器(ram)和非易失性存儲裝置。還可以包括其他常規(guī)和/或定制的硬件。

本領域技術(shù)人員應當理解,說明書和附圖僅僅說明本公開的實施例的原理。因此,應當理解,本領域的技術(shù)人員將能夠設計出各種布置,雖然這里沒有明確地描述或示出,但是該布置體現(xiàn)本公開的實施例的原理并且被包括在本公開的實施例的精神和范圍內(nèi)。此外,這里闡述的所有示例主要旨在明確僅用于教學目的,以幫助讀者理解本公開的實施例的原理和發(fā)明人貢獻的用于促進本領域的概念,并且應被解釋為不限于這些具體闡釋的示例和條件。而且,這里闡述本公開的實施例的原理、方面和實施例的所有闡述及其具體示例也意在包含其等同物。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
闻喜县| 彰化市| 信丰县| 西乡县| 和硕县| 抚宁县| 庆元县| 广水市| 沭阳县| 宜丰县| 木兰县| 滦南县| 仲巴县| 西平县| 洛川县| 钟山县| 外汇| 南宁市| 东港市| 蓬溪县| 康定县| 揭西县| 黄石市| 桃江县| 万山特区| 普陀区| 辽阳市| 香港 | 丰镇市| 泽库县| 精河县| 兴安县| 时尚| 昆明市| 乌拉特中旗| 阳曲县| 邳州市| 五家渠市| 卓资县| 凤冈县| 营口市|