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