Server如何SAN(中):SSD和網(wǎng)絡(luò)
瀏覽量:
次 發(fā)布日期:2023-08-25 18:50:53
Server如何SAN(中):SSD和網(wǎng)絡(luò)
本文是“FusionCube超融合大講堂”的第三篇(中部),具體探討SSD和網(wǎng)絡(luò)對Server SAN的重要意義。繼續(xù)以足球和籃球作比,解析作為超融合架構(gòu)核心的軟件定義存儲……
上部回顧:Server SAN之規(guī)模與架構(gòu)
本文將通過分析足球和籃球在團隊精神上的不同側(cè)重,從兩大(規(guī)模、架構(gòu))四小(SSD、網(wǎng)絡(luò)、副本、管理)共六個方面,來對比作為超融合架構(gòu)根基的軟件定義存儲(具體到Server SAN),和融合架構(gòu)常用的SAN存儲設(shè)備。
單挑打不死:閃存改寫游戲規(guī)則
歐洲杯小組賽剛結(jié)束,C羅“一生之?dāng)场泵肺髀暑I(lǐng)的阿根廷連續(xù)第二年在美洲杯決賽中被公認牌面較弱的智利冰封。對梅西的質(zhì)疑撲面而來:為什么前輩球王馬拉多納就可以帶阿根廷隊奪得世界杯冠軍,而梅西只收獲“三亞”呢?
1986年的墨西哥高原,馬拉多納在進四強和決賽的路上包攬阿根廷隊全部進球,且各有一個突破數(shù)人圍堵射入的佳作,決賽在遭遇德國隊嚴(yán)密看管的情況下仍送出致命一傳。自那以后整整30年,重大足球賽事上再也見不到如此有統(tǒng)治力的個人表演,雖然梅西和C羅整個職業(yè)生涯的個人數(shù)據(jù)要亮眼得多。
不完全是巧合,從上世紀(jì)90年代后期開始,為了保護進攻隊員,F(xiàn)IFA和NBA都出臺了一系列有利于帶球突破的規(guī)則,結(jié)果卻大不相同。在NBA,每到季后賽的關(guān)鍵時刻,超級巨星的持球單打,一再成為扭轉(zhuǎn)戰(zhàn)局的關(guān)鍵。
然而,在世界杯和歐洲杯這樣的頂級足球賽事,個人帶球長途奔襲“一擊致命”的場面卻愈發(fā)少見。1990年世界杯決賽又在德國和阿根廷之間展開,馬拉多納已過巔峰,四年前負責(zé)防守他的馬特烏斯率隊成功復(fù)仇。
在本屆歐洲杯淘汰賽期間,馬特烏斯表示:現(xiàn)在的足球,跑動比他那時代每場多3000米,他那時代比貝肯鮑爾(70年代)每場多跑3000米。時代不同了,現(xiàn)代足球,組織更嚴(yán)密,飲食更規(guī)范。
連續(xù)三屆大賽,強隊的每場人均跑動距離都達到10公里以上,也就是說,現(xiàn)在的人均跑動距離,比20年前高近一半,是40年前的兩倍多。能奔善跑的隊員遍布全場,個人帶球過關(guān)斬將自然難上加難。沒有一個成熟的傳球組織體系是不行的。
本賽季的中超倒是還能看到類似的戲碼:首輪對決,連續(xù)作戰(zhàn)的衛(wèi)冕冠軍恒大隊疲憊不堪,被力帆外援兩度長途帶球奔襲得分。
有趣的是,有媒體評論,中超的比賽風(fēng)格,落后歐洲30年……
球員跑動能力提升一倍,都會對比賽風(fēng)格產(chǎn)生如此之大的影響。那么,存儲介質(zhì)從
硬盤換成閃存呢?
左邊三種不同類型的SSD,對右邊三種不同轉(zhuǎn)速的硬盤。硬盤的隨機I/O性能已經(jīng)過適當(dāng)美化,依然慘不忍睹……
上表列出的對比數(shù)據(jù),可以再次說明幾個常識性問題:
在順序讀寫性能方面,硬盤與(基于閃存的)SSD相差并不是很大,特別是后者受寫入性能和接口帶寬限制,“只”快一倍到十幾倍,目前還很少超過20倍;
SSD(Solid State Drive,固態(tài)盤)的優(yōu)勢主要體現(xiàn)在隨機訪問,IOPS(I/O per second,每秒I/O操作數(shù))性能可達硬盤的上千倍,延遲也只有后者的百分之一左右。
由于硬盤的隨機訪問性能太差——吞吐量(throughput)不到自身順序傳輸帶寬的百分之一,傳統(tǒng)的中高端SAN存儲堆積大量的硬盤主要是為了獲得較高的IOPS。因此,級聯(lián)JBOD這種只增加硬盤數(shù)量而帶寬保持不變的典型Scale-up方式被廣泛采用。譬如,EMC最后一代采用單片式架構(gòu)控制器的高端存儲產(chǎn)品Symmetrix DMX-4,一個4Gb/s FC-AL后端端口,最多可以連接60個硬盤——每個硬盤分到的帶寬不到70Mb/s,卻也算夠用了。
典型中端存儲系統(tǒng)的架構(gòu),(最上方)一對控制器拖著一組JBOD,可以是不同尺寸、轉(zhuǎn)速的硬盤
為了連接更多的硬盤,提供更大的存儲容量和更強的I/O能力,可以為存儲控制器增加后端端口數(shù)量。但是,一套控制器能增加的端口數(shù)是有限的,DMX-4最多可以提供64個后端端口,即32對(HA需求)磁盤通道,所以最多可連接1920個硬盤——如果通過產(chǎn)品認證請求(RPQ)批準(zhǔn),可以增加到2400個。
最新的VMAX3(VMAX 100K/200K/400K),雖然引擎(一對控制器組成)之間可以Scale-out,每個引擎仍能級聯(lián)6個磁盤擴展柜(DAE)。使用120個2.5英寸驅(qū)動器的DAE時,最多可達720個驅(qū)動器(硬盤或SSD),控制器的“負擔(dān)”依然很重。
同樣是隨機訪問,SSD的吞吐量超過100MB/s(1Gb/s)乃尋常事,繼續(xù)沿用一個控制器拖上百個(閃存或硬盤)驅(qū)動器的Scale-up模式,勢必造成性能上的巨大浪費。所以,圍繞閃存設(shè)計的產(chǎn)品,Scale-out是發(fā)展的主流,譬如EMC收購來的全閃存陣列產(chǎn)品XtremIO:每一對(HA)1U控制器和裝有25個SSD的2U盤柜組成一個名為X-Brick的基本單元,需要擴容時就增加X-Brick,性能隨之同步增長,最多可以擴展至8個X-Brick組成的集群(又是8個)。
XtremIO通過高帶寬、低延遲的40Gb/s QDR InfiniBand網(wǎng)絡(luò)橫向擴展
普通的服務(wù)器不用考慮雙控,也沒必要外接JBOD走Scale-up路線,內(nèi)部直連的硬盤或SSD通常都能獨享接口帶寬:
SATA就是600MB/s,SAS現(xiàn)在能到1.2GB/s;
PCIe 3.0 x4(單向)4GB/s,x8可達8GB/s……
于硬盤而言,SAS和SATA的帶寬在相當(dāng)長一段時間內(nèi)都不會成為瓶頸;
于SSD而言,PCIe 3.0 x4或x8的帶寬都有可能不夠。
重點是,在Scale-out模式下,存儲介質(zhì)到其計算資源的通道更短且寬闊得多,就看如何使用,揚長避短了。
SSD不僅在性能上占據(jù)壓倒性優(yōu)勢,容量上也早已超越硬盤,但大容量(如7200RPM)硬盤明顯更低的單位容量成本還是很有吸引力,而且順序讀寫的性能差距并不算大。所以,將SSD作為硬盤的Cache使用,起碼在現(xiàn)階段,仍是業(yè)界比較普遍采用的方案。
以FusionCube分布式存儲為例:在讀取數(shù)據(jù)時,SSD Cache解決硬盤最怕的熱點問題,即(根據(jù)系統(tǒng)算法)將一段時間內(nèi)反復(fù)訪問的數(shù)據(jù)復(fù)制到SSD中,釋放硬盤的壓力,而太長時間沒有訪問的數(shù)據(jù)會被移出SSD。在寫入數(shù)據(jù)時,SSD起到緩存的作用,OSD收到VBS發(fā)送的寫I/O操作后,把數(shù)據(jù)寫入SSD就算完成本節(jié)點的寫操作。緩存在SSD中的寫I/O數(shù)據(jù)周期性的(或占據(jù)一定容量后)批量寫入到硬盤中,盡量減少對硬盤的隨機寫操作。
FusionCube分布式存儲的讀Cache(左)有兩層,第一層為內(nèi)存,采用LRU(最近最久未使用)算法;第二層為SSD,采用熱點讀機制。寫緩存(右)則只使用非易失性的SSD
每個OSD管理自己的Cache/緩存,所以一份數(shù)據(jù)從寫入到緩存開始就會有二或三個副本,以防因單個硬件故障(SPOF)而導(dǎo)致
數(shù)據(jù)丟失。此外,SSD用于讀Cache和寫緩存的容量配比是可以調(diào)整的。
與閃存正相反,硬盤不怕寫,怕隨機。所以,F(xiàn)usionCube分布式存儲支持大塊直通(pass-through),按缺省配置大于256KB的數(shù)據(jù)塊直接落盤而不經(jīng)過SSD緩存,因為大數(shù)據(jù)塊寫入更接近順序訪問,硬盤并不比SSD慢太多,少了這么一個中間環(huán)節(jié)還有助于保護SSD。在順序讀寫比較多的場景(如OLAP),直接訪問硬盤比較有效。當(dāng)然,這個直通的配置可以修改,取決于應(yīng)用的類型和用戶的需求。
嚴(yán)格來說,作為不可缺少的基本功能,“分布式Cache”應(yīng)該屬于“存儲引擎層”
FusionCube分布式存儲更直接的一點是,直接管理裸盤(raw disk)而不經(jīng)過中間層(如單機文件系統(tǒng)),既可以直接提高每個I/O操作的性能,還可以區(qū)分不同程度的硬件故障,采取具備針對性的措施,減少對資源池整體性能的不利影響,譬如:
能夠識別出硬盤上的部分損壞(如壞扇區(qū))。Read Repair(讀修復(fù))機制在讀數(shù)據(jù)失敗時,系統(tǒng)會判斷錯誤類型,如果是磁盤扇區(qū)讀取錯誤,則自動從其他節(jié)點保存的副本讀取數(shù)據(jù),然后重新寫入該副本數(shù)據(jù)到硬盤扇區(qū)錯誤的節(jié)點,從而保證數(shù)據(jù)副本總數(shù)不減少和副本間的數(shù)據(jù)一致性。雖然這個I/O操作會增加一點延遲,卻不至于將整個硬盤下線,做大量數(shù)據(jù)的重新分布(rebalance)——那會非常消耗存儲和網(wǎng)絡(luò)資源,影響業(yè)務(wù)的正常運行。
能夠識別出資源池中的“慢盤”。一個響應(yīng)速度低于其他硬盤的硬盤會拖慢所有與其相關(guān)的I/O操作,這時要毫不猶豫的將其“踢出”資源池。
一句話:(硬盤)該保時保,該踢就踢,出發(fā)點都是保證系統(tǒng)整體性能不受影響。
Ceph也已經(jīng)從Jewel版本開始,引入直接管理裸盤的BlueStore存儲引擎,以期替代原有的FileStore(看名字就知道)。初步的測試數(shù)據(jù)表明,基于硬盤的I/O性能可以提高一倍。當(dāng)然,元數(shù)據(jù)管理等工作相應(yīng)增加,需要社區(qū)和業(yè)界投入足夠的開發(fā)資源。
在全閃存配置下,SSD的高性能意味著需要分配更多的計算資源,來處理明顯增加的I/O請求。為了提高I/O性能,F(xiàn)usionCube分布式存儲允許在一個節(jié)點上部署多個VBS,或者為一個存儲設(shè)備部署多個OSD。在PCIe SSD作為主存時,可以在1個PCIe SSD上部署多個OSD進程,譬如2.4TB的PCIe SSD可以部署6個OSD進程,每個OSD進程負責(zé)管理400GB。
部分原因是,SSD如果不受接口帶寬限制(或受限制較少,如PCIe),有可能容量越大性能越高(與芯片數(shù)相關(guān)),而硬盤的機制卻不是這樣的。
在Ceph的實踐中,可以看到類似的做法,如為每個SSD分配2個OSD(Object Storage Daemon,對象存儲守護進程),以更充分的發(fā)揮SSD的性能優(yōu)勢。
更多的OSD進程,意味著需要消耗更多的CPU和內(nèi)存等計算資源。以FusionCube 9000的典型配置為例:6個PCIe SSD的全閃存節(jié)點,內(nèi)存容量是12個SAS硬盤加1個SSD(Cache)的硬盤存儲節(jié)點的2.5倍(160GB:64GB),CPU內(nèi)核數(shù)也差不多高一倍(E5-2660 v3:E5-2620 v3)。
不論是作為Cache/緩存還是全閃存,閃存的加入都是軟件定義存儲(包括Server SAN)能夠進入傳統(tǒng)企業(yè)應(yīng)用的關(guān)鍵。受限于硬盤孱弱的隨機訪問能力,早期的軟件定義存儲實踐如GFS和HDFS,服務(wù)的都是Hadoop這類離線應(yīng)用——畢竟,純比堆硬盤,還是傳統(tǒng)SAN存儲設(shè)備更有效。
帶球與傳球:網(wǎng)絡(luò)助攻Server SAN
過去兩年,倡導(dǎo)分享球的勇士隊打法賞心悅目,被認為是NBA的一股清流。對勇士隊的追捧隨著其在2015年6月奪冠,并在接下來的常規(guī)賽創(chuàng)下73勝記錄而達到頂峰。
但是,在隨后到來的西部決賽和總決賽,面對以巨星輪番單打為主的雷霆和騎士隊的沖擊,勇士隊再而衰,三而竭,終于敗下陣來。
其實,在去年的總決賽上,詹姆斯一個巨星就差點兒把勇士隊掀翻。如果有另一個人能分擔(dān)壓力,巨星連線或輪流沖擊,興許已經(jīng)得手。
究其原因,在狹小的場地,高強度的壓迫下,過多的傳球容易被搶斷。總決賽最后幾場,勇士隊核心庫里關(guān)鍵時刻幾次致命的傳球失誤,令人記憶猶新。
然而,在過去的十年間,增加傳球、控制局面卻成為足球界的主流打法。西班牙隊依靠傳控打法在2008年登頂,并繼續(xù)統(tǒng)治了隨后兩屆大賽。奪得2014年世界杯的德國隊,也是當(dāng)屆賽事上場均傳球次數(shù)最多的球隊。
凡事皆有例外,譬如2016年歐洲杯黑馬冰島隊,小組賽與最后的冠軍葡萄牙1比1戰(zhàn)平,卻只有后者一半的控球率(34%對66%)、三分之一強的傳球次數(shù)(223對616)、不到四分之一的成功傳球(132對536)。上賽季爆冷奪得英超冠軍的萊斯特城隊也是類似的路數(shù)。
歐洲杯小組賽最后一輪,沒有知名球星的冰島隊在最后一刻反擊,兩名隊員緊追帶球隊友,接應(yīng)傳球絕殺奧地利……培養(yǎng)三名能奔善跑、傳球過關(guān)的隊員,可比發(fā)掘一位馬拉多納式的球王,要容易得多啊
冰島在越過“偽強隊”英格蘭之后被傳控更佳的法國隊無情摧殘,萊斯特的劇本也不可能在本賽季的英超重演。用傳控支配、消耗對手,仍然是頂級強隊的標(biāo)志。
本節(jié)探討的現(xiàn)象與上節(jié)有緊密的聯(lián)系:球員們更能跑了,個人帶球過多很難打開局面;傳球當(dāng)然比人跑得快,但長傳一則準(zhǔn)確性欠佳,二則飛行時間過長,留給對手從容布防。于是,積極跑動的球員和頻繁的中短距離傳球結(jié)合,將整支球隊編織為一張伸縮自如的網(wǎng)絡(luò)。
SAN是專門為共享存儲系統(tǒng)(磁盤陣列)設(shè)計的網(wǎng)絡(luò),用于把一臺或多臺主機(服務(wù)器)連接到存儲系統(tǒng)上使用。SAN的典型協(xié)議(如FC)與服務(wù)器之間的網(wǎng)絡(luò)(如以太網(wǎng))不同,工作模式也很不一樣:一個存儲網(wǎng)絡(luò)里可能有多個存儲系統(tǒng),但它們之間很少互相傳輸數(shù)據(jù),或協(xié)商分擔(dān)工作負載。
可以說,SAN和Scale-up的模型里,沒有連續(xù)“傳球”的概念。雙控制器的切換,也像是一次性的球權(quán)轉(zhuǎn)移。
反過來,分布式、集群、Scale-out和Server SAN,每個名詞都透著濃濃的“傳球”協(xié)作味道。節(jié)點間的自動協(xié)調(diào)和數(shù)據(jù)傳輸是整個系統(tǒng)的生命線,必須要有高質(zhì)量的網(wǎng)絡(luò)做保證。仍以FusionCube分布式存儲為例,接收I/O請求的節(jié)點,其VBS模塊計算出的硬盤位置如果不在本節(jié)點內(nèi),就必須通過節(jié)點間的網(wǎng)絡(luò)轉(zhuǎn)發(fā)到所屬節(jié)點,并等待返回,才能完成操作。如果網(wǎng)絡(luò)帶寬不夠或延遲過高,均會拖慢整個系統(tǒng)的性能。
與“純正的”FC SAN相比,Server SAN不需要引入(與服務(wù)器網(wǎng)絡(luò))異構(gòu)的網(wǎng)絡(luò),節(jié)點之間的網(wǎng)絡(luò)和面向應(yīng)用(服務(wù)器)的網(wǎng)絡(luò)可以基于同樣的網(wǎng)絡(luò)技術(shù)——以太網(wǎng),或者InfiniBand(IB)。當(dāng)然,這兩張網(wǎng)絡(luò)需要進行物理或邏輯上的隔離,以避免互相干擾。
為了保證Server SAN的性能,每服務(wù)器需要提供4Gbps帶寬用于FusionCube分布式存儲通信,推薦使用萬兆網(wǎng)絡(luò)。用于融合部署云資源池(如FusionCube 6000),且超過16個節(jié)點時,業(yè)務(wù)平面(面向應(yīng)用)和存儲平面(節(jié)點之間)必須使用獨立的網(wǎng)卡。
FusionCube分布式存儲對接VMware、Xen和KVM的分離部署模式,可以看到網(wǎng)絡(luò)、SSD和硬盤的I/O路徑(存儲端的OS也可以是RHEL,或者Xen、KVM)
單個10GbE端口的帶寬約為1GB/s,對硬盤算挺高,而理論上1個PCIe SSD或2~4個SATA SSD即可填滿。
像Oracle RAC和SAP HANA等對性能要求很高的應(yīng)用,節(jié)點之間的網(wǎng)絡(luò)可以換成InfiniBand,典型如FusionCube 9000。InfiniBand不僅具有四五倍于萬兆以太網(wǎng)的帶寬(40Gbps QDR或56Gbps FDR),還有低至納秒級的超短延遲,OLAP(高帶寬)、OLTP(高IOPS、低延遲)應(yīng)用兩相宜。
InfiniBand的路線圖,遠非FC(SAN)可比。今年6月舉行的國際超算大會2016上,華為攜手Mellanox發(fā)布基于FusionServer E9000融合架構(gòu)刀片服務(wù)器的InfiniBand EDR 100G交換解決方案
網(wǎng)絡(luò)、SSD和計算能力的相對廉價,是拉動軟件定義存儲的三駕馬車。不過,目前企業(yè)級SDS主要用的還是網(wǎng)絡(luò)的數(shù)據(jù)面,SDN要到規(guī)模非常大的時候才可能成為必需品。
(未完待續(xù)……)
相關(guān)推薦