背景 數(shù)據(jù)庫復制是在事務(transaction)的更改提交到本地存儲之前將其復制到輔助站點來執(zhí)行。如果主數(shù)據(jù)庫站點宕機,輔助站點可作為熱備份。事務日志記錄和日志傳輸是在數(shù)據(jù)管理系統(tǒng)中提供可恢復性和高可用性的標準技術。它們需要在每個事務中更新一個本地日志文件(寫入存儲)和一個遠程站點(通過網(wǎng)絡交換數(shù)據(jù)),這兩者都是相對昂貴的操作。現(xiàn)代數(shù)據(jù)庫已經(jīng)利用了諸如持久性內(nèi)存(PM)和支持RDMA的網(wǎng)絡等技術來盡可能快地執(zhí)行這些更新。 圖1描述了一個典型的系統(tǒng),使用PM和RDMA執(zhí)行日志寫入和交付。數(shù)據(jù)庫系統(tǒng)負責協(xié)調(diào)幾個不同的步驟,有時是針對本地PM,有時是通過啟用RDMA的NIC的遠程PM或內(nèi)存,最后是快速SSD設備。例如,圖1的流程為:(1)該數(shù)據(jù)庫會將日志數(shù)據(jù)寫入到PM中。(2)通過RDMA將數(shù)據(jù)傳輸?shù)竭h端PM。(3)使用第二個RDMA操作來將日志所描述的更改轉(zhuǎn)換到遠端主機的內(nèi)存中。(4a/b)兩個主機都需要在PM上騰出空間,通過將其部分內(nèi)容復制到SSD中來實現(xiàn)。 圖1 使用PM和RDMA執(zhí)行日志記錄和復制路徑 問題 現(xiàn)有技術的組合存在幾個缺點:缺乏可移植性、數(shù)據(jù)路徑的復雜性和互操作性。具體包括: ? RDMA和PM的相互作用很復雜且難以理解。例如,使用RDMA更新遠端機器上的PM支持的地址可能會使更新可見,但不能保證該更新是持久的。如果機器崩潰,復制操作的正確性可能會受到影響。 ? 雖然可以通過簡單的load/store內(nèi)存訪問PM指令、編程正確、持久的數(shù)據(jù)結(jié)構(gòu)是一項艱巨的工作。軟件崩潰可以使結(jié)構(gòu)處于任意狀態(tài),然后數(shù)據(jù)庫需要從中恢復。 ? 用于PM的每個DIMM插槽都不用于DRAM,這迫使系統(tǒng)設計人員在DRAM或PM容量之間進行選擇。 ? Optane和配有后備電池的DRAM需要特定的服務器支持,并且不能在沒有某些特性的情況下跨服務器移植。特別是Optane在AMD平臺上不受支持。 方法 為了解決這些問題,本文設計了一個新的存儲體系結(jié)構(gòu)X-SSD,實現(xiàn)數(shù)據(jù)庫日志記錄和復制從PM和快速網(wǎng)絡中獲益。通過將PM從CPU路徑移到SSD中,并允許SSD代表數(shù)據(jù)庫管理本地或遠程對PM的訪問。X-SSD包含基于PM和NAND閃存的本地聯(lián)網(wǎng)存儲。該體系結(jié)構(gòu)提供了一個獨立的、快速的數(shù)據(jù)路徑和接口,完全專門用于事務日志寫入,并提供了數(shù)據(jù)傳播服務,包括跨服務器,可以在這些服務上構(gòu)建數(shù)據(jù)庫復制。圖2顯示了如何使用X-SSD設備來簡化日志記錄和復制數(shù)據(jù)路徑。步驟順序和傳統(tǒng)系統(tǒng)相同,但X-SSD設備負責在步驟 (2) 和 (4a/b) 中傳播數(shù)據(jù),而遠程內(nèi)存的更新由遠程數(shù)據(jù)庫(3)完成。 圖2 使用X-SSD設備的日志記錄和復制路徑 ? X-SSD架構(gòu) 圖3為X-SSD的邏輯架構(gòu),該架構(gòu)在同一設備中包含常規(guī)端和快速端。常規(guī)端是一個獨立的以Flash為介質(zhì)的SSD設備,而快速端是僅附加工作負載的高性能暫存區(qū)域,為PM設備。保存來自循環(huán)緩沖區(qū)上的字節(jié)尋址接口的數(shù)據(jù),最終會將數(shù)據(jù)轉(zhuǎn)移到常規(guī)端的指定循環(huán)緩沖區(qū)中(也可以選擇對等X-SSD)??焖俣擞?a target="_blank">電容器提供支持,即使在突然斷電的情況下也可以轉(zhuǎn)移數(shù)據(jù)。因此,可以在到達常規(guī)端之前向應用程序確認快速端寫入。 X-SSD的設計原理是讓應用程序在兩個IO配置文件之間進行選擇,但使用單個設備并確保配置文件無縫集成。 圖3?X-SSD邏輯架構(gòu) ? X-SSD功能如下: 僅附加工作負載的字節(jié)尋址接口:X-SSD不僅僅提供傳統(tǒng)的塊接口,還提供了可字節(jié)尋址接口。塊設備操作通常由塊接口處理。字節(jié)級操作由基于CMB的接口處理。CMB接口由應用程序通過load和store指令訪問的MMIO區(qū)域組成。某種形式的PM支持CMB領域。本文通過假設電池后備使其持久化,來評估SRAM和DRAM的可行性。 數(shù)據(jù)傳播服務:快速端寫入的語義與傳統(tǒng)端不同。針對CMB的快速寫入最終將按照發(fā)出的順序降級到設備的常規(guī)端。降級發(fā)生時無需來自發(fā)出寫入的應用程序的任何干預。快速端在概念上是應用程序?qū)懭氲沫h(huán)。在后臺,該設備不斷地將數(shù)據(jù)從這個環(huán)移動到常規(guī)端。X-SSD設備的常規(guī)端還保留了一個環(huán)形的轉(zhuǎn)儲區(qū)域,但比快速端的要大得多。該快速寫入也可以發(fā)送到配置為副本的Villars設備。本文評估使用 PCIe NTB 作為互連的遠程連接,但其他網(wǎng)絡技術(如RDMA)也是可能的。 崩潰一致性:后備電池允許設備完成對快速端上存在的任何數(shù)據(jù)的降級,來應對電源突然中斷的情況。重新啟動后,應用程序?qū)⒃谠O備常規(guī)端看到崩潰期間傳輸中的數(shù)據(jù)。 記錄狀態(tài)監(jiān)視器:X-SSD提供了一個控制接口,應用程序使用它來查詢上述數(shù)據(jù)移動的進度。例如,應用程序可以檢查給定的寫入是否已持久保存在遠程X-SSD設備上。 設備設置界面:一個額外的控制接口允許應用程序配置設備(例如,PM區(qū)域的大小或用于長期存儲的常規(guī)側(cè)的區(qū)域),并識別并連接到對等X-SSD設備。本文還討論了如何支持允許X-SSD設備的多線程或多客戶端使用X-SSD設備的高級設置。 Villars設備:X-SSD體系結(jié)構(gòu)的參考設計 Villars是一個成熟的NVMe設備,是直接連接的PCIe SSD的標準。Villars設備可以從現(xiàn)代數(shù)據(jù)庫中吸收事務日志工作負載,與直接操作數(shù)據(jù)庫相比,它具有更簡單的接口、可比較的延遲和更清晰的崩潰行為語義。 Villars設備大致由三個模塊組成,如圖4所示:CMB模塊、Transport模塊和Destage模塊。 CMB模塊是頂級模塊,它處理應用程序所使用的字節(jié)可尋址接口。將CMB備份內(nèi)存公開給數(shù)據(jù)庫。 Transport模塊負責連接到遠程對等的Villars設備,并通過它們復制CMB寫入流。 Destage模塊連接Villars設備的兩端,將CMB的PM后備存儲器中的數(shù)據(jù)降級到傳統(tǒng)端的 Flash。 圖4:X-SSD物理架構(gòu) ? 總結(jié) X-SSD是針對事務日志工作負載而設計的SSD架構(gòu)??焖俣擞糜诜盏脱舆t的字節(jié)可尋址請求,用于事務日志記錄;常規(guī)端是一個傳統(tǒng)的SSD塊接口來服務常規(guī)工作負載。雙方緊密集成,允許數(shù)據(jù)無縫地從快速端移動到常規(guī)端。此外,不同設備實例的快速端也可以進行通信,允許在X-SSD設備之間以低延遲遠程發(fā)送日志工作負載。數(shù)據(jù)庫可以使用這些數(shù)據(jù)傳播特性來構(gòu)建不同的事務日志記錄和基于日志傳送的復制方案。本文還介紹了一種針對X-SSD體系結(jié)構(gòu)的Villars器件的參考設計。提供更簡單的接口、可比較的延遲和更清晰的崩潰行為語義。
-
接口
+關注
關注
33文章
8645瀏覽量
151395 -
監(jiān)視器
+關注
關注
1文章
780瀏覽量
33164 -
SSD
+關注
關注
21文章
2868瀏覽量
117520
原文標題:X-SSD:原生支持數(shù)據(jù)庫日志記錄和復制的存儲系統(tǒng)
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論