今天看到EMC網(wǎng)站上已經(jīng)給出了DSSD的產(chǎn)品定位蜘蛛圖。EMC認(rèn)為DSSD的時(shí)延和聚合性能最有優(yōu)勢(shì),給了滿分。
DSSD D5作為第一代RSF(rack-scale flash)產(chǎn)品,是如何做到極致的時(shí)延和極高的性能的呢?而且還要保證企業(yè)級(jí)的可靠性,有別于其他NVMe PCIe SSD卡/盤(pán)?今天,我們從硬件和軟件以及數(shù)據(jù)保護(hù)三個(gè)方面來(lái)揭開(kāi)DSSD的神秘面紗。
先看一下D5的前視圖。D5高5U,這也是D5名字的來(lái)源我們看到DSSD的LOGO下面就是一個(gè)控制模塊(CM),CM下面是36個(gè)閃存模塊(FM),F(xiàn)M下面是另外一個(gè)控制模塊(CM)。D5現(xiàn)在支持半框配置(18個(gè)FM)或者全框(36個(gè)FM)兩種配置。FM目前有2TB和4TB容量,未來(lái)會(huì)支持更大容量和3D TLC。每個(gè)FM上有512個(gè)NAND die。FM都是設(shè)計(jì)成雙PCIe端口,這個(gè)也是區(qū)別普通NVMe SSD(一般是單端口)的一個(gè)重要的方面。FM是可以熱插拔的。
我們?cè)賮?lái)看D5的后視圖。最上面是4個(gè)PSU,PSU下面是第一個(gè)IO模塊(IOM)。然后下面是5個(gè)風(fēng)扇,風(fēng)扇下面是另外一個(gè)IOM。每個(gè)IOM上面有4個(gè)12口的PCIe交換機(jī)。從相關(guān)的資料看,EMC明確提到FM是熱插拔的FRU(Field Replaceable Unit),其他電源、風(fēng)扇、CM、IOM只是FRU,沒(méi)有提熱插拔這個(gè)詞。因此,西瓜哥推測(cè),這個(gè)版本除了FM外,其他還不支持熱插拔(現(xiàn)在普通存儲(chǔ)的這些部件都支持熱插拔,這有點(diǎn)不太符合常理,也許我推測(cè)不正確)。還有IOM上面有一個(gè)黃色的子卡,這個(gè)是服務(wù)模塊(SM),上面有管理用的USB口和網(wǎng)口,SM和IOM是一個(gè)FRU。
DSSD和主機(jī)連接是PCIe的方式。這個(gè)業(yè)界沒(méi)有標(biāo)準(zhǔn),因此EMC自己開(kāi)發(fā)了一塊DSSD客戶端卡(大家可以理解為和FC HBA類(lèi)似的一個(gè)東西)。這塊卡是兩端口,需要插在服務(wù)器的PCIe 3.0 x4的插槽上,目前只支持Linux(必須是物理機(jī),不能跑在Hypervisor上)。客戶端卡連接D5目前通過(guò)EMC專用的銅纜連接,以后會(huì)支持AOC光纜。據(jù)說(shuō)EMC把這種連接方式已經(jīng)提交給了NVMe標(biāo)準(zhǔn)化組織,希望變成一個(gè)標(biāo)準(zhǔn)。還有一點(diǎn)要注意,客戶端卡通過(guò)一個(gè)NTB(non-transparent bridge)來(lái)進(jìn)行PCIe的地址翻譯(地址表保存在CM里),這樣就把各個(gè)主機(jī)做了隔離,避免相互影響。
DSSD客戶端目前只能連接一個(gè)D5,而且要求必須同時(shí)連接到兩個(gè)CM上。為了冗余,服務(wù)器可以插2塊DSSD客戶端卡。DSSD采用了多路徑,而且兩個(gè)路徑都是active-active的,可以捆綁在一起,因此,除了負(fù)載均衡,性能也是翻倍的。
DSSD的FM前面說(shuō)過(guò),也是定制的,電源功耗高達(dá)60w,要比一般的PCIe閃存卡(受限于PCIe插槽,一般功耗只有25W)高得多,因此容量可以做得更大,性能也可以更高。
DSSD FM和其他采用SSD的存儲(chǔ)最大的不同還在于把SSD里面很多功能放到CM上實(shí)現(xiàn),做成全局的。也就是FM里面只有最基本的ECC和Vaulting掉電保護(hù)功能,其他的垃圾收集,F(xiàn)TL等等全部放到CM里實(shí)現(xiàn)。這個(gè)思路和我們以前講的SDF(軟件定義閃存)很類(lèi)似,全局的FTL和GC,其效率必定更好,性能也更好。畢竟SSD里面ASIC的CPU的處理能力和內(nèi)存都是有限的。
每個(gè)IOM有48口對(duì)外連接主機(jī),對(duì)內(nèi)有36口連接FM。也就是說(shuō)帶寬是有收斂的。48口其實(shí)是4個(gè)12口的PCIe交換機(jī)組成(圖中寫(xiě)的是Hub,西瓜哥懷疑寫(xiě)錯(cuò)了)。這個(gè)也是沒(méi)有辦法,現(xiàn)在48口的PCIe交換芯片好像還沒(méi)有吧。
DSSD的CM也是采用X86架構(gòu),上面運(yùn)行的軟件叫Flood,洪水啊,O(∩_∩)O哈哈~。全局的垃圾收集和FTL,還有立體RAID都是CM來(lái)實(shí)現(xiàn)。特別要注意的是,CM上面并沒(méi)有數(shù)據(jù)的Cache,這個(gè)和傳統(tǒng)存儲(chǔ)的思路是完全不同的。CM接受主機(jī)寫(xiě)過(guò)來(lái)的數(shù)據(jù)只是為了做RAID計(jì)算。主機(jī)的數(shù)據(jù)是通過(guò)PCIe的多播技術(shù)直接寫(xiě)到CM上,采用DMA的方式。也就是數(shù)據(jù)的路徑是不經(jīng)過(guò)CM的,這也是保證做到如此低時(shí)延和高性能的原因??吹竭@里,大家是不是覺(jué)得有點(diǎn)像軟件定義存儲(chǔ)那樣控制平面和數(shù)據(jù)平面分離的趕腳?
D5采用了無(wú)源的中置背板的設(shè)計(jì)方式,就像很多數(shù)通設(shè)備或者刀片服務(wù)器一樣。
NVMe存儲(chǔ)協(xié)議是未來(lái)存儲(chǔ)的發(fā)展方向,EMC估計(jì)2年內(nèi)很多AFA產(chǎn)品都遷移到這個(gè)技術(shù),但EMC說(shuō)現(xiàn)在DSSD已經(jīng)實(shí)現(xiàn)了業(yè)內(nèi)三個(gè)第一:第一個(gè)共享的NVMe存儲(chǔ)平臺(tái),第一個(gè)從用戶空間直接可以訪問(wèn),第一個(gè)支持多路徑鏈路聚合、熱插拔、透明的切換和恢復(fù)。
看完硬件,我們來(lái)揭秘一下軟件Flood。Flood包括客戶端的驅(qū)動(dòng)/API,還有CM上的各種功能,都叫FLOOD。
其實(shí)DSSD實(shí)際上是一個(gè)對(duì)象存儲(chǔ)。通過(guò)API,可以支持很多對(duì)象,如卷(類(lèi)似根目錄),目錄,key-value,塊和文件。
支持塊設(shè)備的方式,可以用API,也可以用DSSD的塊設(shè)備驅(qū)動(dòng)。用API時(shí)延可用做到100us,如果用塊驅(qū)動(dòng)(好處是應(yīng)用可以不修改),雖然需要OS內(nèi)核參與,但還是跳過(guò)很多層次,時(shí)延可做到120us,也就是只多了20us。
最后我們來(lái)揭秘一下DSSD的數(shù)據(jù)保護(hù)技術(shù)。EMC一共列出了12點(diǎn),我們挑幾個(gè)大家不常見(jiàn)的來(lái)展開(kāi)說(shuō)明一下。
一個(gè)是PCIe多播寫(xiě)。主機(jī)寫(xiě)數(shù)據(jù)的時(shí)候,同時(shí)寫(xiě)到三個(gè)位置,一份到CM的DRAM里用做RAID計(jì)算,兩份到不同的FM的DRAM里。由于CM和FM里面都有DRAM,因此寫(xiě)的速度是很快的。注意不是直接寫(xiě)到flash die上。其實(shí)同時(shí)寫(xiě)到兩個(gè)FM,主要也是為了可靠性,因?yàn)橄到y(tǒng)采用立體RAID,不是兩副本的方式,落盤(pán)時(shí)數(shù)據(jù)應(yīng)該會(huì)重組的,因?yàn)檫€有RAID的計(jì)算值。
CM可以直接實(shí)現(xiàn)閃存的物理控制。主要是NAND隨著使用時(shí)間的增長(zhǎng),其保持電子的能力就下降,因此電壓也會(huì)下降。如果不能調(diào)整傳感器的檢測(cè)值,那么數(shù)值都讀不出來(lái)了。而CM通過(guò)自動(dòng)的閃存物理控制,提高電壓的敏感度,這樣就可以延長(zhǎng)NAND的壽命。
垃圾收集由于是全局的,因此可以根據(jù)應(yīng)用特點(diǎn),在空間和時(shí)間上進(jìn)行優(yōu)化,比如只回收有用的數(shù)據(jù),熱點(diǎn)數(shù)據(jù)?;厥眨菬狳c(diǎn)數(shù)據(jù)就不用老回收了,目標(biāo)就是減少寫(xiě)放大,延長(zhǎng)閃存壽命。當(dāng)然,熱點(diǎn)和非熱點(diǎn)區(qū)域經(jīng)常要對(duì)調(diào)一下,這樣磨損會(huì)比較均衡。
大家記得主機(jī)數(shù)據(jù)用多播的方式寫(xiě)到CM和兩個(gè)FM的DRAM里,就告訴主機(jī)寫(xiě)完了。因?yàn)镕M里面有數(shù)據(jù)的Cache,因此,需要掉電保護(hù)。CM里面的數(shù)據(jù)雖然不需要保護(hù),但元數(shù)據(jù)如FTL肯定也是要的。
因?yàn)镕TL是全局的,因?yàn)?,DSSD實(shí)現(xiàn)的是動(dòng)態(tài)的超供,靈活動(dòng)態(tài)的超供的空間可以提高性能和在FM重構(gòu)時(shí)使用。
當(dāng)FM模塊故障更換后,DSSD自動(dòng)重構(gòu)數(shù)據(jù)并寫(xiě)到新的FM上。這個(gè)過(guò)程叫Resilvering(西瓜哥暫時(shí)沒(méi)有找到合適的翻譯,叫重新銀化?)。這個(gè)術(shù)語(yǔ)其實(shí)是從ZFS的Z-RAID來(lái)的,大家知道DSSD的創(chuàng)始人就是ZFS的發(fā)明者,因此,用這個(gè)術(shù)語(yǔ)或者部分ZFS的技術(shù)應(yīng)該是理所當(dāng)然的了。
最后再提一下DSSD的專利技術(shù)多維/Cubic RAID。目前版本實(shí)現(xiàn)了兩維,據(jù)說(shuō)以后會(huì)做三維。從相關(guān)資料看,應(yīng)該是用軟件來(lái)計(jì)算校驗(yàn)P和Q的值,畢竟現(xiàn)在新的CPU指令計(jì)算RAID 6的值還是很快的。
【學(xué)習(xí)心得】
1、DSSD是一種全新的存儲(chǔ)形態(tài),很多技術(shù)是以前我們沒(méi)有碰到過(guò)的。比如NVMeF,跨設(shè)備的DMA(但不是RDMA),PCIe多播等等,我們要用全新的視野來(lái)看這個(gè)產(chǎn)品。
2、DSSD的優(yōu)點(diǎn)明顯,缺點(diǎn)也很明顯。目前它和高端存儲(chǔ)定位和場(chǎng)景都是很不同的,未來(lái)也許會(huì)融合,但目前還不會(huì)正面沖突,這個(gè)和AFA不同。DSSD需要物理服務(wù)器,需要跑Linux,需要有PCIe 3.0的插槽(很多刀片服務(wù)器就用不了),需要應(yīng)用利用API做開(kāi)發(fā)(塊設(shè)備驅(qū)動(dòng)的方式和特定應(yīng)用的Plug-in除外)。因此,我們說(shuō)它是一個(gè)性能大“怪”獸,不能用通用存儲(chǔ)的標(biāo)準(zhǔn)來(lái)看它。
3、以前WIKIBON把DSSD也看成SERVER SAN的范疇,但西瓜哥學(xué)習(xí)完技術(shù)原理后,覺(jué)得DSSD不應(yīng)該是。因?yàn)槠錄](méi)有利用標(biāo)準(zhǔn)的服務(wù)器+軟件的方式來(lái)構(gòu)建存儲(chǔ)產(chǎn)品,而是全新的定制的硬件形態(tài),我覺(jué)得可以叫SERVER SAN。
4、NVMe作為一種新技術(shù)引入到共享存儲(chǔ)里面來(lái),DSSD的實(shí)現(xiàn)思路和架構(gòu)值得后進(jìn)入的廠商借鑒。EMC目前已經(jīng)把DSSD的硬件連接規(guī)范和API提交給相應(yīng)組織,也希望成為業(yè)界的標(biāo)準(zhǔn)。
5、從上周的調(diào)查看,有18%的調(diào)查者反映目前的AFA滿足不了性能要求,需要DSSD,這個(gè)比例還是蠻高的。DSSD會(huì)不會(huì)像XtremIO一樣,成為一個(gè)明星產(chǎn)品,還得看EMC配套的銷(xiāo)售策略了。
分享到微信 ×
打開(kāi)微信,點(diǎn)擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁(yè)分享至朋友圈。