Memblaze近十年來專注于企業(yè)級NVMe SSD設(shè)計和研發(fā),2015年發(fā)布公司第一款NVMe SSD——PBlaze4,此后相繼發(fā)布PBlaze5系列多款NVMe SSD產(chǎn)品。
PBlaze系列在全閃存陣列的應(yīng)用
NVMe SSD在存儲陣列中的應(yīng)用已經(jīng)越來越廣泛,在SPC-1測試top10榜單中,基于NVMe SSD的全閃存陣列也逐漸占據(jù)主流。最近,支持NVMe協(xié)議的高端全閃存陣列宏杉MS7000G2-Mach完成了SPC-1測試,在8小時最高負載壓力下的穩(wěn)定性測試中始終保持平穩(wěn),時延抖動在最高壓力測試中不超過7μs。另一方面,MS7000G2-Mach最高壓力時延為0.337ms,在SPC-1 TOP10榜單中最低。
MS7000G2-Mach使用的就是288塊PBlaze系列NVMe SSD。SPC-1各項測試結(jié)果均來自Client端的應(yīng)用,也被稱為ASU,各項優(yōu)異的測試成績可以說明底層的NVMe SSD沒有任何性能抖動,SSD的穩(wěn)定性和延時表現(xiàn)都是很好的。從性能、延時和穩(wěn)定性等指標上看,都印證了PBlaze系列NVMe SSD非常適合存儲陣列使用。
高可用存儲陣列NVMe SSD的必備功能
存儲陣列對NVMe SSD要求非常多,首先是雙端口功能,雙端口NVMe SSD支持單個主機內(nèi)的兩條數(shù)據(jù)路徑,支持兩個控制器訪問同一NVMe SSD來實現(xiàn)冗余。
在另一種常見的應(yīng)用場景中,兩個主機系統(tǒng)也可以通過兩條路徑訪問同一存儲系統(tǒng)。如果在一條數(shù)據(jù)路徑失效或者一個主機掉電,另一條可用的數(shù)據(jù)路徑將繼續(xù)運行,對業(yè)務(wù)連續(xù)無影響。
雙端口提供了多個host訪問NVMe SSD共享命名空間的能力,提供鏈路冗余以及基于端口的PCIe和NVMe寄存器管理。另一項技術(shù)Reservations則可以作為雙端口模式下的仲裁機制,用于SSD訪問和管理權(quán)限的分配。
第二個必備功能,端到端數(shù)據(jù)保護。在數(shù)據(jù)中心里,盤的介質(zhì)損壞、電磁噪聲,或者是軟件Bug,都有可能產(chǎn)生靜默錯誤,這種錯誤一旦發(fā)生就非常危險,因為系統(tǒng)沒有報錯并且不可能糾正過來。面對靜默錯誤的問題,最好的方案是加上PI信息,把PI信息放在元數(shù)據(jù)里,保證寫下去和讀上來兩個過程當中都是正確的。
PBlaze系列目前支持五種LBA fomat格式,其中第一個和第二個是512和4096是不含有PI信息,其他的都是可以帶有8 byte的PI信息,還有4096加64,這是另外一種可以帶有更多的元數(shù)據(jù)格式。
如果FORMAT 512加 8,來看兩種方案DIF和DIX的區(qū)別,用戶數(shù)據(jù)和元數(shù)據(jù)的PI信息組合方式不一樣。DIF,用戶數(shù)據(jù)和PI信息是連續(xù)存放的,比如發(fā)4K數(shù)據(jù),每隔512B就加8 BYTE的PI信息,這樣連續(xù)存儲。DIX就是用戶數(shù)據(jù)和PI信息是分開的,如果發(fā)4K數(shù)據(jù),用戶是4K數(shù)據(jù)和8個PI信息是分開進行發(fā)到SSD控制器上。當一切配置好之后,我們就可以用標準的NVMe命名進行發(fā)讀寫的IO。
第三個,非?;A(chǔ)也是非常重要的功能就是在線固件升級。存儲陣列對于SSD的要求是非常嚴格的,不允許SSD有任何的升級固件還需要進行重啟機器這樣的操作。那么從SSD升級固件操作原理來看,一共有兩部分,首先通過firmware Download命令把新固件鏡像文件下載SSD的DRAM當中,第二個就是激活,把新的固件變成現(xiàn)有的固件進行激活。
目前PBlaze5 920系列全部支持在線固件升級功能,這里進行了一個測試,在這個測試當中對一個固件升級,在此過程當中,同時還跑了FiO,這個升級過程當中FiO性能占了一到兩秒的時間,一到兩秒可以看到性能是恢復的。結(jié)合存儲系統(tǒng)的cache和raid等方案,可以保障上層業(yè)務(wù)連續(xù),這樣就可以彌補SSD固件升級1~2秒的性能中斷問題,目前看停1~2秒是滿足存儲客戶要求的。
在線固件升級是不需要重啟服務(wù)器,甚至不需要停下業(yè)務(wù),就可以達到一個升級固件的效果。今年發(fā)布的PBlaze5 920、PBlaze5 520及明年將發(fā)布的PBlaze 6系列都支持在線固件升級,這對服務(wù)器運維來講是非常有價值的功能。
提升運維效率及負載按需均衡的新技術(shù)
Memblaze做了一些新的功能,第一個是延時分布。延時分布功能可以將過去一段時間里發(fā)的所有IO做一個直方圖,一共有98個區(qū)間,最后一個區(qū)間是4秒到正無窮,所有IO的延時都會統(tǒng)計后記錄在不同的區(qū)間中。有了這個功能,就可以觀察過去一段時間里設(shè)備延時的分布,這樣對于設(shè)備運營狀態(tài)包括系統(tǒng)的負載壓力的變化,對于我負載的壓力以及其他的系統(tǒng)運營狀態(tài)都有一個非常綜合的評估。這個功能在PBlaze5 920已經(jīng)實現(xiàn)了,將在2021年發(fā)布的PBlaze 6系列將正式上線這項功能。
iostat這樣非常常用的硬盤性能監(jiān)控工具,它有一個問題,可能平均延時低于兩毫秒,但是這個過程當中很有可能有少數(shù)IO延時非常高,這樣異常的IO經(jīng)過其他十幾萬甚至是幾十萬IO平均之后,整體的io平均延時可能很低。
為了追蹤這些少數(shù)的高延時io,Memblaze做了一個功能——高延時打印,首先設(shè)置一個預(yù)值,比如100毫秒,可以將過去一段時間里,所有超過100毫秒的一個IO無信息打印出來,包括這樣的時間戳,是什么類型的IO,另外QID、CID、數(shù)據(jù)量以及IO延時大小等等都被打印出來,有了這個信息,就很容易定位到異常的IO。
接下來是提高運維效率的功能就是Telemetry,他的用途是通過標準的NVMe命令來收集廠商自定義的Log。不同廠商、不同品牌的NVMe SSD接口和Log格式不盡相同。用戶需要一個標準接口獲取NVMe SSD的Log。當發(fā)生問題時,通過標準化的NVMe命令獲取系統(tǒng)和NVMe SSD的Log。
最后一項功能是Weighted RoundRobin(WRR),在PBlaze 5和PBlaze 4的控制器處理上層分下來的IO都是輪詢的,在一個多核服務(wù)器里往往有多個提交隊列同時往控制器上面發(fā)IO,發(fā)的時候?qū)χ煌腟Q,控制器使用一個類似輪詢的機制,從不同SQ里取command。這樣就會造成一個問題,有的關(guān)鍵應(yīng)用的優(yōu)先級比較高,我們希望能夠盡早響應(yīng)提交隊列的命令,但是這Round Robin沒有辦法做到區(qū)別對待多個SQ, Weighted Round Robin可以給不同的SQ加上一個權(quán)重。
根據(jù)NVMe 協(xié)議,Weighted Round Robin首先將IO權(quán)重劃分為三級,第一級是Admin SQ發(fā)的IO,這些管理命令優(yōu)先級是最高的。之后是Urgent級別的IO,這一級的IO權(quán)限雖然比管理命令的IO低,但是高于其他的IO,最后是帶權(quán)重的普通的IO,這級又分高中低三個檔次。
有了這個權(quán)重等級的劃分,Controller就可以根據(jù)這些權(quán)重有選擇性地處理IO了。目前新版本的Kernel都已經(jīng)開始支持Weighted Round Robin,應(yīng)用和不同的Core綁定,對不同的Core中的隊列設(shè)置不同的優(yōu)先級,還有一種方法是將應(yīng)用和多個core中的隊列進行綁定,然后多個隊列分布在多個Core上,這種方案可以提高CPU的利用率,但是實現(xiàn)起來復雜。綜合來講,Weighted round robin可以讓SSD更好的按需響應(yīng)上層應(yīng)用請求和調(diào)配資源,以達到高優(yōu)先級應(yīng)用的IO先響應(yīng)的效果。
總的來看,Memblaze今年發(fā)布了兩款新產(chǎn)品。
第一款是上半年發(fā)布的高性能的PBlaze5920系列,采用96層3D NAND,有盤和卡兩種形態(tài),4k隨機讀最高可以達到97萬IOPS,帶寬最高5.9GB/s。這款產(chǎn)品支持雙端口、reservation、在線固件升級以及端到端數(shù)據(jù)保護等功能。
第二款是低功耗的PBlaze5 520系列,采用96層3D NAND,支持NVMe 1.3標準,最大功耗12w,典型負載下功耗10w。這款產(chǎn)品同樣也有盤和卡兩種形態(tài),支持雙端口和端到端數(shù)據(jù)保護等功能。
2021年,Memblaze將發(fā)布兩款PBlaze6 NVMe SSD,分別是PBlaze6 6920/6930和PBlaze6 6530,采用NVMe1.4標準。從這一代開始,Memblaze的產(chǎn)品將全面采用PCIe 4.0接口。
功能方面,PBlaze6也將更完善。高延時IO定位、Weighted Round Robin等功能都將加入到這款產(chǎn)品中,同時PBlaze6還將支持NVMe MI標準,使得服務(wù)器可以更靈活的管理PBlaze6,有關(guān)PBLaze6的更多信息也歡迎大家關(guān)注。