李鴻飛,杜溢墨,曾 熠,王 磊
(1. 信息工程大學(xué) 地理空間信息學(xué)院, 河南 鄭州 450001; 2. 中國人民解放軍31008部隊(duì), 北京 100091)
隨著網(wǎng)絡(luò)信息技術(shù)的發(fā)展,特別是近年來,智能移動(dòng)終端和多媒體技術(shù)深入社會生活各個(gè)領(lǐng)域,數(shù)據(jù)爆炸增長的趨勢愈加顯著。根據(jù)國際數(shù)據(jù)公司IDC發(fā)布的研究報(bào)告,互聯(lián)網(wǎng)數(shù)據(jù)總量已達(dá)40 ZB[1]。除了體量大以外,數(shù)據(jù)還呈現(xiàn)出類型多、價(jià)值密度低、實(shí)時(shí)性強(qiáng)等“大數(shù)據(jù)”特性。
為了高效存儲管理“大數(shù)據(jù)”,學(xué)術(shù)界和產(chǎn)業(yè)界面向不同應(yīng)用特性提出了各類存儲管理系統(tǒng)和存儲設(shè)備:存儲管理系統(tǒng)主要有關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫(Not only Structured Query Language, NoSQL)存儲和以HDFS(Hadoop distributed file system)為代表的分布式文件系統(tǒng)等;存儲設(shè)備主要有傳統(tǒng)磁盤、閃存固態(tài)盤和相變存儲器(Phase Change Memory, PCM)、自旋扭矩轉(zhuǎn)換隨機(jī)存儲器(Shared Transistor Technology Random Access Memory, STT-RAM)、阻變式存儲器(Resistive Random Access Memory, RRAM)等新型存儲器件。這些存儲管理系統(tǒng)和存儲設(shè)備特點(diǎn)各異,適用于不同應(yīng)用類型,但大數(shù)據(jù)環(huán)境下的應(yīng)用復(fù)雜多樣,批處理、流處理、交互式應(yīng)用可能同時(shí)存在,而這些應(yīng)用在數(shù)據(jù)類型、訪問特性、時(shí)效要求上都有很大不同,單一存儲管理系統(tǒng)和存儲設(shè)備難以滿足存儲需求?;旌洗鎯?,因能綜合利用各類存儲系統(tǒng)和設(shè)備的優(yōu)點(diǎn),成為一種較好選擇,被企業(yè)、數(shù)據(jù)中心等廣泛采用[2]。
當(dāng)前的混合存儲設(shè)計(jì)或只考慮了軟件層面存儲系統(tǒng)的混合,或只考慮了硬件層面存儲設(shè)備的混合,無法綜合利用混合存儲系統(tǒng)和混合存儲設(shè)備的優(yōu)勢。一種簡單的軟硬混合存儲設(shè)計(jì)是將兩個(gè)層面的混合進(jìn)行堆疊,軟件層面采用關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫以及分布式文件系統(tǒng)混合的存儲管理模式,硬件層面采用機(jī)械硬盤與固態(tài)盤混合的模式。但該設(shè)計(jì)需要進(jìn)行兩次數(shù)據(jù)特征識別和數(shù)據(jù)分配,既造成時(shí)間和資源的浪費(fèi),又由于數(shù)據(jù)分配沒有同時(shí)考慮存儲系統(tǒng)和存儲設(shè)備,無法從全局角度為要存儲的數(shù)據(jù)規(guī)劃最合適的存儲系統(tǒng)和存儲設(shè)備。
本文提出的軟硬件協(xié)同的數(shù)據(jù)放置策略,雖然位于存儲系統(tǒng)之上,但除了能感知混合存儲系統(tǒng)外,也能通過配置文件感知底層存儲設(shè)備,相比軟件層混合與硬件層混合簡單堆疊的方法,只需通過一次特征識別和數(shù)據(jù)分配就能為數(shù)據(jù)選擇合適的存儲管理系統(tǒng)和存儲設(shè)備,提高了存儲執(zhí)行效率。為適應(yīng)不同需求,在軟硬協(xié)同數(shù)據(jù)放置基礎(chǔ)上,又提出了靜態(tài)放置和動(dòng)態(tài)放置兩種放置模式。靜態(tài)放置是在數(shù)據(jù)分配前,根據(jù)應(yīng)用、存儲系統(tǒng)、存儲設(shè)備特性為不同應(yīng)用事先規(guī)劃好數(shù)據(jù)存放路徑。動(dòng)態(tài)放置是根據(jù)應(yīng)用訪問歷史記錄預(yù)測下一時(shí)刻應(yīng)用特征,然后為數(shù)據(jù)選擇適合存放的存儲系統(tǒng)和存儲設(shè)備,相比靜態(tài)數(shù)據(jù)分配策略,其對應(yīng)用識別的粒度更細(xì),合理性更好,缺點(diǎn)是記錄數(shù)據(jù)存放位置的元數(shù)據(jù)信息多,增加了時(shí)間和空間開銷。
NoSQL存儲相比關(guān)系型數(shù)據(jù)庫,具有可擴(kuò)展性好、存儲模式靈活、數(shù)據(jù)模型與應(yīng)用層數(shù)據(jù)結(jié)構(gòu)接近等優(yōu)勢,越來越多地用于大數(shù)據(jù)存儲環(huán)境中,包括Key-Value存儲、列家族存儲、文檔存儲、圖存儲等。Sadalage等[3]全面介紹了NoSQL存儲,包括起源、特性、典型應(yīng)用等。Catell[4]比較了結(jié)構(gòu)化查詢語言(Structured Query Language, SQL)和幾種典型的NoSQL數(shù)據(jù)庫,并給出了不同類型數(shù)據(jù)庫的適用場景。綜合分析幾種典型的NoSQL存儲,其主要特點(diǎn)如表1所示。
Nance等[5]認(rèn)為雖然NoSQL在大數(shù)據(jù)時(shí)代應(yīng)用廣泛,但關(guān)系型數(shù)據(jù)庫仍有生存空間和應(yīng)用場景,涵蓋NoSQL與關(guān)系型數(shù)據(jù)庫的混合存儲管理系統(tǒng)就被很多數(shù)據(jù)中心采用。聯(lián)想采用混合存儲架構(gòu)為智慧城市提供數(shù)據(jù)存儲,其中,12 PB的非結(jié)構(gòu)化數(shù)據(jù)采用分布式NoSQL存儲,33 TB的結(jié)構(gòu)化數(shù)據(jù)采用關(guān)系型存儲[6]。淘寶推出的數(shù)據(jù)魔方產(chǎn)品主要提供行業(yè)數(shù)據(jù)分析、店鋪數(shù)據(jù)分析功能,其存儲層采用OldSQL+NoSQL混合模式,由基于MySQL的分布式關(guān)系型數(shù)據(jù)庫集群MyFOX和基于HBase的NoSQL存儲集群Prom組成[7]。安洋等[8]提出了行列混合的存儲布局,可實(shí)現(xiàn)實(shí)體的行式存儲或列式存儲,同時(shí)在一個(gè)實(shí)體內(nèi)部,可針對不同字段的稀疏、稠密等數(shù)據(jù)特征,選擇適合的行存儲或列存儲格式。Huang等[9]提出了一種基于NoSQL與SQL混合數(shù)據(jù)庫管理系統(tǒng)的負(fù)載均衡機(jī)制,動(dòng)態(tài)檢測系統(tǒng)中的熱點(diǎn),并將熱點(diǎn)上的數(shù)據(jù)遷移到冷節(jié)點(diǎn)上,從而提高混合存儲系統(tǒng)的吞吐量。Grolinger等[10]分析比較了NoSQL和NewSQL數(shù)據(jù)庫以及它們各自適用的場景,并為數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)人員選擇合適的數(shù)據(jù)存儲提供指導(dǎo)和借鑒。Lawrence[11]針對NoSQL數(shù)據(jù)庫訪問接口各異且不支持SQL的問題,提出了一種統(tǒng)一架構(gòu),將NoSQL存儲與SQL存儲集中統(tǒng)一管理,通過設(shè)置虛擬層,能將SQL和Java數(shù)據(jù)庫連接(Java DataBase Connectivity, JDBC)訪問轉(zhuǎn)換成對NoSQL的訪問。
表1 典型的NoSQL存儲及其特征Tab.1 Typical NoSQL stores and characteristics
閃存、PCM等新型存儲器件的引入,改變了以往基于動(dòng)態(tài)隨機(jī)存取存儲器(Dynamic Random Access Memory, DRAM)、磁盤的存儲架構(gòu)。由于存儲器件特性各異,而大數(shù)據(jù)應(yīng)用需求千差萬別,綜合應(yīng)用各類存儲設(shè)備的混合存儲架構(gòu)為解決大數(shù)據(jù)存儲瓶頸提供了新思路。Ouyang等[12]指出,百度采用混合存儲設(shè)備,將經(jīng)常訪問的網(wǎng)頁和圖片等數(shù)據(jù)存儲在定制化的固態(tài)盤(Solid State Drive, SSD)上,不經(jīng)常訪問的數(shù)據(jù)存儲在硬盤(Hard Disk Drive, HDD)上,提升了整體數(shù)據(jù)訪問性能。金培權(quán)[13]針對大數(shù)據(jù)存儲與管理中的高效存儲、實(shí)時(shí)處理等挑戰(zhàn),研究了通過引入閃存、PCM等新型存儲器件構(gòu)建混合大數(shù)據(jù)存儲架構(gòu)的解決思路,包括基于DRAM與PCM的混合主存架構(gòu),DRAM、閃存與磁盤共存的混合層次架構(gòu),冷熱數(shù)據(jù)分離的混合分布式存儲等。Sang等[14]提出采用SSD與HDD混合的存儲架構(gòu),利用SSD讀和大塊寫性能比HDD要好的特點(diǎn),用SSD代替部分HDD存儲事務(wù)日志、回滾段、臨時(shí)表空間等,可以顯著提高數(shù)據(jù)庫應(yīng)用性能。Canim等[15]提出使用SSD代替部分HDD,作為數(shù)據(jù)系統(tǒng)緩存區(qū)的擴(kuò)展,可以有效減少HDD上的I/O訪問,顯著提高數(shù)據(jù)庫性能。
當(dāng)前的大數(shù)據(jù)中心具有以下幾個(gè)特點(diǎn):一是服務(wù)的應(yīng)用類型多樣,包括事務(wù)處理、在線分析、實(shí)時(shí)交互等;二是存儲管理系統(tǒng)多樣,包括關(guān)系型數(shù)據(jù)庫、Key-Value存儲、列家族存儲等;三是存儲設(shè)備多樣,包括HDD、SATA SSD、NVMe SSD等。為了同時(shí)服務(wù)不同類型的應(yīng)用,綜合利用不同存儲系統(tǒng)和存儲設(shè)備的優(yōu)勢,數(shù)據(jù)中心通常采用混合存儲體系架構(gòu):軟件層包含各類存儲管理系統(tǒng)的混合,硬件層包含各類存儲設(shè)備的混合。對于混合存儲架構(gòu),需要考慮的一個(gè)重要問題是數(shù)據(jù)放置,即為數(shù)據(jù)選擇合適的存儲管理系統(tǒng)和存儲設(shè)備。通常,數(shù)據(jù)放置可分為兩步:第一步是特征識別,識別對象包括應(yīng)用、存儲系統(tǒng)、存儲設(shè)備;第二步是數(shù)據(jù)分配,根據(jù)第一步識別的特征為數(shù)據(jù)選擇合適的存放位置。
(a) 只考慮混合存儲系統(tǒng)(a) Only considering hybrid storage management systems
(b) 只考慮混合存儲設(shè)備(b) Only considering hybrid storage devices
(c) 分別考慮混合存儲系統(tǒng)和混合存儲設(shè)備(c) Considering hybrid storage management systems and hybrid storage devices respectively
(d) 同時(shí)考慮混合存儲系統(tǒng)和混合存儲設(shè)備(d) Considering hybrid storage management systems and hybrid storage devices simultaneously圖1 混合存儲架構(gòu)中各類數(shù)據(jù)放置策略設(shè)計(jì)Fig.1 Data placement strategies for hybrid store architecture
圖1給出了混合存儲架構(gòu)中各類數(shù)據(jù)放置策略設(shè)計(jì),其中圖1(a)~(b)是當(dāng)前已有的,圖1(c)是圖1(a)和圖1(b)的結(jié)合,圖1(d)是本文提出的。圖1(a)的數(shù)據(jù)放置模塊位于應(yīng)用層與存儲管理系統(tǒng)層之間,數(shù)據(jù)放置時(shí)只考慮應(yīng)用和存儲管理系統(tǒng)的特征。圖1(b)的數(shù)據(jù)放置模塊位于存儲管理系統(tǒng)與存儲設(shè)備之間,數(shù)據(jù)放置時(shí)只考慮存儲管理系統(tǒng)和存儲設(shè)備的特征。這兩類數(shù)據(jù)放置策略都只考慮了應(yīng)用、存儲管理系統(tǒng)、存儲設(shè)備三個(gè)要素中的兩個(gè),顯然不是全局最優(yōu)。如果綜合考慮三個(gè)要素,簡單直觀的設(shè)計(jì)是將圖1(a)、(b)結(jié)合,設(shè)置兩個(gè)數(shù)據(jù)放置模塊,如圖1(c)所示。然而,該設(shè)計(jì)雖然考慮了三個(gè)要素,但還存在兩個(gè)問題:一是需要設(shè)置兩層數(shù)據(jù)放置模塊,開銷較大;二是每一層的數(shù)據(jù)放置只考慮了其上下層,即兩個(gè)要素的特性,雖然總體上涵蓋了三個(gè)要素,但并沒有將三個(gè)要素綜合考慮,也難以達(dá)到全局最優(yōu)。針對這兩個(gè)問題,本文提出了軟硬件協(xié)同混合存儲數(shù)據(jù)放置策略,如圖1(d)所示,只有一層數(shù)據(jù)放置模塊,位于應(yīng)用層與存儲系統(tǒng)層之間,但進(jìn)行數(shù)據(jù)放置時(shí)不僅考慮這兩層的特征,也能通過讀取存儲設(shè)備配置文件同時(shí)感知存儲設(shè)備的特征。相比圖1(c),該設(shè)計(jì)有兩個(gè)優(yōu)勢:一是只有一層數(shù)據(jù)放置策略,但包含了圖1(c)中兩層數(shù)據(jù)放置的功能,減少了開銷;二是數(shù)據(jù)放置策略一次性綜合考慮應(yīng)用特征、混合存儲管理系統(tǒng)、混合存儲設(shè)備三個(gè)要素,提高了數(shù)據(jù)放置的合理性。
圖1四種策略的形式化描述如下:假設(shè)數(shù)據(jù)放置策略用P表示,影響放置策略的三個(gè)要素——應(yīng)用、存儲管理系統(tǒng)、存儲設(shè)備分別用A、S、D表示,各種放置策略其實(shí)是P關(guān)于A、S、D的函數(shù),分別用F1、F2、F3、F4表示,如表2所示。圖1(c)的放置策略使用了三個(gè)函數(shù)進(jìn)行表示,F(xiàn)3是在F1、F2各自最優(yōu)解基礎(chǔ)上的最優(yōu)解,明顯優(yōu)于F2;圖1(d)的放置策略用F4表示,綜合考慮了A、S、D,是(A,S,D)三維空間上的最優(yōu)解,要優(yōu)于F3的最優(yōu)解。具體證明過程此處不再贅述。
表2 圖1中各放置策略的數(shù)學(xué)表示和含義Tab.2 Mathematic expression and meaning of data placement strategies in the Fig.1
圖1(d)展示了軟硬件協(xié)同數(shù)據(jù)放置策略概要架構(gòu),圖2進(jìn)一步描述了數(shù)據(jù)放置策略的詳細(xì)設(shè)計(jì)。圖2中的數(shù)據(jù)放置模塊是數(shù)據(jù)放置策略的核心,主要包括應(yīng)用特征識別器、放置策略設(shè)置器、放置策略執(zhí)行器、數(shù)據(jù)打包器和數(shù)據(jù)分流器五個(gè)部件。其中,應(yīng)用特征識別器對所有應(yīng)用的訪問進(jìn)行識別分類,生成應(yīng)用特征參數(shù),作為放置策略的一個(gè)輸入。放置策略設(shè)置器讀入應(yīng)用特征參數(shù)、存儲管理系統(tǒng)參數(shù)文件、存儲設(shè)備參數(shù)文件,根據(jù)設(shè)定的算法生成存儲路徑信息,包括存儲數(shù)據(jù)的存儲管理系統(tǒng)和存儲設(shè)備。放置策略執(zhí)行器用于執(zhí)行放置策略,將數(shù)據(jù)的存儲路徑作為元數(shù)據(jù)信息記入元數(shù)據(jù)記錄表中。數(shù)據(jù)打包器根據(jù)元數(shù)據(jù)記錄的存儲路徑信息給數(shù)據(jù)加上存儲設(shè)備標(biāo)簽,用于混合存儲管理系統(tǒng)選擇存儲設(shè)備位置。數(shù)據(jù)分流器根據(jù)元數(shù)據(jù)記錄的存儲路徑信息,將打包好的數(shù)據(jù)分配到相應(yīng)的存儲系統(tǒng)。
圖2 軟硬協(xié)同混合存儲體系架構(gòu)設(shè)計(jì)Fig. 2 Software and hardware co-design of hybrid store architecture
圖2還展示了軟硬協(xié)同數(shù)據(jù)放置策略的數(shù)據(jù)存儲流程。首先,各應(yīng)用的數(shù)據(jù)訪問請求發(fā)送到應(yīng)用特征識別器,經(jīng)分析后生成應(yīng)用特征結(jié)果,同時(shí),訪問請求發(fā)送到數(shù)據(jù)打包器。數(shù)據(jù)打包器接收請求后,判斷請求類型,若是讀請求,讀取元數(shù)據(jù)記錄表,給請求加上存儲設(shè)備標(biāo)簽后發(fā)送到數(shù)據(jù)分流器。若是寫請求,需三步完成:①調(diào)用放置策略設(shè)置器,放置策略設(shè)置器讀取應(yīng)用特征識別器生成的應(yīng)用特征參數(shù)、存儲管理系統(tǒng)參數(shù)文件、存儲設(shè)備參數(shù)文件,生成數(shù)據(jù)存儲路徑;②調(diào)用放置策略執(zhí)行器,將數(shù)據(jù)存儲路徑登記在元數(shù)據(jù)記錄表中;③根據(jù)元數(shù)據(jù)記錄的存儲路徑信息給請求加上存儲設(shè)備標(biāo)簽,明確請求要存放的存儲設(shè)備,然后將請求發(fā)送到數(shù)據(jù)分流器。數(shù)據(jù)分流器對接收的讀寫請求,讀取元數(shù)據(jù)記錄表,根據(jù)存儲路徑信息將請求分配到相應(yīng)的存儲管理系統(tǒng)。
存儲管理系統(tǒng)采用各自存儲管理模式對數(shù)據(jù)請求進(jìn)行處理,然后調(diào)用設(shè)備標(biāo)簽解析器提取出數(shù)據(jù)請求中的存儲設(shè)備信息,再將請求發(fā)送到相應(yīng)的存儲設(shè)備,具體在設(shè)備上的位置仍由存儲管理系統(tǒng)自身管理。除了應(yīng)用本身需要存儲的數(shù)據(jù),存儲管理系統(tǒng)自身還會產(chǎn)生一些數(shù)據(jù),用于存儲的管理,比如索引、日志等,由于這些數(shù)據(jù)經(jīng)常訪問,通常存放在訪問速度較快的存儲設(shè)備上[11,14]。
放置策略設(shè)置器根據(jù)應(yīng)用、存儲管理系統(tǒng)、存儲設(shè)備類型及特性,為數(shù)據(jù)選擇盡可能“最優(yōu)”的存儲路徑。“最優(yōu)”通過應(yīng)用執(zhí)行時(shí)間的長短來衡量,所選的存儲路徑使應(yīng)用的執(zhí)行時(shí)間越短,則路徑越優(yōu)。最優(yōu)存儲路徑尋找問題和方法的形式化描述如下:
假設(shè)數(shù)據(jù)中心有l(wèi)個(gè)應(yīng)用,分別表示為A1,A2,…,Al;m個(gè)存儲系統(tǒng),分別表示為S1,S2,…,Sm;n個(gè)存儲設(shè)備,分別表示為D1,D2,…,Dn。為數(shù)據(jù)選擇最優(yōu)存儲路徑時(shí),首先明確該數(shù)據(jù)所在的應(yīng)用,假設(shè)為Ak(1≤k≤l),為應(yīng)用Ak的數(shù)據(jù)選擇存儲系統(tǒng)Sp(1≤p≤m)、Dq(1≤q≤n),使得應(yīng)用執(zhí)行時(shí)間T最短,T可以表示成T(Ak,Sp,Dq),Sp、Dq即為應(yīng)用Ak中數(shù)據(jù)的最優(yōu)存儲路徑。通過求解方程式(1)可得Sp、Dq。
T(Ak,Sp,Dq)=min(T(Ak,S1,D1),…,T(Ak,S1,Dn),T(Ak,S2,D1),…,T(Ak,S2,Dn),T(Ak,Sm,D1),…,T(Ak,Sm,Dn))
(1)
方程左邊表示應(yīng)用Ak的數(shù)據(jù)在最優(yōu)存儲路徑下的執(zhí)行時(shí)間,右邊表示應(yīng)用Ak的數(shù)據(jù)在所有存儲路徑下最短的執(zhí)行時(shí)間。應(yīng)用執(zhí)行時(shí)間與應(yīng)用、存儲管理系統(tǒng)、存儲設(shè)備的部分特征有關(guān),選取重要特征作為計(jì)算執(zhí)行時(shí)間的依據(jù),用式(2)表示。
T(Ak,Sg,Dh)=FAk·Ia+FSg·Ig+FDh·Ih
(2)
式中:FAk、FSg、FDh分別表示應(yīng)用Ak、存儲管理系統(tǒng)Sg、存儲設(shè)備Dh的特征值向量;Ia,Ig,Ih分別表示各特征值向量對執(zhí)行時(shí)間的影響因子向量。應(yīng)用特征向量FAk包括讀寫比例、讀寫塊大小、局部性強(qiáng)弱等要素;存儲管理系統(tǒng)特征向量FSg包括讀寫訪問延遲、存儲容量、一致性強(qiáng)弱等要素;存儲設(shè)備特征向量FDh包括設(shè)備讀寫訪問延遲、吞吐量、存儲容量等要素。Ia、Ig、Ih可以通過在不同存儲管理系統(tǒng)和存儲設(shè)備組合的環(huán)境下運(yùn)行負(fù)載得到應(yīng)用執(zhí)行時(shí)間后,根據(jù)式(2)進(jìn)行估算。
根據(jù)不同應(yīng)用場景,提出兩種數(shù)據(jù)放置模式:靜態(tài)放置和動(dòng)態(tài)放置。
1)靜態(tài)放置是在系統(tǒng)運(yùn)行前就規(guī)劃好數(shù)據(jù)存儲路徑的放置策略。采用靜態(tài)放置策略時(shí),應(yīng)用、存儲管理系統(tǒng)、存儲設(shè)備的特征都根據(jù)經(jīng)驗(yàn)和參數(shù)文件確定,對應(yīng)用特征進(jìn)行識別時(shí),將各應(yīng)用視為一個(gè)整體,一旦為整個(gè)應(yīng)用規(guī)劃好了存儲路徑,該應(yīng)用產(chǎn)生的所有數(shù)據(jù)都按規(guī)劃的途徑存儲。每種應(yīng)用在各類存儲路徑下的執(zhí)行時(shí)間在運(yùn)行前根據(jù)式(2)計(jì)算,然后根據(jù)式(1),在系統(tǒng)運(yùn)行前為應(yīng)用選擇出存儲路徑。例如:應(yīng)用甲、應(yīng)用乙分別是在線事務(wù)處理和批處理應(yīng)用,基于以往對此類應(yīng)用特征的認(rèn)識以及各類存儲管理系統(tǒng)和存儲設(shè)備的特點(diǎn),為應(yīng)用甲規(guī)劃以下存儲路徑——關(guān)系型數(shù)據(jù)庫、SATA SSD,為應(yīng)用乙規(guī)劃以下存儲路徑——Key-Value存儲、HDD。
2)動(dòng)態(tài)放置是在系統(tǒng)運(yùn)行過程中規(guī)劃數(shù)據(jù)存儲路徑的放置策略。采用動(dòng)態(tài)放置策略時(shí),應(yīng)用特征根據(jù)應(yīng)用的歷史訪問記錄動(dòng)態(tài)分析識別,存儲管理系統(tǒng)和存儲設(shè)備特征根據(jù)系統(tǒng)實(shí)時(shí)狀態(tài)確定,然后通過式(2)和式(1)計(jì)算出存儲路徑。應(yīng)用、存儲管理系統(tǒng)和存儲設(shè)備的特征值在不同時(shí)段可能發(fā)生變化,根據(jù)式(1)和式(2)計(jì)算出的數(shù)據(jù)存儲路徑也相應(yīng)跟著變化。相比靜態(tài)放置,動(dòng)態(tài)放置實(shí)時(shí)感知系統(tǒng)運(yùn)行狀態(tài),對應(yīng)用的感知粒度更細(xì),能提高存儲路徑規(guī)劃的合理性,但其實(shí)現(xiàn)有一定的時(shí)空開銷,在實(shí)驗(yàn)部分將對其進(jìn)行比較。
元數(shù)據(jù)記錄表由一系列訪問請求存儲路徑的記錄組成,每條記錄包含三部分,分別是邏輯地址、存儲管理系統(tǒng)號和存儲設(shè)備號,其設(shè)計(jì)如圖3所示。
圖3 元數(shù)據(jù)設(shè)計(jì)Fig. 3 Meta-data design
為減少元數(shù)據(jù)開銷,采用兩種優(yōu)化方法:一是采用邏輯塊組減少元數(shù)據(jù)記錄表?xiàng)l目。在元數(shù)據(jù)記錄表中記錄邏輯塊組地址,而非各邏輯塊地址。根據(jù)設(shè)定的組大小,取邏輯塊地址的前x位(x=邏輯地址位數(shù)-log2(組大小))作為邏輯塊組地址。當(dāng)邏輯塊組確定好存儲路徑后,該組下的所有邏輯塊均采用該存儲路徑。二是采用索引加速元數(shù)據(jù)搜索。將元數(shù)據(jù)記錄表分為若干大小相同的子表,每個(gè)子表第一個(gè)表項(xiàng)的邏輯塊組地址作為索引表中的邏輯塊組起始地址,該子表自身地址作為元數(shù)據(jù)記錄表位置,將它們依次記錄在索引表中。根據(jù)邏輯塊組地址查找元數(shù)據(jù)記錄表時(shí)先查詢索引,確定元數(shù)據(jù)記錄子表后,再在子表中查詢。子表大小根據(jù)索引表可用空間大小確定,索引表可用空間越大,子表越小,查詢效率也越高。
數(shù)據(jù)放置策略需要感知存儲管理系統(tǒng)和存儲設(shè)備的狀態(tài),部分存儲管理系統(tǒng)和設(shè)備沒有相關(guān)接口,故采用仿真方法實(shí)現(xiàn)各類數(shù)據(jù)放置策略并進(jìn)行測試。對于存儲管理系統(tǒng)和存儲設(shè)備,根據(jù)官方參數(shù)文件對其性能進(jìn)行建模。測試負(fù)載來源于實(shí)際場景,主要包括查詢、更新、歸檔應(yīng)用,根據(jù)系統(tǒng)運(yùn)行特點(diǎn),選取三個(gè)時(shí)間段,分別截取負(fù)載記錄,并分析存儲設(shè)備訪問軌跡,特點(diǎn)如表3所示。
表3 測試負(fù)載類型及特點(diǎn)Tab. 3 Test workloads` types and characteristics
存儲管理系統(tǒng)從關(guān)系型數(shù)據(jù)庫和三類NoSQL存儲中分別選取了典型的一種,關(guān)系型數(shù)據(jù)庫性能來源于Oracle官方性能文檔[16];NoSQL存儲性能來源于試驗(yàn)測試報(bào)告[17-19],對其在相同配置、負(fù)載量下的性能進(jìn)行了分析,如表4所示。
表4 存儲管理系統(tǒng)性能參數(shù)Tab.4 Storage management systems performance data ms
存儲設(shè)備選取了SAS HDD、SAS SSD和NVMe SSD三類,根據(jù)官方參數(shù)文件[20-22],對其在相同配置、負(fù)載下的性能進(jìn)行了分析,如表5所示。
表5 存儲設(shè)備性能參數(shù)Tab.5 Storage devices performance data
實(shí)驗(yàn)測試比較了五種放置策略:Str.a、Str.b、Str.c是基準(zhǔn)測試策略,Str.d.static和Str.d.dynamic是本文提出的軟硬件協(xié)同數(shù)據(jù)放置策略,分別表示靜態(tài)放置和動(dòng)態(tài)放置。對于Str.d.static和Str.d.dynamic,從三種應(yīng)用、四種存儲管理系統(tǒng)和三種存儲設(shè)備中選取可量化的典型特征值,如表6所示。
表6 應(yīng)用、存儲管理系統(tǒng)和存儲設(shè)備所用的典型特征值Tab.6 Selected typical feature factors of applications, storage systems and devices
1)Str.a:基于混合存儲管理系統(tǒng)的數(shù)據(jù)放置策略,數(shù)據(jù)放置只考慮存儲管理系統(tǒng)類型和性能差異,對于存儲設(shè)備,按比例輪流分配,即圖1(a)所示策略。
2)Str.b:基于混合存儲設(shè)備的數(shù)據(jù)放置策略,數(shù)據(jù)放置只考慮存儲設(shè)備類型和性能差異,對于存儲管理系統(tǒng),按比例輪流分配,即圖1(b)所示策略。
3)Str.c:基于混合存儲管理系統(tǒng)和存儲設(shè)備的軟硬件獨(dú)立數(shù)據(jù)放置策略,數(shù)據(jù)放置需分兩次進(jìn)行,分別針對混合存儲管理系統(tǒng)和混合存儲設(shè)備,即圖1(c)所示策略。
4)Str.d.static:基于混合存儲管理系統(tǒng)和存儲設(shè)備的軟硬件協(xié)同數(shù)據(jù)放置策略,數(shù)據(jù)放置一次性完成,同時(shí)考慮混合存儲管理系統(tǒng)和混合存儲設(shè)備特點(diǎn),數(shù)據(jù)放置采用靜態(tài)放置。
5)Str.d.dynamic:與Str.d.static一樣,都是基于混合存儲管理系統(tǒng)和存儲設(shè)備的軟硬件協(xié)同數(shù)據(jù)放置策略,區(qū)別是數(shù)據(jù)放置策略采用動(dòng)態(tài)放置。
在執(zhí)行負(fù)載之前,需要對存儲管理系統(tǒng)加載數(shù)據(jù)。為了比較不同數(shù)據(jù)放置策略下存儲管理系統(tǒng)加載數(shù)據(jù)的性能,分別測試了10萬、100萬、500萬條數(shù)據(jù)下, 五種不同數(shù)據(jù)放置策略的數(shù)據(jù)加載時(shí)長,并以Str.a的加載時(shí)長為基礎(chǔ)進(jìn)行了標(biāo)準(zhǔn)化,如圖4所示。在五種數(shù)據(jù)放置策略中,Str.b的數(shù)據(jù)加載時(shí)間最長,Str.d.dynamic相比Str.c可以縮短近25%的加載時(shí)間。數(shù)據(jù)加載量從10萬條到100萬條時(shí),隨著加載量變大,Str.d的性能顯著提升,但加載量從100萬條到500萬條時(shí),性能提升不明顯。這是由于在數(shù)據(jù)量為10萬條時(shí),帶寬還有較大富余,而到100萬條時(shí),由于實(shí)驗(yàn)中網(wǎng)絡(luò)帶寬設(shè)置較低,Str.d帶來的性能改善受到了帶寬瓶頸的限制。在真實(shí)數(shù)據(jù)中心,網(wǎng)絡(luò)帶寬較高,性能提升不會受帶寬影響。
圖4 不同數(shù)據(jù)量下五種數(shù)據(jù)放置策略數(shù)據(jù)加載時(shí)間Fig.4 Data loading time of 5 data placement strategies for different loading volume
為了比較不同數(shù)據(jù)放置策略的性能,測試了五種不同數(shù)據(jù)放置策略在加載10萬條數(shù)據(jù)記錄后執(zhí)行三類負(fù)載的執(zhí)行時(shí)間,并以Str.a的執(zhí)行時(shí)間為基礎(chǔ)進(jìn)行了標(biāo)準(zhǔn)化,如圖5所示。三類負(fù)載下,Str.d.dynamic都具有最短的執(zhí)行時(shí)間,相比Str.a,最大可縮短近30%;相比Str.d.static, Str.d.dynamic的執(zhí)行時(shí)間可縮短約10%。
圖5 五種數(shù)據(jù)放置策略執(zhí)行三類負(fù)載的時(shí)間Fig.5 Execution time of 5 data placement strategies under 3 kinds of workloads
本文提出的軟硬件協(xié)同數(shù)據(jù)放置策略的空間開銷主要是元數(shù)據(jù)所用空間,時(shí)間開銷主要是查詢元數(shù)據(jù)記錄表所用時(shí)間。靜態(tài)放置策略的元數(shù)據(jù)記錄表大小只與應(yīng)用個(gè)數(shù)、數(shù)據(jù)存儲管理系統(tǒng)個(gè)數(shù)和存儲設(shè)備個(gè)數(shù)相關(guān),由于應(yīng)用、存儲管理系統(tǒng)和存儲設(shè)備個(gè)數(shù)通常都不大,相比軟硬獨(dú)立設(shè)計(jì)的數(shù)據(jù)放置策略,其時(shí)空開銷可以忽略。動(dòng)態(tài)數(shù)據(jù)放置策略的元數(shù)據(jù)包括索引和元數(shù)據(jù)記錄表兩部分。元數(shù)據(jù)記錄表每條記錄大小為10 B(LBGA:8 B,MSN:1 B,DSN:1 B),索引表每條記錄的大小為9 B(LBGAI:1 B,MRTL:1 B)。若邏輯塊組大小設(shè)置為16 KB,對于1 TB的數(shù)據(jù)量,所需元數(shù)據(jù)記錄表大小為640 MB,索引表大小為6.4 MB。由于元數(shù)據(jù)存儲在內(nèi)存中,相比I/O訪問,其時(shí)間開銷可以忽略[23]。
面向大數(shù)據(jù)應(yīng)用,針對多存儲系統(tǒng)和多存儲設(shè)備并存的混合存儲架構(gòu)提出了軟硬協(xié)同的數(shù)據(jù)放置策略,并根據(jù)應(yīng)用需求設(shè)計(jì)了靜態(tài)放置和動(dòng)態(tài)放置兩種模式。實(shí)驗(yàn)結(jié)果表明,軟硬協(xié)同的數(shù)據(jù)放置策略可以提升數(shù)據(jù)訪問性能,動(dòng)態(tài)放置在有一定空間開銷的情況下性能提升更為顯著。
國防科技大學(xué)學(xué)報(bào)2020年2期