• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于非易失性存儲(chǔ)器的存儲(chǔ)引擎性能優(yōu)化

      2022-05-28 07:54:42王海濤李戰(zhàn)懷趙曉南
      集成技術(shù) 2022年3期
      關(guān)鍵詞:存儲(chǔ)設(shè)備存儲(chǔ)系統(tǒng)字節(jié)

      王海濤 李戰(zhàn)懷 張 曉* 趙曉南

      1(西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 西安 710129)

      2(西北工業(yè)大學(xué)大數(shù)據(jù)存儲(chǔ)與管理工業(yè)和信息化部重點(diǎn)實(shí)驗(yàn)室 西安 710129)

      3(空天地海一體化大數(shù)據(jù)應(yīng)用技術(shù)國(guó)家工程實(shí)驗(yàn)室 西安 710072)

      1 引 言

      目前,大數(shù)據(jù)及其分析成為了科學(xué)研究和商業(yè)運(yùn)行的核心[1-5]。然而,在過去十年,互聯(lián)網(wǎng)平均每秒產(chǎn)生的數(shù)據(jù)量超過 30 TB,且增長(zhǎng)速度持續(xù)加快[6-7],這對(duì)大數(shù)據(jù)存儲(chǔ)系統(tǒng)造成了巨大的壓力。為了應(yīng)對(duì)該挑戰(zhàn),分布式存儲(chǔ)系統(tǒng)將數(shù)據(jù)平均分布在多個(gè)節(jié)點(diǎn)上,利用并行的數(shù)據(jù)訪問,擴(kuò)展存儲(chǔ)系統(tǒng)的容量及性能,但數(shù)據(jù)訪問量的持續(xù)增加仍導(dǎo)致存儲(chǔ)系統(tǒng)的性能壓力越來越大。為了進(jìn)一步提升分布式存儲(chǔ)系統(tǒng)的性能,需要減小節(jié)點(diǎn)間的數(shù)據(jù)傳輸開銷,提高節(jié)點(diǎn)上的數(shù)據(jù)存儲(chǔ)性能。隨著高速網(wǎng)絡(luò)在存儲(chǔ)集群中的應(yīng)用,數(shù)據(jù)傳輸開銷可大幅降低,因此,提高節(jié)點(diǎn)上的數(shù)據(jù)存儲(chǔ)性能成為關(guān)鍵。

      分布式存儲(chǔ)系統(tǒng)一般基于通用文件系統(tǒng)(如Ext4)構(gòu)建存儲(chǔ)引擎,負(fù)責(zé)節(jié)點(diǎn)上的數(shù)據(jù)存儲(chǔ)與管理,其優(yōu)勢(shì)是能夠節(jié)約開發(fā)成本,保持較強(qiáng)的通用性。為了保證數(shù)據(jù)一致性,存儲(chǔ)引擎在進(jìn)行寫入操作時(shí),需要先將數(shù)據(jù)寫入預(yù)寫日志(Write Ahead Log,WAL)文件,并將其持久化到存儲(chǔ)設(shè)備層,然后再將數(shù)據(jù)更新到目標(biāo)文件中。而本地文件系統(tǒng)也會(huì)利用自身的日志機(jī)制保證數(shù)據(jù)一致性,因此造成了雙重日志(Journaling of Journal)[8]的問題,引起了數(shù)據(jù)寫放大,進(jìn)而降低了系統(tǒng)的寫性能。

      高性能非易失性存儲(chǔ)器(No n-Volatile Memory,NVM)的出現(xiàn)為存儲(chǔ)引擎的性能優(yōu)化提供了新的機(jī)會(huì)。NVM 也被稱為存儲(chǔ)級(jí)內(nèi)存(Storage Class Memory,SCM)或持久性內(nèi)存(Persistent Memory,PM),其具有類似動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(Dynamic Random Access Memory,DRAM)的字節(jié)尋址能力與類似閃存的數(shù)據(jù)持久性,有望彌合計(jì)算機(jī)內(nèi)外存之間的性能鴻溝[9-11]。近年來,工業(yè)界和學(xué)術(shù)界對(duì)多種 NVM 進(jìn)行研究,包括相變存儲(chǔ)器(Phase Change Memory,PCM)、磁性隨機(jī)訪問存儲(chǔ)器(Magnetic Random Access Memory,MRAM)、自旋傳遞扭矩MRAM(Spin Transfer Torque MRAM,STTMRAM)和電阻隨機(jī)訪問存儲(chǔ)器(Resistive Random Access Memory,ReRAM)等[12]。由于NVM 具有極大地提升存儲(chǔ)系統(tǒng)性能的潛力,因此目前有大量工作研究如何在現(xiàn)有系統(tǒng)中利用NVM 進(jìn)行性能優(yōu)化,如結(jié)合 NVM 特性優(yōu)化傳統(tǒng)索引結(jié)構(gòu)[13],提升物聯(lián)網(wǎng)終端設(shè)備的存儲(chǔ)性能[14];作為分布式文件系統(tǒng)的緩存擴(kuò)展[15],以及配合 DRAM 和固態(tài)硬盤(Solid State Disk,SSD)構(gòu)建混合存儲(chǔ)架構(gòu),優(yōu)化系統(tǒng)整體性能[16-18]。

      在不改變現(xiàn)有系統(tǒng)的前提下,可將存儲(chǔ)引擎底層的存儲(chǔ)設(shè)備替換為 NVM,從而提高系統(tǒng)的讀寫性能。但是,對(duì)于分布式存儲(chǔ)系統(tǒng)而言,上層應(yīng)用的數(shù)據(jù)需要經(jīng)過元數(shù)據(jù)查詢、數(shù)據(jù)分發(fā)以及存儲(chǔ)引擎的處理才能持久化到底層存儲(chǔ)設(shè)備,這些軟件層次構(gòu)成了系統(tǒng)整體的 I/O 軟件棧。然而,當(dāng)上層數(shù)據(jù)到達(dá)存儲(chǔ)引擎后,需要先在存儲(chǔ)引擎的緩存中進(jìn)行處理,然后通過文件系統(tǒng)以及塊設(shè)備接口層等軟件棧逐層傳輸和處理,最后才能到達(dá)存儲(chǔ)設(shè)備。數(shù)據(jù)在上述 I/O 路徑上的傳輸和處理會(huì)增加延遲,本文稱其為 I/O 軟件棧開銷。在傳統(tǒng)存儲(chǔ)引擎中,除 I/O 軟件棧開銷外,I/O 路徑中的數(shù)據(jù)寫放大也會(huì)限制 NVM 設(shè)備的性能發(fā)揮,因此,簡(jiǎn)單地替換底層存儲(chǔ)設(shè)備并不能有效提高系統(tǒng)存儲(chǔ)性能。如被業(yè)界廣泛使用的大數(shù)據(jù)存儲(chǔ)系統(tǒng) Ceph,其存儲(chǔ)引擎的 I/O 軟件棧較長(zhǎng),且寫入流程會(huì)造成較為嚴(yán)重的數(shù)據(jù)寫放大[19-20],這會(huì)進(jìn)一步增加寫操作延遲,限制存儲(chǔ)性能的擴(kuò)展。

      針對(duì)上述問題,本文以 Ceph 為平臺(tái),對(duì)存儲(chǔ)引擎的主要性能問題進(jìn)行分析,并提出了一種基于 NVM 的新型存儲(chǔ)引擎 NVMStore。NVMStore 的主要?jiǎng)?chuàng)新點(diǎn)是利用 NVM 的字節(jié)可尋址與數(shù)據(jù)持久性,通過內(nèi)存直接訪問的方式讀寫 NVM 設(shè)備,并對(duì)數(shù)據(jù)讀寫流程進(jìn)行改進(jìn),避免了數(shù)據(jù)在緩存中的拷貝以及小塊數(shù)據(jù)更新造成的“讀-改-寫”操作,減小了 I/O 軟件棧開銷,從而提升了存儲(chǔ)性能。

      2 Ceph 存儲(chǔ)引擎分析

      目前,Ceph 官方提供了 FileStore 和BlueStore 兩種成熟的存儲(chǔ)引擎,以及正在開發(fā)的一種新存儲(chǔ)引擎 SeaStore,該引擎主要面向高速的 SSD 設(shè)備以及高速網(wǎng)絡(luò),尚未正式發(fā)布?,F(xiàn)有關(guān)于 Ceph 的研究工作主要是在特定場(chǎng)景下的集群配置參數(shù)優(yōu)化,使用 SSD 等快速存儲(chǔ)設(shè)備來提高集群性能[21],優(yōu)化集群的分布式鎖管理機(jī)制[22]以及故障恢復(fù)流程[23],或基于開放通道 SSD 的特性設(shè)計(jì)新型存儲(chǔ)引擎以提升存儲(chǔ)性能[24],但是尚未出現(xiàn)基于 NVM 的 Ceph 存儲(chǔ)引擎。對(duì)于 Ceph 存儲(chǔ)引擎的性能問題,相關(guān)文獻(xiàn)已進(jìn)行較為充分的研究[19,24],本節(jié)在此基礎(chǔ)上作簡(jiǎn)要分析。

      對(duì)于 Ceph 的 FileStore,每次數(shù)據(jù)寫操作會(huì)轉(zhuǎn)換為一次寫日志和一次寫對(duì)象,因此,實(shí)際向磁盤寫入的數(shù)據(jù)量至少為用戶寫入數(shù)據(jù)的兩倍。加之對(duì)象數(shù)據(jù)更新引起的底層文件系統(tǒng)更新,會(huì)使實(shí)際的寫放大更嚴(yán)重,從而造成大幅度的性能退化。此外,F(xiàn)ileStore 的日志機(jī)制基于本地文件系統(tǒng)實(shí)現(xiàn),然而,本地文件系統(tǒng)也具有日志機(jī)制,這兩層日志功能存在一定程度的重合,加劇了數(shù)據(jù)寫放大。在這種情況下,F(xiàn)ileStore的數(shù)據(jù)寫放大(即實(shí)際寫入底層存儲(chǔ)設(shè)備的數(shù)據(jù)量與用戶寫入操作原始數(shù)據(jù)量之間的比值)可達(dá) 14.56,導(dǎo)致了嚴(yán)重的性能退化[19]。BlueStore可有效減小數(shù)據(jù)寫放大,在很大程度上解決FileStore 的雙重日志問題,因而成為 Ceph 的默認(rèn)存儲(chǔ)引擎,70% 的用戶選擇在生產(chǎn)環(huán)境中使用BlueStore[20]。

      如圖 1 所示,在用戶態(tài)下,BlueStore 使用Linux 異步 I/O 機(jī)制直接操作塊設(shè)備,避免了通用文件系統(tǒng)的復(fù)雜軟件棧帶來的延遲,利用鍵值存儲(chǔ)系統(tǒng) RocksDB 管理元數(shù)據(jù)和小塊數(shù)據(jù),并使用一個(gè)簡(jiǎn)化的用戶態(tài)文件系統(tǒng) BlueFS 管理RocksDB 的數(shù)據(jù)。BlueFS 使用 Linux 直接 I/O 接口管理塊設(shè)備,只支持 RocksDB 需要的讀寫接口,去除了通用文件系統(tǒng)中的復(fù)雜功能和屬性,進(jìn)一步減少了文件系統(tǒng)帶來的性能開銷。

      圖1 BlueStore 架構(gòu)以及寫入流程Fig. 1 The architecture and write process of BlueStore

      BlueStore 針對(duì)不同存儲(chǔ)設(shè)備設(shè)置了不同的空間分配單元(即 bluestore_min_alloc_size 配置項(xiàng)),對(duì)于旋轉(zhuǎn)型存儲(chǔ)設(shè)備(如 HDD)默認(rèn)使用64 KB 的分配單元,以發(fā)揮其順序訪問性能優(yōu)勢(shì)。對(duì)于非旋轉(zhuǎn)型存儲(chǔ)設(shè)備(如 SDD),則默認(rèn)使用 4 KB 的分配單元,主要原因是此類設(shè)備的隨機(jī)訪問性能與順序訪問性能的差距較小,設(shè)置4 KB 的分配單元即可降低小塊數(shù)據(jù)更新時(shí)的“讀-改-寫”操作負(fù)載,進(jìn)而提升存儲(chǔ)性能。設(shè)備上的讀寫操作通過分配單元進(jìn)行切分,從而確定需要操作的數(shù)據(jù)區(qū)域。當(dāng) BlueStore 接收到用戶的寫操作請(qǐng)求時(shí),首先根據(jù)目標(biāo)對(duì)象的元數(shù)據(jù)定位目標(biāo)區(qū)域,然后再針對(duì)各個(gè)區(qū)域進(jìn)行寫入操作。在 BlueStore 中,寫操作整體上可分為兩種:

      (1)新寫:當(dāng)寫入數(shù)據(jù)的目標(biāo)位置是新分配的空間時(shí),直接在新空間中寫入數(shù)據(jù)(步驟②~③),然后通過 RocksDB 更新相應(yīng)的元數(shù)據(jù)(步驟④),寫操作完成。由于寫操作不覆蓋已有數(shù)據(jù),因此,即使在寫入過程中發(fā)生崩潰,也不會(huì)破壞數(shù)據(jù)一致性。

      (2)覆蓋寫:若寫入的數(shù)據(jù)量大于分配單元,則首先將其分割,將達(dá)到分配單元的部分按照新寫方式處理,未達(dá)到分配單元的部分則寫入RocksDB 中(步驟④),完成用戶寫操作。最后,RocksDB 通過異步 I/O 的方式把數(shù)據(jù)寫入到目標(biāo)位置,并更新相應(yīng)的元數(shù)據(jù)(步驟⑥~⑦),由RocksDB 的事務(wù)機(jī)制保證數(shù)據(jù)一致性。

      由上述寫流程可知,BlueStore 基本解決了由 FileStore 日志造成的數(shù)據(jù)寫放大問題。首先,BlueStore 繞開了通用文件系統(tǒng),直接管理塊設(shè)備,因此,不受通用文件系統(tǒng)日志的影響。其次,新寫操作不需使用日志,只需一次數(shù)據(jù)落盤,一次元數(shù)據(jù)通過 RocksDB 事務(wù)提交落盤。最后,小塊的覆蓋寫操作可通過 RocksDB 合并到日志中進(jìn)行提交,日志提交完成即可通知用戶寫完成,再將數(shù)據(jù)寫入到目標(biāo)位置。經(jīng)上述優(yōu)化后,BlueStore 減小了 FileStore 的數(shù)據(jù)寫放大,提高了存儲(chǔ)引擎層的性能。

      但是,當(dāng) BlueStore 使用 RocksDB 處理小塊數(shù)據(jù)(包括元數(shù)據(jù))時(shí),RocksDB 的日志機(jī)制造成了較為嚴(yán)重的寫放大,如進(jìn)行 4 KB 的隨機(jī)寫時(shí),寫放大最高可達(dá) 50 倍[19]。此外,BlueStore與 FileStore 都是通過 Linux 系統(tǒng)的通用塊接口來訪問存儲(chǔ)設(shè)備,導(dǎo)致了較長(zhǎng)的 I/O 軟件棧。特別是對(duì)于字節(jié)可尋址設(shè)備(如 NVM)而言,冗長(zhǎng)的I/O 軟件棧可能會(huì)成為其性能瓶頸[25]。據(jù)英特爾在 2018 年閃存峰會(huì)上公布的測(cè)試數(shù)據(jù),當(dāng)使用NVM 作為存儲(chǔ)設(shè)備時(shí),軟件棧造成的延遲可達(dá)總延遲的 90%。因此,需進(jìn)一步研究如何優(yōu)化存儲(chǔ)引擎的架構(gòu)以及 I/O 軟件棧,配合底層存儲(chǔ)設(shè)備的特性來提升讀寫性能。

      3 新型存儲(chǔ)引擎設(shè)計(jì)與實(shí)現(xiàn)

      本節(jié)提出了一種基于 NVM 的新型存儲(chǔ)引擎NVMStore——通過內(nèi)存映射而非傳統(tǒng)塊接口的方式訪問 NVM 設(shè)備,并根據(jù) NVM 的特性優(yōu)化數(shù)據(jù)讀寫流程,從而減小數(shù)據(jù)讀寫放大以及 I/O軟件棧開銷,進(jìn)一步提高讀寫性能。

      3.1 NVMStore 架構(gòu)

      圖 2 為 NVMStore 的架構(gòu)以及存儲(chǔ)結(jié)構(gòu)。與使用通用塊接口的 BlueStore 相比,NVMStore具有更短的 I/O 路徑,并且通過內(nèi)存直接訪問(Direct Access,DAX)的方式可繞過系統(tǒng)緩存直接讀寫 NVM 設(shè)備,利用緩存刷新指令(如clflush)將 CPU 緩存行中的數(shù)據(jù)直接持久化到NVM 中,避免數(shù)據(jù)在內(nèi)存中的重復(fù)拷貝,從而減小軟件棧的開銷。DAX 的核心思想是繞過操作系統(tǒng)的頁緩存直接訪問設(shè)備,支持 DAX的文件系統(tǒng)(如 Ext4)只提供內(nèi)存映射接口,具體的數(shù)據(jù)則由 DAX 接口之上的用戶程序來管理。用戶程序通過定制化的數(shù)據(jù)結(jié)構(gòu)和讀寫流程來管理 NVM 的空間和數(shù)據(jù),不會(huì)由于繞過傳統(tǒng)文件系統(tǒng)而影響其功能,而且避免了傳統(tǒng)文件系統(tǒng)引入的性能開銷,可獲得一定的性能提升。

      圖2 NVMStore 架構(gòu)以及存儲(chǔ)結(jié)構(gòu)Fig. 2 The architecture and storage structure of NVMStore

      將 NVM 作為底層存儲(chǔ)設(shè)備的主要挑戰(zhàn)是原子粒度的不匹配,即 CPU 和 NVM 之間的數(shù)據(jù)傳輸粒度是 CPU 緩存行(通常為 64 字節(jié)),而NVM 設(shè)備的讀寫單元是內(nèi)存數(shù)據(jù)位寬(通常為8 字節(jié))。在 NVM 上,大于 8 字節(jié)的數(shù)據(jù)寫入會(huì)被分割為多個(gè)寫入單元,因此,若在數(shù)據(jù)覆蓋寫的過程中系統(tǒng)崩潰,則可能造成只有部分新數(shù)據(jù)寫入成功,從而破壞數(shù)據(jù)一致性。針對(duì)該問題,NVMStore 構(gòu)建了一個(gè)事務(wù)管理模塊,通過事務(wù)的形式進(jìn)行覆蓋寫操作,當(dāng)系統(tǒng)發(fā)生崩潰重啟時(shí),通過重放日志中的有效事務(wù)記錄來恢復(fù)數(shù)據(jù)一致性(詳見第 3.3 節(jié))。

      如圖 2 所示,NVMStore 將其管理的 NVM存儲(chǔ)空間分為超級(jí)塊(4 KB)、元數(shù)據(jù)塊(4 MB)、數(shù)據(jù)區(qū)以及日志塊(4 MB)。其中,超級(jí)塊位于空間起始位置,用于存放系統(tǒng)標(biāo)簽、元數(shù)據(jù)塊地址以及日志塊地址等系統(tǒng)元數(shù)據(jù)。超級(jí)塊之后是第一個(gè)元數(shù)據(jù)塊,用于記錄系統(tǒng)中各個(gè)對(duì)象的ID 以及對(duì)應(yīng)的數(shù)據(jù)區(qū)域(即數(shù)據(jù)在對(duì)象中的邏輯偏移、數(shù)據(jù)長(zhǎng)度以及對(duì)應(yīng)到存儲(chǔ)設(shè)備上的物理偏移等)。元數(shù)據(jù)塊以 4 MB 為單位進(jìn)行分配,當(dāng)一個(gè)元數(shù)據(jù)塊寫滿時(shí),可在數(shù)據(jù)區(qū)中申請(qǐng)新塊,并在超級(jí)塊中進(jìn)行相應(yīng)的記錄。由于元數(shù)據(jù)塊的大小是固定的,因此當(dāng)新增一個(gè)元數(shù)據(jù)塊時(shí),只需在超級(jí)塊的元數(shù)據(jù)列表中新增一個(gè) 8 字節(jié)指針,指針指向新增元數(shù)據(jù)塊的起始地址,該架構(gòu)利用NVM 的 8 字節(jié)原子性保證了新增元數(shù)據(jù)塊操作的原子性。日志塊以 4 MB 為單位進(jìn)行分配,用于支持事務(wù)管理模塊。簡(jiǎn)而言之,事務(wù)數(shù)據(jù)先在寫入日志塊中追加進(jìn)行持久化存儲(chǔ),然后再將更新的數(shù)據(jù)寫入目標(biāo)空間中,從而保證系統(tǒng)的崩潰一致性。當(dāng)需要新增日志塊時(shí),先從數(shù)據(jù)區(qū)分配一塊空間,然后在超級(jí)塊的日志列表中新增一條記錄,方法與元數(shù)據(jù)塊相同。不同的是,當(dāng)日志中的事務(wù)成功提交到系統(tǒng),將其數(shù)據(jù)持久化到設(shè)備后,相應(yīng)的日志即可標(biāo)記為廢棄(廢棄標(biāo)記為 8 字節(jié),保證原子性),日志占用的空間即可回收。

      NVMStore 不改變現(xiàn)有的存儲(chǔ)服務(wù)接口,其底層的存儲(chǔ)流程對(duì)用戶是透明的,不會(huì)影響上層用戶的使用,因此,不需修改用戶程序便可使用新的存儲(chǔ)引擎來提高存儲(chǔ)性能。NVMStore 是基于 Ceph 大數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)的存儲(chǔ)引擎,因此只支持 Ceph 存儲(chǔ)后端需要的功能,不提供服務(wù)給通用的文件系統(tǒng)。在實(shí)現(xiàn) Ceph 后端存儲(chǔ)功能的前提下,NVMStore 的設(shè)計(jì)簡(jiǎn)單,便于實(shí)現(xiàn)和維護(hù)。

      3.2 數(shù)據(jù)寫入流程

      NVMStore 讀取流程與寫入流程類似,但若目標(biāo)數(shù)據(jù)在 CPU 緩存中命中,則無須訪問 NVM設(shè)備。NVMStore 與 BlueStore 的寫操作流程類似,主要區(qū)別在于 NVMStore 通過內(nèi)存接口訪問 NVM 設(shè)備,且利用 NVM 的字節(jié)可尋址特性對(duì)數(shù)據(jù)寫入流程進(jìn)行優(yōu)化。當(dāng)用戶寫操作到達(dá)NVMStore 時(shí),NVMStore 首先根據(jù)對(duì)象元數(shù)據(jù)找到與寫入數(shù)據(jù)塊對(duì)應(yīng)的存儲(chǔ)區(qū)域,然后按照存儲(chǔ)空間分配單元(默認(rèn)等于內(nèi)存頁面大小,即 4 KB)切分寫操作,再根據(jù)寫操作的類型執(zhí)行不同的寫入流程,總體上也可分為新寫和覆蓋寫兩大類型,具體分析如下:

      (1)新寫

      對(duì)于新寫的數(shù)據(jù)塊,直接在設(shè)備上分配新存儲(chǔ)單元并寫入數(shù)據(jù),然后利用緩存刷新指令將數(shù)據(jù)持久化到 NVM 設(shè)備,最后通過事務(wù)管理模塊更新相應(yīng)的元數(shù)據(jù),完成寫操作。

      BlueStore 使用傳統(tǒng)的塊接口寫入數(shù)據(jù),為了與設(shè)備上的塊單元對(duì)齊,需要進(jìn)行數(shù)據(jù)補(bǔ) 0 操作,從而造成一定的數(shù)據(jù)寫放大。而 NVMStore利用 NVM 的字節(jié)可尋址特性,無須額外的數(shù)據(jù)補(bǔ) 0 操作,可直接將小塊數(shù)據(jù)寫入新空間。因此,NVMStore 的寫入流程更簡(jiǎn)單,且減小了數(shù)據(jù)寫放大。

      BlueStore 通過 RocksDB 寫入元數(shù)據(jù),而RocksDB 具有較長(zhǎng)的 I/O 軟件棧,其數(shù)據(jù)壓縮流程會(huì)造成嚴(yán)重的寫放大。NVMStore 則使用一個(gè)簡(jiǎn)單的事務(wù)管理模塊更新元數(shù)據(jù),通過內(nèi)存接口將數(shù)據(jù)持久化到 NVM 設(shè)備,避免了 RocksDB 的多層數(shù)據(jù)壓縮,從而減小了數(shù)據(jù)寫放大,并縮短了 I/O 軟件棧。

      (2)覆蓋寫

      如圖 3 所示,NVMStore 在寫入對(duì)象 A 時(shí),首先將寫操作按照分配單元進(jìn)行切分,對(duì)達(dá)到分配單元的整塊覆蓋寫,將其直接寫入新分配的空間(步驟①)。對(duì)不足分配單元的新寫(稱為部分新寫),則直接分配一個(gè)新的單元并寫入(步驟②)。對(duì)不足一塊的覆蓋寫(稱為部分覆蓋寫),則先將數(shù)據(jù)寫入日志塊,并持久化到 NVM 設(shè)備(步驟③),然后將數(shù)據(jù)更新到目標(biāo)區(qū)域(步驟④),最后以事務(wù)的方式更新對(duì)象 A 的元數(shù)據(jù),完成寫操作(步驟⑤)。

      圖3 覆蓋寫操作示例Fig. 3 Overwrite example

      與 BlueStore 的寫入流程相比,NVMStore 的寫入流程更為簡(jiǎn)單。且由于 NVM 具有字節(jié)可尋址特性,NVMStore 將數(shù)據(jù)更新到目標(biāo)區(qū)域時(shí),不必對(duì)目標(biāo)數(shù)據(jù)塊進(jìn)行“讀-改-寫”操作,就可直接將數(shù)據(jù)寫入指定位置(如步驟②和④),因此,能減小數(shù)據(jù)讀寫放大,特別是小塊數(shù)據(jù)操作。由于 CPU 訪問 NVM 的粒度為緩存行,所以在讀取小塊數(shù)據(jù)時(shí),會(huì)直接讀取數(shù)據(jù)所在的整個(gè)緩存行空間,造成一定程度的數(shù)據(jù)讀放大。但與傳統(tǒng)存儲(chǔ)設(shè)備上的預(yù)讀操作一樣,這種數(shù)據(jù)預(yù)讀操作可利用數(shù)據(jù)訪問的空間局部性,提高緩存命中率,減小訪問存儲(chǔ)設(shè)備的頻率,通常能夠有效提升用戶的數(shù)據(jù)讀取性能。為了更好地發(fā)揮緩存性能,NVMStore 為對(duì)象分配新空間時(shí),會(huì)優(yōu)先選擇其現(xiàn)有空間附近的空閑空間,從而提高對(duì)象數(shù)據(jù)訪問的空間局部性。

      綜上所述,與 BlueStore 相比,NVMStore 減小的性能開銷主要包含兩部分:一是通過 DAX的方式訪問設(shè)備,數(shù)據(jù)直接從 CPU 寫入 NVM,避免了緩存中的拷貝開銷;二是 NVMStore 通過內(nèi)存接口讀寫數(shù)據(jù),當(dāng)寫入小塊數(shù)據(jù)時(shí),避免了由塊接口的“讀-改-寫”操作導(dǎo)致的開銷。

      3.3 崩潰一致性保證

      NVMStore 通過事務(wù)管理模塊保證系統(tǒng)中數(shù)據(jù)的崩潰一致性。對(duì)于整塊覆蓋寫或新寫(包括部分新寫)操作,NVMStore 直接分配新的空間寫入數(shù)據(jù),當(dāng)數(shù)據(jù)持久化成功后,再通過事務(wù)管理模塊更新元數(shù)據(jù)。在此過程中,如果系統(tǒng)崩潰導(dǎo)致數(shù)據(jù)持久化失敗,那么由于原有的數(shù)據(jù)并沒有受到破壞,不影響數(shù)據(jù)一致性。如果數(shù)據(jù)持久化成功,但元數(shù)據(jù)更新失敗,那么元數(shù)據(jù)依然指向原有的數(shù)據(jù)塊(由事務(wù)管理模塊保證),也不會(huì)破壞數(shù)據(jù)一致性。

      對(duì)于元數(shù)據(jù)的更新以及部分覆蓋寫操作,事務(wù)管理模塊利用日志機(jī)制保證其數(shù)據(jù)的一致性。圖 4 為事務(wù)管理模塊的寫入流程,如果寫操作的數(shù)據(jù)不大于 8 字節(jié)(如設(shè)置日志塊廢棄標(biāo)記),那么可直接將其寫入目標(biāo)區(qū)域(步驟①),然后將目標(biāo)數(shù)據(jù)持久化到 NVM 設(shè)備(步驟⑧),利用NVM 設(shè)備本身的 8 字節(jié)原子性保證寫入操作的原子性,只需一次持久化操作。如果寫操作的數(shù)據(jù)量大于 8 字節(jié),那么 NVM 本身的硬件特性將無法保證寫操作的原子性,因此需要通過日志機(jī)制來支持?jǐn)?shù)據(jù)一致性,需進(jìn)行兩次持久化操作。

      圖4 事務(wù)管理模塊寫入流程Fig. 4 The write process of transaction management module

      當(dāng)寫操作的數(shù)據(jù)量大于 8 字節(jié)時(shí),事務(wù)管理模塊首先將寫操作編碼為特定格式的事務(wù)記錄(步驟②,編碼數(shù)據(jù)包括寫操作的目標(biāo)地址、數(shù)據(jù)量、數(shù)據(jù)以及校驗(yàn)碼等),然后判斷目前的日志塊是否有足夠的空閑空間寫入當(dāng)前事務(wù)記錄(步驟③)。若當(dāng)前日志塊中有足夠的空閑空間,則直接寫入事務(wù)記錄并將其持久化(步驟⑤~⑥);否則分配一個(gè)新的日志塊(步驟④),將事務(wù)記錄追加到日志塊中(步驟⑤),然后將其持久化(步驟⑥)。在此之后,更新目標(biāo)數(shù)據(jù)并持久化(步驟⑦~⑧),完成寫入操作。其中,步驟⑥和⑧分別用于持久化目標(biāo)數(shù)據(jù)和日志數(shù)據(jù),二者利用 NVM 的內(nèi)存操作接口,通過緩存刷新指令(如 clflush),從 CPU 緩存中將數(shù)據(jù)直接寫入設(shè)備中。

      在此過程中,若在寫入日志完成前系統(tǒng)崩潰,則認(rèn)為本次操作失敗,由于原有的數(shù)據(jù)尚未更新,因此不破壞數(shù)據(jù)一致性。若寫入日志成功,但是在更新目標(biāo)數(shù)據(jù)時(shí)系統(tǒng)崩潰,則在重啟時(shí)掃描最后更新的日志塊,重放其中的有效事務(wù)記錄,從而恢復(fù)數(shù)據(jù)一致性。綜上所述,NVMStore 通過事務(wù)管理模塊保證了系統(tǒng)的崩潰一致性。

      4 實(shí)驗(yàn)評(píng)估與分析

      本文結(jié)合英特爾開源的 N V M 開發(fā)庫PMDK①(Persistent Memory Development Kit),以及 Ceph 的對(duì)象存儲(chǔ)(Object Store)抽象接口實(shí)現(xiàn) NVMStore。具體實(shí)現(xiàn)過程中,Ceph 源碼是 14.2.8 版,PMDK 是 1.10 版,NVM 設(shè)備是Intel Optane DC Persistent Memory Module(簡(jiǎn)稱“Optane”)。

      Optane 為上層應(yīng)用提供兩種訪問模式——內(nèi)存模式(Memory Mode)和應(yīng)用直接訪問模式(App Direct Mode)。在內(nèi)存模式下,CPU 和操作系統(tǒng)忽略 Optane 的數(shù)據(jù)持久性,而將其視為 DRAM空間的擴(kuò)展,從而提高系統(tǒng)的內(nèi)存容量。在應(yīng)用直接訪問模式下,CPU 和操作系統(tǒng)將 Optane 視為獨(dú)立的存儲(chǔ)設(shè)備,用戶可跳過 DRAM 緩存,通過內(nèi)存接口直接訪問,在實(shí)現(xiàn)數(shù)據(jù)持久性存儲(chǔ)的同時(shí),避免了數(shù)據(jù)在 DRAM 中的拷貝開銷。為了實(shí)現(xiàn)數(shù)據(jù)持久性存儲(chǔ)和減小 I/O 軟件棧的開銷,NVMStore 采用了直接訪問模式來讀寫Optane。

      由于目前成熟的 Ceph 的后端存儲(chǔ)引擎只有FileStore 和 BlueStore,尚未發(fā)布基于 NVM 的存儲(chǔ)引擎,因此,本實(shí)驗(yàn)對(duì)使用 NVM 作為存儲(chǔ)設(shè)備的 FileStore、BlueStore 和 NVMStore 的讀寫性能進(jìn)行了對(duì)比。

      4.1 實(shí)驗(yàn)配置與評(píng)估方法

      理論上,NVM 具有遠(yuǎn)超 HDD 的讀寫速度,特別是在小塊數(shù)據(jù)的隨機(jī)讀寫方面,因此利用 NVM 替換存儲(chǔ)系統(tǒng)中的 HDD,能夠提高存儲(chǔ)系統(tǒng)的性能。為了驗(yàn)證該理論,本實(shí)驗(yàn)對(duì)HDD 與 NVM 設(shè)備的讀寫性能進(jìn)行比較,得出二者的性能基準(zhǔn)。并將 NVM 替換 HDD 設(shè)備后,對(duì) FileStore 和 BlueStore 的性能提升效果進(jìn)行對(duì)比,驗(yàn)證了本文優(yōu)化方法的有效性。

      實(shí)驗(yàn)中使用 4 臺(tái)配置相同的 Linux 服務(wù)器搭建實(shí)驗(yàn)平臺(tái)。其中,3 臺(tái)搭建 Ceph 集群,每個(gè)節(jié)點(diǎn)配置 1 個(gè) HDD 設(shè)備和 1 個(gè) NVM 設(shè)備。另外 1 臺(tái)作為性能測(cè)試的客戶端,各個(gè)節(jié)點(diǎn)之間使用萬兆以太網(wǎng)連接,具體實(shí)驗(yàn)配置如表 1 所示。測(cè)試工具是業(yè)界廣泛使用的 Fio,可直接對(duì)塊設(shè)備進(jìn)行測(cè)試,獲得塊設(shè)備的吞吐量、IOPS以及讀寫延遲等性能指標(biāo)。實(shí)驗(yàn)對(duì)順序讀、順序?qū)?、隨機(jī)讀和隨機(jī)寫這 4 種基準(zhǔn)負(fù)載模式進(jìn)行測(cè)試。每次讀寫的 I/O 塊大小分別設(shè)置為 1 KB、4 KB、16 KB、64 KB、256 KB、1 MB 和 4 MB。當(dāng)讀寫測(cè)試時(shí)間達(dá)到 10 min 或數(shù)據(jù)量達(dá)到 100 GB時(shí),測(cè)試停止,測(cè)試 5 次取性能平均值,然后進(jìn)行對(duì)比分析。

      表1 實(shí)驗(yàn)配置Table 1 Experimental configurations

      如第 2 節(jié)所述,BlueStore 對(duì)非旋轉(zhuǎn)型的存儲(chǔ)設(shè)備默認(rèn)使用 4 KB 的分配單元,以提升存儲(chǔ)性能,NVM 設(shè)備也屬于非旋轉(zhuǎn)型的存儲(chǔ)設(shè)備,因此,為更合理地對(duì)比性能,本文在進(jìn)行 NVM 性能測(cè)試時(shí),將 BlueStore 的分配單元設(shè)置為 4 KB(通過 BlueStore 的日志可驗(yàn)證),與 NVMStore上的分配單元保持一致。

      4.2 塊設(shè)備性能對(duì)比

      本節(jié)對(duì)比了 HDD 與 Optane 作為塊設(shè)備的數(shù)據(jù)讀寫性能,為了達(dá)到塊設(shè)備的性能峰值,實(shí)驗(yàn)中的 Fio 測(cè)試引擎設(shè)置為異步 I/O,隊(duì)列深度設(shè)置為 32,并繞過系統(tǒng)頁緩存和塊緩存直接對(duì)塊設(shè)備進(jìn)行讀寫測(cè)試。實(shí)驗(yàn)對(duì)比的性能指標(biāo)為吞吐量(MB/s),HDD 的性能數(shù)據(jù)如表 2 所示,Optane的性能數(shù)據(jù)如表 3 所示,Optane 與 HDD 的性能比值如表 4 所示。

      表2 HDD 吞吐量Table 2 Throughput of HDD

      由實(shí)驗(yàn)數(shù)據(jù)可知,Optane 設(shè)備的吞吐量遠(yuǎn)高于 HDD,如 Optane 的 1 KB 隨機(jī)寫性能可達(dá)HDD 的 5 243.67 倍,4 MB 順序?qū)懶阅芸蛇_(dá) HDD的 5.94 倍(見表 4)。由于 HDD 機(jī)械部件導(dǎo)致的延遲,其隨機(jī)性能遠(yuǎn)低于順序性能,特別是當(dāng) I/O塊較小時(shí),對(duì)比更為明顯。而 Optane 設(shè)備沒有機(jī)械部件,其讀寫性能主要取決于數(shù)據(jù)的分發(fā)是否能充分利用底層存儲(chǔ)器件的并發(fā)性。如表 3 所示,雖然 Optane 設(shè)備的讀性能高于寫性能,順序性能高于隨機(jī)性能,但是二者之間的性能差距遠(yuǎn)小于 HDD 的性能差距。此外,Optane 的吞吐量隨著 I/O 塊的增大而提高,且當(dāng) I/O 塊大小約為64 KB 時(shí)達(dá)到峰值,這主要是由 Optane 底層存儲(chǔ)介質(zhì)的特性及其內(nèi)部存儲(chǔ)單元的分布決定的。

      表3 Optane 吞吐量Table 3 Throughput of Optane

      表4 Optane 與 HDD 的性能比值Table 4 Performance ratio of Optane to HDD

      4.3 塊接口與內(nèi)存接口性能對(duì)比

      本小節(jié)對(duì)使用內(nèi)存映射的方法讀寫 Optane時(shí)的性能優(yōu)勢(shì)進(jìn)行驗(yàn)證。由于目前 Fio 不支持Optane 的內(nèi)存接口測(cè)試,因此本小節(jié)通過 PMDK提供的內(nèi)存讀寫接口進(jìn)行了測(cè)試,實(shí)驗(yàn)結(jié)果如圖 5 所示,其中,Optane-Block 表示使用傳統(tǒng)的塊接口讀寫 Optane,Optane-Mmap 表示使用內(nèi)存映射的方式讀寫 Optane。

      由圖 5 可知,Optane-Mmap 的整體性能高于Optane-Block,特別是小塊數(shù)據(jù)讀寫。由圖 5(b)可知,當(dāng) I/O 塊大小為 1 KB 時(shí),Optane-Mmap 的性能約為 Optane-Block 的 2.5 倍。原因是 Optane具有字節(jié)可尋址特性,可通過內(nèi)存接口直接訪問設(shè)備,避免了塊接口較長(zhǎng)的 I/O 軟件棧及數(shù)據(jù)在內(nèi)存中的不必要拷貝,從而可獲得較高的性能。因此,與傳統(tǒng)的塊接口相比,本文提出的NVMStore 通過內(nèi)存接口訪問 NVM 設(shè)備,理論上具有更優(yōu)的性能。

      圖5 Optane 塊接口與內(nèi)存接口性能對(duì)比Fig. 5 Performance comparison between Optane’s block and memory interface

      4.4 存儲(chǔ)引擎性能提升效果

      本節(jié)通過實(shí)驗(yàn)分析,當(dāng)使用 Optane 設(shè)備替換 HDD 時(shí),不同存儲(chǔ)引擎的 Ceph 獲得的性能提升效果。由于 Ceph 的塊接口的實(shí)際應(yīng)用較為廣泛,因此,本節(jié)針對(duì) Ceph 的 Rados 塊設(shè)備(Rados Block Device,RBD)進(jìn)行測(cè)試。測(cè)試方法是,在 Ceph 集群中創(chuàng)建一個(gè)大小為 100 GB 的RBD 鏡像,然后使用 Fio 的 RBD 引擎對(duì)該鏡像進(jìn)行讀寫性能測(cè)試。為更直觀地展示性能提升效果,根據(jù)存儲(chǔ)設(shè)備為 HDD 的 FileStore(FileStore-HDD)的吞吐量(MB/s),將性能數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。最終對(duì) Optane 的 FileStore(FileStore-Optane)和 BlueStore(BlueStore-Optane)相對(duì)于FileStore-HDD 的性能提升倍數(shù)進(jìn)行對(duì)比。圖 6為性能提升效果,F(xiàn)ileStore-HDD 的性能值標(biāo)準(zhǔn)化為 1,不在圖中展示。

      圖6 使用 Optane 的存儲(chǔ)引擎性能提升效果Fig. 6 Performance improvement of storage engine using Optane

      由圖 6 可知,小塊隨機(jī)寫性能的提升最為明顯,且 BlueStore-Optane 的性能更高。當(dāng) I/O 塊小于 64 KB 時(shí),與 FileStore-HDD 相比,F(xiàn)ileStore-Optane 和 BlueStore-Optane 的隨機(jī)寫性能提升可達(dá) 180 倍以上。與 FileStore-Optane 相比,BlueStore-Optane 的性能更高,其原因是FileStore 中的雙重日志問題造成了數(shù)據(jù)寫放大,占用了一部分 Optane 的帶寬,限制了 Optane 的性能發(fā)揮。而 BlueStore 直接管理塊設(shè)備,很大程度上減小了數(shù)據(jù)寫放大,且 BlueStore 的 I/O軟件棧較為簡(jiǎn)單,因此,更容易發(fā)揮 Optane 的性能優(yōu)勢(shì)。

      本實(shí)驗(yàn)將不同存儲(chǔ)引擎的 Ceph 存儲(chǔ)系統(tǒng)的整體性能進(jìn)行對(duì)比,不能簡(jiǎn)單地將其與第 4.2 節(jié)塊設(shè)備的性能對(duì)比結(jié)果一一對(duì)應(yīng)。如在第 4.2 節(jié)塊設(shè)備性能對(duì)比實(shí)驗(yàn)中,當(dāng) I/O 塊為 64 KB 時(shí),Optane 設(shè)備的順序讀性能約為 HDD 的 10 倍(詳見表 4)。但是如圖 6(b)所示,在同樣的負(fù)載模式下,Ceph 整體的順序讀性能提高了近 40 倍。其原因是 Ceph 整體上能夠?qū)?shù)據(jù)均勻地分布在各個(gè)存儲(chǔ)節(jié)點(diǎn)上,當(dāng)進(jìn)行大量數(shù)據(jù)的讀寫操作時(shí),能夠較好地發(fā)揮各個(gè)存儲(chǔ)節(jié)點(diǎn)以及存儲(chǔ)設(shè)備的并發(fā)性,實(shí)現(xiàn)性能的擴(kuò)展,尤其是在數(shù)據(jù)塊較大的負(fù)載模式下。

      然而,直接利用 Optane 替換 HDD,并不能充分發(fā)揮 Optane 的性能優(yōu)勢(shì)。例如,Optane 的小塊隨機(jī)讀性能可達(dá) HDD 的上千倍(詳見表 4),但是如圖 6(d)所示,將底層存儲(chǔ)設(shè)備換為Optane 后,Ceph 的 1 KB 隨機(jī)讀性能卻只提升了30 倍左右。該情況一方面是由于集群節(jié)點(diǎn)之間的數(shù)據(jù)傳輸增加了部分延遲;另一方面則是由于FileStore 與 BlueStore 底層都使用了傳統(tǒng)的塊接口和異步 I/O 機(jī)制,引入了較大的 I/O 軟件棧開銷,從而限制了 Optane 設(shè)備的性能發(fā)揮。

      4.5 NVMStore 性能評(píng)估

      目前,已有開源的基于 NVM 的鍵值存儲(chǔ)系統(tǒng)(如 pmemkv②),但仍未有開源的可用于Ceph 后端的 NVM 存儲(chǔ)引擎。因此,本節(jié)對(duì)使用 Optane 設(shè)備的 NVMStore(表示為 NVMStore-Optane)與 Ceph 現(xiàn)有存儲(chǔ)引擎的讀寫性能進(jìn)行對(duì)比。由于目前 Ceph 默認(rèn)使用的存儲(chǔ)引擎是BlueStore,且第 4.4 節(jié)實(shí)驗(yàn)已證明 BlueStore-Optane 的整體性能優(yōu)于 FileStore-Optane,因此本實(shí)驗(yàn)直接對(duì) NVMStore-Optane 與 BlueStore-Optane 的性能進(jìn)行對(duì)比。實(shí)驗(yàn)方法為,首先在Ceph 集群中創(chuàng)建一個(gè) RBD 鏡像設(shè)備,然后使用Fio 的 RBD 引擎對(duì)該鏡像進(jìn)行讀寫測(cè)試,獲得每秒執(zhí)行 I/O 操作的次數(shù)(Input/Output Operations Per Second,IOPS)和吞吐量性能,性能對(duì)比結(jié)果如圖 7 所示。

      由圖 7 可知,NVMStore-Optane 的性能優(yōu)于 BlueStore-Optane,且讀寫負(fù)載的 I/O 塊越小,NVMStore-Optane 性能優(yōu)勢(shì)越大。如圖 7(a)所示,當(dāng) I/O 塊為 1 KB 的順序?qū)懾?fù)載時(shí),NVMStore-Optane 的性能約為 BlueStore-Optane的 2 倍。主要原因是,Optane 讀寫單塊數(shù)據(jù)的硬件延遲是穩(wěn)定的,但是當(dāng)處理小塊(小于等于 4 KB 的數(shù)據(jù)塊)I/O 負(fù)載時(shí),BlueStore 需要頻繁地通過塊接口訪問 Optane,導(dǎo)致大量的軟件棧延遲,且小塊操作造成的數(shù)據(jù)寫放大進(jìn)一步增加了延遲。而 NVMStore 利用內(nèi)存直接訪問 Optane,減小了軟件棧引入的延遲,且利用NVM 的字節(jié)可尋址特性減小了數(shù)據(jù)寫放大,因此性能提升較為明顯。

      圖7 NVMStore 性能優(yōu)化效果Fig. 7 Performance improvement of NVMStore

      為了驗(yàn)證該結(jié)論,在 BlueStore 與 NVMStore的代碼中增加日志輸出,創(chuàng)建 Ceph RBD 塊設(shè)備,并針對(duì)小塊隨機(jī)寫入負(fù)載進(jìn)行測(cè)試。測(cè)試方法為,使用 Fio 的 RBD 引擎進(jìn)行 120 s 的 1 KB隨機(jī)寫入,統(tǒng)計(jì) BlueStore 與 NVMStore 的 I/O 軟件棧延遲占比以及數(shù)據(jù)寫放大,測(cè)試結(jié)果如表 5所示。實(shí)驗(yàn)結(jié)果表明,與 BlueStore 相比,NVMStore 的 I/O 軟件棧延遲占比更小,且能夠大幅度減小數(shù)據(jù)寫放大,因而在小塊寫入時(shí)其性能提升較為明顯。

      表5 I/O 軟件棧延遲占比以及數(shù)據(jù)寫放大對(duì)比Table 5 Latency ratio of I/O software stack and data write amplification comparison

      當(dāng) I/O 塊較小(不超過 64 KB 的數(shù)據(jù)塊)時(shí),NVMStore 的性能略高于 BlueStore。主要原因是,BlueStore 通過塊接口訪問設(shè)備的頻率降低,I/O 軟件棧的開銷占總延遲的比例降低,進(jìn)而縮小了與 NVMStore 的性能差距。當(dāng) I/O 塊較大時(shí)(大于 64 KB 的數(shù)據(jù)塊),NVMStore-Optane與 BlueStore-Optane 的性能相當(dāng)。主要是因?yàn)?,?dāng)讀寫數(shù)據(jù)量一定時(shí),隨著 I/O 操作的粒度增大,調(diào)用 I/O 軟件棧的頻率將大幅降低,從而減小了 I/O 軟件棧引入的延遲,使得 Optane 的數(shù)據(jù)讀寫延遲占據(jù)了性能開銷的主要部分。此時(shí),NVMStore 雖然能夠減小 I/O 軟件棧引入的延遲,但是對(duì)整體讀寫操作的影響較小,從而限制了其性能提升效果。因此,NVMStore 更適用于大量小塊數(shù)據(jù)讀寫的應(yīng)用場(chǎng)景。目前,在Facebook 等流行的社交網(wǎng)絡(luò)平臺(tái)或者虛擬桌面云平臺(tái)應(yīng)用場(chǎng)景中,小塊數(shù)據(jù)的隨機(jī)讀寫負(fù)載非常普遍[19,25-27],因此,以 NVMStore 為代表的性能優(yōu)化方向具有重要的現(xiàn)實(shí)意義。

      如圖 7 所示,當(dāng) Optane 為底層存儲(chǔ)設(shè)備時(shí),Ceph RBD 設(shè)備的隨機(jī)讀寫性能高于順序讀寫操作性能。主要是因?yàn)?,在進(jìn)行大量數(shù)據(jù)讀寫時(shí),客戶端在 RBD 設(shè)備上的順序操作,經(jīng)數(shù)據(jù)的切分與分發(fā),到達(dá)各個(gè)存儲(chǔ)節(jié)點(diǎn)后,轉(zhuǎn)化為各個(gè)存儲(chǔ)引擎上的隨機(jī)操作。與 HDD 等慢速設(shè)備相比,Optane 設(shè)備上的隨機(jī)操作性能與順序操作性能差異較小,因此,存儲(chǔ)引擎處理隨機(jī)操作不會(huì)造成嚴(yán)重的性能退化。相反,大量隨機(jī)讀寫操作更容易均勻地分布到各個(gè)存儲(chǔ)節(jié)點(diǎn)的多個(gè)對(duì)象中,有助于發(fā)揮存儲(chǔ)節(jié)點(diǎn)以及 Optane 設(shè)備底層存儲(chǔ)單元的并發(fā)性,最終達(dá)到更高的讀寫性能。

      5 結(jié) 論

      大數(shù)據(jù)存儲(chǔ)系統(tǒng)的存儲(chǔ)引擎對(duì)系統(tǒng)的整體性能至關(guān)重要。雖然使用高性能的 NVM 設(shè)備替換傳統(tǒng)存儲(chǔ)設(shè)備可以提高存儲(chǔ)性能,但是并不能充分發(fā)揮 NVM 設(shè)備的性能優(yōu)勢(shì)。主要原因是傳統(tǒng)的存儲(chǔ)引擎使用塊接口來訪問 NVM 設(shè)備,多層次的 I/O 軟件棧開銷以及數(shù)據(jù)寫放大造成的延遲,限制了 NVM 性能優(yōu)勢(shì)的發(fā)揮,進(jìn)而影響了存儲(chǔ)引擎的性能擴(kuò)展。針對(duì)該問題,本文對(duì)大數(shù)據(jù)存儲(chǔ)系統(tǒng) Ceph 的存儲(chǔ)引擎及其 I/O 軟件棧進(jìn)行了分析,提出了一種基于 NVM 的存儲(chǔ)引擎 NVMStore,其利用內(nèi)存直接映射的方式訪問NVM,并根據(jù) NVM 的特性對(duì)存儲(chǔ)引擎的數(shù)據(jù)讀寫流程進(jìn)行優(yōu)化,減小了 I/O 軟件棧的開銷以及數(shù)據(jù)讀寫放大,進(jìn)一步提升了存儲(chǔ)引擎的性能。最后在 NVM 設(shè)備上進(jìn)行實(shí)驗(yàn),將 NVMStore 與現(xiàn)有的 Ceph 默認(rèn)存儲(chǔ)引擎 BlueStore 的基準(zhǔn)讀寫性能進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果表明,NVMStore 能夠顯著提高存儲(chǔ)系統(tǒng)的小塊數(shù)據(jù)讀寫性能。在實(shí)際應(yīng)用場(chǎng)景中,由于小塊數(shù)據(jù)讀寫負(fù)載較為普遍,因此,NVMStore 的性能優(yōu)化方向具有重要的現(xiàn)實(shí)意義。

      猜你喜歡
      存儲(chǔ)設(shè)備存儲(chǔ)系統(tǒng)字節(jié)
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      分布式存儲(chǔ)系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
      哈爾濱軸承(2020年2期)2020-11-06 09:22:36
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      天河超算存儲(chǔ)系統(tǒng)在美創(chuàng)佳績(jī)
      簡(jiǎn)談MC7字節(jié)碼
      Windows 7下USB存儲(chǔ)設(shè)備接入痕跡的證據(jù)提取
      基于Flash芯片的新型存儲(chǔ)設(shè)備數(shù)據(jù)恢復(fù)技術(shù)研究
      華為震撼發(fā)布新一代OceanStor 18000 V3系列高端存儲(chǔ)系統(tǒng)
      一種基于STM32的具有斷電保護(hù)機(jī)制的采集存儲(chǔ)系統(tǒng)設(shè)計(jì)
      用批處理管理計(jì)算機(jī)USB設(shè)備的使用
      乌鲁木齐市| 广昌县| 简阳市| 攀枝花市| 黄平县| 广州市| 南昌市| 东光县| 普兰店市| 南昌市| 永定县| 石渠县| 余姚市| 汝南县| 根河市| 肥东县| 佳木斯市| 夏邑县| 奇台县| 克什克腾旗| 榆林市| 广南县| 崇左市| 紫阳县| 安达市| 新巴尔虎右旗| 永和县| 洛宁县| 囊谦县| 郁南县| 澳门| 涪陵区| 陈巴尔虎旗| 合作市| 永丰县| 新余市| 墨玉县| 任丘市| 射洪县| 二连浩特市| 宜兴市|