QingStor NeonSAN 是一款面向核心業(yè)務(wù)設(shè)計(jì)的全閃分布式塊存儲(chǔ),打破了傳統(tǒng)存儲(chǔ)的容量與水平擴(kuò)展的瓶頸,性能可以媲美全閃中高端存儲(chǔ)陣列,能夠很好支持 Oracle RAC 等關(guān)鍵應(yīng)用,在金融、電力、廣電、制造、測(cè)繪等行業(yè)廣泛落地。
我們將在本文中揭開(kāi) NeonSAN 架構(gòu)的神秘面紗,介紹她是如何做到高性能和高可靠的產(chǎn)品體驗(yàn),并在最后詳細(xì)分享一個(gè)典型案例:NeonSAN 替換 Oracle 一體機(jī),承載某大型保險(xiǎn)集團(tuán) OLTP 和 OLAP 系統(tǒng),滿足數(shù)據(jù)不斷增長(zhǎng)的互聯(lián)網(wǎng)金融業(yè)務(wù)需求。
1、面向閃存的三種存儲(chǔ)方案
如下圖所示,目前業(yè)界基于全閃的存儲(chǔ)方案主要有以下三種:
1. 傳統(tǒng)方式
因?yàn)閭鹘y(tǒng)的存儲(chǔ)誕生在機(jī)械盤(pán)的時(shí)代,是面向機(jī)械盤(pán)設(shè)計(jì)的,IOPS 通常在一百左右。而當(dāng)前主流 NVMe SSD 的性能已經(jīng)達(dá)到百萬(wàn) IOPS 級(jí)別。這兩類(lèi)存儲(chǔ)介質(zhì)的機(jī)制迥異。
受限于底層架構(gòu)的設(shè)計(jì),傳統(tǒng)存儲(chǔ)并沒(méi)有針對(duì)全閃進(jìn)行有效的軟件改造或者優(yōu)化,無(wú)法全部發(fā)揮 NVMe SSD 的性能,此類(lèi)方案已經(jīng)不再適合承載高速閃存介質(zhì)。
2. 全閃陣列
全閃陣列的性能相比傳統(tǒng)方式有了很大提升。
但是,全閃陣列通常采用專(zhuān)有的硬件,成本高昂。另外,傳統(tǒng)陣列一般采用雙控制器互為備份,縱向擴(kuò)展無(wú)法提升性能,橫向擴(kuò)展受限于控制器的數(shù)量。這使得全閃陣列無(wú)法靈活適應(yīng)數(shù)據(jù)爆發(fā)增長(zhǎng)的業(yè)務(wù)場(chǎng)景。
3. 全閃分布式存儲(chǔ)
分布式存儲(chǔ)是通過(guò)網(wǎng)絡(luò)將存儲(chǔ)節(jié)點(diǎn)聯(lián)系在一起,以集群的形式提供服務(wù)。
通常采用通用的 X86 硬件,使硬件標(biāo)準(zhǔn)化,可以降低 TCO。集群中每一個(gè)節(jié)點(diǎn)都具備存儲(chǔ)和計(jì)算能力,隨著節(jié)點(diǎn)的增加集群的容量和性能得到線性擴(kuò)展。無(wú)中心設(shè)計(jì)使集群不易形成瓶頸節(jié)點(diǎn),理論上可以無(wú)限擴(kuò)展。針對(duì) NVMe SSD 進(jìn)行特殊的設(shè)計(jì)和優(yōu)化,性能強(qiáng)勁。
另外,隨著 25G、100G 網(wǎng)絡(luò)的普及和 RDMA 網(wǎng)絡(luò)低延遲的特性,使得分布式全閃的跨節(jié)點(diǎn)擴(kuò)展不再是瓶頸。在全閃存和高速 RDMA 網(wǎng)絡(luò)的加持下,分布式全閃架構(gòu)已經(jīng)成為企業(yè)核心業(yè)務(wù)的理想之選。
2. 企業(yè)級(jí)分布式塊存儲(chǔ)
關(guān)于 NeonSAN 名字的由來(lái):后半部分是 SAN 代表了產(chǎn)品的形態(tài);Neon 是元素周期表里面氖的代號(hào),是一種惰性氣體,具有極高的穩(wěn)定性。所以 NeonSAN 的名字寓意著這是一款穩(wěn)定的企業(yè)級(jí)存儲(chǔ)產(chǎn)品。
NeonSAN 核心模塊由數(shù)據(jù)層和控制層組成,此外包括前端接口與運(yùn)維管理工具層。
NeonSAN 核心模塊采用并行流水線技術(shù),設(shè)計(jì)了全閃存儲(chǔ)系統(tǒng)的資源調(diào)度系統(tǒng)、內(nèi)存管理系統(tǒng)、元數(shù)據(jù)管理系統(tǒng)、RDMA 網(wǎng)絡(luò)收發(fā)系統(tǒng)等,打造高可用、高可靠、高性能、擴(kuò)展靈活的全閃分布式存儲(chǔ)。
NeonSAN 提供 9 個(gè) 9 可靠性,單卷性能達(dá)到 10 萬(wàn) IOPS,最小延遲小于 90 微秒。
在擴(kuò)展方面,NeonSAN 可以擴(kuò)至 4096 節(jié)點(diǎn),容量和性能隨節(jié)點(diǎn)的增加而線性增長(zhǎng)。
NeonSAN 的基本架構(gòu)是由 Zookeeper 服務(wù)、元數(shù)據(jù)服務(wù)、管理服務(wù)、存儲(chǔ)服務(wù)和接入服務(wù)五部分構(gòu)成。
Zookeeper 提供集群的發(fā)現(xiàn)服務(wù);元數(shù)據(jù)服務(wù)用來(lái)記錄集群中的元數(shù)據(jù),如節(jié)點(diǎn)信息、SSD 的信息、卷信息等;
管理服務(wù)提供集群的管理功能,如節(jié)點(diǎn)的上線、創(chuàng)建卷等。
數(shù)據(jù)存儲(chǔ)服務(wù)用來(lái)給客戶(hù)提供具體的 I/O,承載業(yè)務(wù)發(fā)來(lái)的 I/O 請(qǐng)求。其采用對(duì)等的設(shè)計(jì),每個(gè)存儲(chǔ)節(jié)點(diǎn)的地位是相等的,都可以提供 I/O 服務(wù)。
對(duì)等設(shè)計(jì)可以保證集群的某一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),其他節(jié)點(diǎn)能夠接替故障節(jié)點(diǎn)繼續(xù)服務(wù),保證業(yè)務(wù)的連續(xù)性,同時(shí)為集群的容量和性能線性擴(kuò)展提供基礎(chǔ)。
接入服務(wù),第一個(gè)模塊是 QBD 內(nèi)核驅(qū)動(dòng),在 Windows Server 和 Linux Server 上都有對(duì)應(yīng)的版本,它可以讓服務(wù)器以使用本地盤(pán)的方式使用 NeonSAN,上層業(yè)務(wù)不需要做任何改造就可以對(duì)接 NeonSAN,非常方便。
第二個(gè)模塊是 QEMU,可以為虛機(jī)提供云硬盤(pán)。
第三個(gè)模塊是通用的 iSCSI 接口,可以為 VMware 等虛擬化平臺(tái)提供存儲(chǔ)服務(wù)。
第四個(gè)模塊是 NVMe-oF 接口,提供端到端的高速數(shù)據(jù)傳輸服務(wù),具備非凡的性能。
此外,還提供 CSI 接口,為容器提供持久化的存儲(chǔ)服務(wù)。其支持提供克隆、快照、QoS、在線擴(kuò)容等高級(jí)功能。
3. 如何滿足網(wǎng)絡(luò)高可靠和高可用
NeonSAN 的網(wǎng)絡(luò)分為兩部分:前端業(yè)務(wù)網(wǎng)絡(luò)和后端互聯(lián)網(wǎng)絡(luò),采用兩個(gè)前端交換機(jī)和兩個(gè)后端交換機(jī),組建高可用網(wǎng)絡(luò)。
每個(gè) NenonSAN 節(jié)點(diǎn)配備雙網(wǎng)卡,每張網(wǎng)卡有兩個(gè)網(wǎng)口,分別連接到后端交換機(jī)和前端交換機(jī)。
假如交換機(jī) A 發(fā)生故障就會(huì)影響到 NeonSAN 1、2、3 節(jié)點(diǎn)的網(wǎng)卡 A,凡是通過(guò)這些網(wǎng)卡進(jìn)行交互的業(yè)務(wù)也會(huì)受到影響。此時(shí) NeonSAN 節(jié)點(diǎn)就會(huì)自動(dòng)把網(wǎng)絡(luò)流量切換到網(wǎng)卡 B 上,走交換機(jī) B,保證整個(gè)集群網(wǎng)絡(luò)的可用性。
4. 如何滿足數(shù)據(jù)高可靠和高可用
NeonSAN 的數(shù)據(jù)可靠性及可用性是通過(guò)副本機(jī)制來(lái)實(shí)現(xiàn)的。
在 Linux 服務(wù)下看到塊設(shè)備,或者在 Windows Server 下我們看到一張盤(pán),對(duì)應(yīng)到 NeonSAN 集群里,就會(huì)把這個(gè)盤(pán)切成一片片的 Shard。
如上圖所示,有紅、黃、綠、紫這四個(gè)片,每一片都會(huì)有三副本,分別存放在不同的節(jié)點(diǎn)。任何一個(gè)節(jié)點(diǎn)上的數(shù)據(jù)損壞,都不會(huì)導(dǎo)致數(shù)據(jù)的丟失。
如果節(jié)點(diǎn) 1 不能提供服務(wù),節(jié)點(diǎn) 2 或 3 可以繼續(xù)提供服務(wù),保證整個(gè)集群的可用性。
NeonSAN 的數(shù)據(jù)寫(xiě)入是三個(gè)副本同時(shí)寫(xiě)入,保證數(shù)據(jù)間的強(qiáng)一致性。數(shù)據(jù)的讀取是從主副本讀的。數(shù)據(jù)的副本可以按卷進(jìn)行靈活的配置,在一個(gè)集群中既可以有單副本的卷,也可以有兩副本的卷,還可以有三副本的卷。
NeonSAN 支持精簡(jiǎn)置備和全置備,一個(gè)集群可以同時(shí)存在精簡(jiǎn)置備的卷和全置備的卷。
我們通過(guò)一個(gè)例子來(lái)介紹 NeonSAN 強(qiáng)一致性寫(xiě)過(guò)程中的 I/O 路徑。
首先,客戶(hù)端發(fā) I/O 給三副本的主副本節(jié)點(diǎn),當(dāng)主副本節(jié)點(diǎn)收到 I/O 請(qǐng)求后會(huì)同時(shí)做兩件事:將 I/O 請(qǐng)求發(fā)給它本地的 SSD,同時(shí)也會(huì)把這個(gè)請(qǐng)求發(fā)給兩個(gè)從副本。當(dāng)兩個(gè)從副本 I/O 完成以及本地的 I/O 同時(shí)完成后才會(huì)返回給客戶(hù)端寫(xiě)成功,實(shí)現(xiàn)強(qiáng)一致三副本的寫(xiě)入。
5. NeonSAN 的獨(dú)門(mén)秘籍
NeonSAN 是一個(gè)面向全閃的分布式存儲(chǔ)系統(tǒng),針對(duì)全閃有哪些特殊的設(shè)計(jì)?
首先, NeonSAN 采用了極短 I/O 路徑,這是可以提供卓越性能的根本。
NeonSAN 只要 3 步就可以完成一個(gè) I/O,當(dāng)客戶(hù)端的 I/O 發(fā)到存儲(chǔ)節(jié)點(diǎn)后,存儲(chǔ)軟件做完處理后直接發(fā)給本地的 SSD。
業(yè)界某些分布式存儲(chǔ),比如 Ceph,卻要經(jīng)歷很多步驟:先經(jīng)過(guò)存儲(chǔ)軟件的處理,再發(fā)給本地文件系統(tǒng),還要寫(xiě)日志,某些系統(tǒng)還需要再經(jīng)過(guò)緩存,最后才能落到 SSD,這個(gè) I/O 路徑是非常長(zhǎng)的。簡(jiǎn)單來(lái)說(shuō)就是很慢。
NeonSAN 采用自研 SSD 管理模塊直接管理本地裸設(shè)備,不依賴(lài)本地的文件系統(tǒng),不需要日志,也不需要 Cache,極大精簡(jiǎn)了 I/O 路徑,從而讓延遲減少到最低,接近于 SSD 延遲的量級(jí)。
傳統(tǒng)機(jī)械盤(pán)只有 1 個(gè)隊(duì)列,深度是 32,NVMe SSD 一般盤(pán)有 128 個(gè)隊(duì)列,每個(gè)隊(duì)列的深度是 128,還采用傳統(tǒng)的軟件設(shè)計(jì),顯然 NVMe 是處于饑餓的狀態(tài),無(wú)法發(fā)揮隊(duì)列和深度優(yōu)勢(shì)。
NeonSAN 采用并行流水線,將 I/O 進(jìn)行拆分,拆分成接收、調(diào)度和落盤(pán)。
舉個(gè)例子,在機(jī)械盤(pán)的年代就像超市只有 1 個(gè)收銀臺(tái),只能排 1 隊(duì)。但是到了 NVMe SSD 時(shí)代,超市有 128 個(gè)收銀臺(tái)。如果我們還排 1 隊(duì)就對(duì)資源造成極大的浪費(fèi),所以需要采用多個(gè)隊(duì)列并行 I/O,充分發(fā)揮 NVMe SSD 本身的性能,提升 SSD 的使用率。
在微秒的 SSD 時(shí)代,操作系統(tǒng)逐漸暴露出一些問(wèn)題。比如低效 CPU 核心調(diào)度和內(nèi)存資源的競(jìng)爭(zhēng),以及調(diào)度時(shí)的切換等帶來(lái)了巨大的延遲。
在高并發(fā)的壓力下,多核心 CPU 的競(jìng)爭(zhēng)與不合理的調(diào)度成為性能的瓶頸。NeonSAN 專(zhuān)門(mén)設(shè)計(jì)了資源調(diào)度引擎,避免由于調(diào)度問(wèn)題和內(nèi)存爭(zhēng)搶問(wèn)題帶來(lái)的延遲開(kāi)銷(xiāo)。
首先,在網(wǎng)卡上我們分配專(zhuān)門(mén)的接收與解析 I/O 流水線,針對(duì) I/O 調(diào)度流水線我們給它分配了獨(dú)享的 CPU,避免調(diào)度流水線來(lái)回切換產(chǎn)生不必要的上下文開(kāi)銷(xiāo),做到特定的 CPU 服務(wù)專(zhuān)門(mén)的流水線。
在內(nèi)存方面,在系統(tǒng)軟件啟動(dòng)時(shí)一次申請(qǐng)所需內(nèi)存,根據(jù)不同流水線需求的多少按需分配給接收與解析 I/O 調(diào)度、數(shù)據(jù)落盤(pán)等流水線,避免在 I/O 過(guò)程中頻繁申請(qǐng)與釋放,帶來(lái)的訪問(wèn)頁(yè)表、內(nèi)存鎖等額外開(kāi)銷(xiāo)及內(nèi)存碎片問(wèn)題。
資源調(diào)度引擎保障了 NeonSAN 在獲得高效 I/O 的同時(shí)將延遲控制在很低的水平。
分布式存儲(chǔ)是依賴(lài)于網(wǎng)絡(luò)的。NeonSAN 將業(yè)務(wù)與數(shù)據(jù)網(wǎng)絡(luò)分離,存儲(chǔ)網(wǎng)絡(luò)中的 I/O 不會(huì)對(duì)業(yè)務(wù)網(wǎng)絡(luò)造成壓力,避免資源的競(jìng)爭(zhēng)。
NeonSAN 采用端到端的 RDMA 網(wǎng)絡(luò)設(shè)計(jì),無(wú)論是存儲(chǔ)內(nèi)部節(jié)點(diǎn)之間還是存儲(chǔ)服務(wù)和客戶(hù)端之間都采用了 RDMA 網(wǎng)絡(luò)。
RDMA 網(wǎng)絡(luò)的內(nèi)核旁路(kernel bypass)與零拷貝的特點(diǎn)讓網(wǎng)絡(luò)中的單個(gè) I/O 延遲變得非常低,基于異步的消息機(jī)制能讓多個(gè) I/O 的并發(fā)顯得效率更高。
6.壓力和性能測(cè)試
上面介紹了 NeonSAN 的基本架構(gòu)與面向全閃的特殊設(shè)計(jì),接下來(lái)看看 NeonSAN 的真實(shí)性能表現(xiàn)。
從 E 企研究院的測(cè)試結(jié)果可以看到:在兩個(gè)客戶(hù)端壓力下,隨著卷數(shù)量的增加,NeonSAN 集群提供的性能線性增長(zhǎng),延遲幾乎不變。
以 4K 寫(xiě)為例,單個(gè)卷的 IOPS 是 13 萬(wàn)多,4 個(gè)卷的 IOPS 增加到 47 萬(wàn),接近線性增長(zhǎng);單個(gè)卷的延遲是 0.943 毫秒,4 個(gè)卷的延遲基本沒(méi)什么變化。
7. 典型案例
在采用分布式架構(gòu)之前,用戶(hù)采用 Oracle SuperCluster Solaris 平臺(tái),采購(gòu)與維保費(fèi)用昂貴,且擴(kuò)容復(fù)雜,無(wú)法快速適應(yīng)業(yè)務(wù)發(fā)展的需求。
于是客戶(hù)把視角轉(zhuǎn)到了基于 X86 計(jì)算與存儲(chǔ)分離的分布式架構(gòu),采用三節(jié)點(diǎn)全閃配置的 NeonSAN 作為存儲(chǔ)節(jié)點(diǎn),配置三副本用于 Oracle 數(shù)據(jù)庫(kù)存儲(chǔ)卷。
截止2020年底,用戶(hù)已經(jīng)完成了數(shù)次擴(kuò)容,NeonSAN 整體規(guī)模已經(jīng)達(dá)到了幾十個(gè)節(jié)點(diǎn),承載 OLTP 和 OLAP 業(yè)務(wù),滿足數(shù)據(jù)不斷增長(zhǎng)的互聯(lián)網(wǎng)金融業(yè)務(wù)需求。
案例詳情,請(qǐng)點(diǎn)擊文末“文章推薦 -- 某大型保險(xiǎn)集團(tuán)在線財(cái)險(xiǎn)業(yè)務(wù)系統(tǒng)分布式存儲(chǔ)架構(gòu)實(shí)踐"。
NeonSAN 分布式存儲(chǔ)方案的優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方面:
首先,采用計(jì)算與存儲(chǔ)分離的全分布式架構(gòu)后,海量的數(shù)據(jù)壓力分散到了多個(gè)并發(fā)存儲(chǔ)節(jié)點(diǎn),系統(tǒng)性能、吞吐量按照線性擴(kuò)展。
其次,全閃的存儲(chǔ)節(jié)點(diǎn)之間采用 RDMA 互聯(lián),性能提升 100% 以上,存儲(chǔ)系統(tǒng)提供負(fù)載均衡機(jī)制,有效避免單點(diǎn)性能瓶頸。
通過(guò)開(kāi)放的 X86 平臺(tái)取代了傳統(tǒng)數(shù)據(jù)庫(kù)一體機(jī)與集中式存儲(chǔ)設(shè)備,大幅縮短了存儲(chǔ)系統(tǒng)的建設(shè)與擴(kuò)容周期,有效滿足業(yè)務(wù)數(shù)據(jù)量激增的擴(kuò)容需求,同時(shí)大幅度節(jié)省采購(gòu)、維護(hù)與運(yùn)營(yíng)成本。
8. 總結(jié)
NeonSAN 針對(duì)全閃等新型存儲(chǔ)介質(zhì)進(jìn)行的架構(gòu)設(shè)計(jì),能夠提供高可靠、高可用,性能卓越的存儲(chǔ)服務(wù),其豐富的接口,可以承載數(shù)據(jù)庫(kù)等傳統(tǒng)應(yīng)用,原生適配虛擬化、大數(shù)據(jù)、容器等多種應(yīng)用生態(tài),服務(wù)云時(shí)代高效的數(shù)據(jù)存儲(chǔ)和管理,
NeonSAN 具備豐富的企業(yè)級(jí)特性,基于同步及異步的數(shù)據(jù)復(fù)制可以靈活構(gòu)建各類(lèi)災(zāi)備和雙活解決方案。經(jīng)過(guò)大量企業(yè)客戶(hù)核心業(yè)務(wù)的長(zhǎng)期驗(yàn)證,NeonSAN 是一款真正可以承載企業(yè)核心業(yè)務(wù)的全閃分布式存儲(chǔ)產(chǎn)品。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )