Memblaze近十年來(lái)專(zhuān)注于企業(yè)級(jí)NVMe SSD設(shè)計(jì)和研發(fā),2015年發(fā)布公司第一款NVMe SSD——PBlaze4,此后相繼發(fā)布PBlaze5系列多款NVMe SSD產(chǎn)品。

PBlaze系列在全閃存陣列的應(yīng)用

NVMe SSD在存儲(chǔ)陣列中的應(yīng)用已經(jīng)越來(lái)越廣泛,在SPC-1測(cè)試top10榜單中,基于NVMe SSD的全閃存陣列也逐漸占據(jù)主流。最近,支持NVMe協(xié)議的高端全閃存陣列宏杉MS7000G2-Mach完成了SPC-1測(cè)試,在8小時(shí)最高負(fù)載壓力下的穩(wěn)定性測(cè)試中始終保持平穩(wěn),時(shí)延抖動(dòng)在最高壓力測(cè)試中不超過(guò)7μs。另一方面,MS7000G2-Mach最高壓力時(shí)延為0.337ms,在SPC-1 TOP10榜單中最低。

MS7000G2-Mach使用的就是288塊PBlaze系列NVMe SSD。SPC-1各項(xiàng)測(cè)試結(jié)果均來(lái)自Client端的應(yīng)用,也被稱(chēng)為ASU,各項(xiàng)優(yōu)異的測(cè)試成績(jī)可以說(shuō)明底層的NVMe SSD沒(méi)有任何性能抖動(dòng),SSD的穩(wěn)定性和延時(shí)表現(xiàn)都是很好的。從性能、延時(shí)和穩(wěn)定性等指標(biāo)上看,都印證了PBlaze系列NVMe SSD非常適合存儲(chǔ)陣列使用。

高可用存儲(chǔ)陣列NVMe SSD的必備功能

存儲(chǔ)陣列對(duì)NVMe SSD要求非常多,首先是雙端口功能,雙端口NVMe SSD支持單個(gè)主機(jī)內(nèi)的兩條數(shù)據(jù)路徑,支持兩個(gè)控制器訪問(wèn)同一NVMe SSD來(lái)實(shí)現(xiàn)冗余。

在另一種常見(jiàn)的應(yīng)用場(chǎng)景中,兩個(gè)主機(jī)系統(tǒng)也可以通過(guò)兩條路徑訪問(wèn)同一存儲(chǔ)系統(tǒng)。如果在一條數(shù)據(jù)路徑失效或者一個(gè)主機(jī)掉電,另一條可用的數(shù)據(jù)路徑將繼續(xù)運(yùn)行,對(duì)業(yè)務(wù)連續(xù)無(wú)影響。

雙端口提供了多個(gè)host訪問(wèn)NVMe SSD共享命名空間的能力,提供鏈路冗余以及基于端口的PCIe和NVMe寄存器管理。另一項(xiàng)技術(shù)Reservations則可以作為雙端口模式下的仲裁機(jī)制,用于SSD訪問(wèn)和管理權(quán)限的分配。

第二個(gè)必備功能,端到端數(shù)據(jù)保護(hù)。在數(shù)據(jù)中心里,盤(pán)的介質(zhì)損壞、電磁噪聲,或者是軟件Bug,都有可能產(chǎn)生靜默錯(cuò)誤,這種錯(cuò)誤一旦發(fā)生就非常危險(xiǎn),因?yàn)橄到y(tǒng)沒(méi)有報(bào)錯(cuò)并且不可能糾正過(guò)來(lái)。面對(duì)靜默錯(cuò)誤的問(wèn)題,最好的方案是加上PI信息,把PI信息放在元數(shù)據(jù)里,保證寫(xiě)下去和讀上來(lái)兩個(gè)過(guò)程當(dāng)中都是正確的。

PBlaze系列目前支持五種LBA fomat格式,其中第一個(gè)和第二個(gè)是512和4096是不含有PI信息,其他的都是可以帶有8 byte的PI信息,還有4096加64,這是另外一種可以帶有更多的元數(shù)據(jù)格式。

如果FORMAT 512加 8,來(lái)看兩種方案DIF和DIX的區(qū)別,用戶數(shù)據(jù)和元數(shù)據(jù)的PI信息組合方式不一樣。DIF,用戶數(shù)據(jù)和PI信息是連續(xù)存放的,比如發(fā)4K數(shù)據(jù),每隔512B就加8 BYTE的PI信息,這樣連續(xù)存儲(chǔ)。DIX就是用戶數(shù)據(jù)和PI信息是分開(kāi)的,如果發(fā)4K數(shù)據(jù),用戶是4K數(shù)據(jù)和8個(gè)PI信息是分開(kāi)進(jìn)行發(fā)到SSD控制器上。當(dāng)一切配置好之后,我們就可以用標(biāo)準(zhǔn)的NVMe命名進(jìn)行發(fā)讀寫(xiě)的IO。

第三個(gè),非?;A(chǔ)也是非常重要的功能就是在線固件升級(jí)。存儲(chǔ)陣列對(duì)于SSD的要求是非常嚴(yán)格的,不允許SSD有任何的升級(jí)固件還需要進(jìn)行重啟機(jī)器這樣的操作。那么從SSD升級(jí)固件操作原理來(lái)看,一共有兩部分,首先通過(guò)firmware Download命令把新固件鏡像文件下載SSD的DRAM當(dāng)中,第二個(gè)就是激活,把新的固件變成現(xiàn)有的固件進(jìn)行激活。

目前PBlaze5 920系列全部支持在線固件升級(jí)功能,這里進(jìn)行了一個(gè)測(cè)試,在這個(gè)測(cè)試當(dāng)中對(duì)一個(gè)固件升級(jí),在此過(guò)程當(dāng)中,同時(shí)還跑了FiO,這個(gè)升級(jí)過(guò)程當(dāng)中FiO性能占了一到兩秒的時(shí)間,一到兩秒可以看到性能是恢復(fù)的。結(jié)合存儲(chǔ)系統(tǒng)的cache和raid等方案,可以保障上層業(yè)務(wù)連續(xù),這樣就可以彌補(bǔ)SSD固件升級(jí)1~2秒的性能中斷問(wèn)題,目前看停1~2秒是滿足存儲(chǔ)客戶要求的。

在線固件升級(jí)是不需要重啟服務(wù)器,甚至不需要停下業(yè)務(wù),就可以達(dá)到一個(gè)升級(jí)固件的效果。今年發(fā)布的PBlaze5 920、PBlaze5 520及明年將發(fā)布的PBlaze 6系列都支持在線固件升級(jí),這對(duì)服務(wù)器運(yùn)維來(lái)講是非常有價(jià)值的功能。

提升運(yùn)維效率及負(fù)載按需均衡的新技術(shù)

Memblaze做了一些新的功能,第一個(gè)是延時(shí)分布。延時(shí)分布功能可以將過(guò)去一段時(shí)間里發(fā)的所有IO做一個(gè)直方圖,一共有98個(gè)區(qū)間,最后一個(gè)區(qū)間是4秒到正無(wú)窮,所有IO的延時(shí)都會(huì)統(tǒng)計(jì)后記錄在不同的區(qū)間中。有了這個(gè)功能,就可以觀察過(guò)去一段時(shí)間里設(shè)備延時(shí)的分布,這樣對(duì)于設(shè)備運(yùn)營(yíng)狀態(tài)包括系統(tǒng)的負(fù)載壓力的變化,對(duì)于我負(fù)載的壓力以及其他的系統(tǒng)運(yùn)營(yíng)狀態(tài)都有一個(gè)非常綜合的評(píng)估。這個(gè)功能在PBlaze5 920已經(jīng)實(shí)現(xiàn)了,將在2021年發(fā)布的PBlaze 6系列將正式上線這項(xiàng)功能。

iostat這樣非常常用的硬盤(pán)性能監(jiān)控工具,它有一個(gè)問(wèn)題,可能平均延時(shí)低于兩毫秒,但是這個(gè)過(guò)程當(dāng)中很有可能有少數(shù)IO延時(shí)非常高,這樣異常的IO經(jīng)過(guò)其他十幾萬(wàn)甚至是幾十萬(wàn)IO平均之后,整體的io平均延時(shí)可能很低。

為了追蹤這些少數(shù)的高延時(shí)io,Memblaze做了一個(gè)功能——高延時(shí)打印,首先設(shè)置一個(gè)預(yù)值,比如100毫秒,可以將過(guò)去一段時(shí)間里,所有超過(guò)100毫秒的一個(gè)IO無(wú)信息打印出來(lái),包括這樣的時(shí)間戳,是什么類(lèi)型的IO,另外QID、CID、數(shù)據(jù)量以及IO延時(shí)大小等等都被打印出來(lái),有了這個(gè)信息,就很容易定位到異常的IO。

接下來(lái)是提高運(yùn)維效率的功能就是Telemetry,他的用途是通過(guò)標(biāo)準(zhǔn)的NVMe命令來(lái)收集廠商自定義的Log。不同廠商、不同品牌的NVMe SSD接口和Log格式不盡相同。用戶需要一個(gè)標(biāo)準(zhǔn)接口獲取NVMe SSD的Log。當(dāng)發(fā)生問(wèn)題時(shí),通過(guò)標(biāo)準(zhǔn)化的NVMe命令獲取系統(tǒng)和NVMe SSD的Log。

最后一項(xiàng)功能是Weighted RoundRobin(WRR),在PBlaze 5和PBlaze 4的控制器處理上層分下來(lái)的IO都是輪詢(xún)的,在一個(gè)多核服務(wù)器里往往有多個(gè)提交隊(duì)列同時(shí)往控制器上面發(fā)IO,發(fā)的時(shí)候?qū)χ煌腟Q,控制器使用一個(gè)類(lèi)似輪詢(xún)的機(jī)制,從不同SQ里取command。這樣就會(huì)造成一個(gè)問(wèn)題,有的關(guān)鍵應(yīng)用的優(yōu)先級(jí)比較高,我們希望能夠盡早響應(yīng)提交隊(duì)列的命令,但是這Round Robin沒(méi)有辦法做到區(qū)別對(duì)待多個(gè)SQ, Weighted Round Robin可以給不同的SQ加上一個(gè)權(quán)重。

根據(jù)NVMe 協(xié)議,Weighted Round Robin首先將IO權(quán)重劃分為三級(jí),第一級(jí)是Admin SQ發(fā)的IO,這些管理命令優(yōu)先級(jí)是最高的。之后是Urgent級(jí)別的IO,這一級(jí)的IO權(quán)限雖然比管理命令的IO低,但是高于其他的IO,最后是帶權(quán)重的普通的IO,這級(jí)又分高中低三個(gè)檔次。

有了這個(gè)權(quán)重等級(jí)的劃分,Controller就可以根據(jù)這些權(quán)重有選擇性地處理IO了。目前新版本的Kernel都已經(jīng)開(kāi)始支持Weighted Round Robin,應(yīng)用和不同的Core綁定,對(duì)不同的Core中的隊(duì)列設(shè)置不同的優(yōu)先級(jí),還有一種方法是將應(yīng)用和多個(gè)core中的隊(duì)列進(jìn)行綁定,然后多個(gè)隊(duì)列分布在多個(gè)Core上,這種方案可以提高CPU的利用率,但是實(shí)現(xiàn)起來(lái)復(fù)雜。綜合來(lái)講,Weighted round robin可以讓SSD更好的按需響應(yīng)上層應(yīng)用請(qǐng)求和調(diào)配資源,以達(dá)到高優(yōu)先級(jí)應(yīng)用的IO先響應(yīng)的效果。

總的來(lái)看,Memblaze今年發(fā)布了兩款新產(chǎn)品。

第一款是上半年發(fā)布的高性能的PBlaze5920系列,采用96層3D NAND,有盤(pán)和卡兩種形態(tài),4k隨機(jī)讀最高可以達(dá)到97萬(wàn)IOPS,帶寬最高5.9GB/s。這款產(chǎn)品支持雙端口、reservation、在線固件升級(jí)以及端到端數(shù)據(jù)保護(hù)等功能。

第二款是低功耗的PBlaze5 520系列,采用96層3D NAND,支持NVMe 1.3標(biāo)準(zhǔn),最大功耗12w,典型負(fù)載下功耗10w。這款產(chǎn)品同樣也有盤(pán)和卡兩種形態(tài),支持雙端口和端到端數(shù)據(jù)保護(hù)等功能。

2021年,Memblaze將發(fā)布兩款PBlaze6 NVMe SSD,分別是PBlaze6 6920/6930和PBlaze6 6530,采用NVMe1.4標(biāo)準(zhǔn)。從這一代開(kāi)始,Memblaze的產(chǎn)品將全面采用PCIe 4.0接口。

功能方面,PBlaze6也將更完善。高延時(shí)IO定位、Weighted Round Robin等功能都將加入到這款產(chǎn)品中,同時(shí)PBlaze6還將支持NVMe MI標(biāo)準(zhǔn),使得服務(wù)器可以更靈活的管理PBlaze6,有關(guān)PBLaze6的更多信息也歡迎大家關(guān)注。

分享到

zhangnn

相關(guān)推薦