閃存存儲(chǔ)設(shè)備的高速度已經(jīng)改變了應(yīng)用連接數(shù)據(jù)的方式,同時(shí)也預(yù)示著老舊存儲(chǔ)設(shè)備的末日要來了。
直面存儲(chǔ)系統(tǒng)的瓶頸
由于虛擬化技術(shù)的出現(xiàn),服務(wù)器端的計(jì)算效率和靈活性獲得了突飛猛進(jìn)。然而,存儲(chǔ)端方面的速度卻一直停滯不前。實(shí)際上,存儲(chǔ)世界與磁帶剛開始統(tǒng)治數(shù)據(jù)中心的時(shí)代相比并沒有做出非常大的改變。因此,我們發(fā)現(xiàn)自己處在這樣一種形式之下:數(shù)據(jù)中心內(nèi)其中一部分堆棧的效率相比另外一部分有著明顯的提高。更為糟糕的是,這一弱勢(shì)群體在架構(gòu)上就無法采用最新出現(xiàn)的存儲(chǔ)領(lǐng)域的創(chuàng)新,也就是閃存技術(shù)。
作為對(duì)上述形式的回?fù)簦愃乒雀韬湍樧V之類的技術(shù)巨頭已經(jīng)開始建立自己研發(fā)的可擴(kuò)展和低成本的系統(tǒng),但是這類創(chuàng)新還沒有找到進(jìn)入企業(yè)級(jí)數(shù)據(jù)中心的路。同時(shí),存儲(chǔ)市場(chǎng)還是被那些銷售磁盤容器的廠商所占據(jù)。而這類短期內(nèi)的解決方案向用戶承諾了很多,但是卻無法解決根本上的問題。
在這篇文章中,我將描述一些Coho Data工程團(tuán)隊(duì)的一些見解,以及我在參與建設(shè)一個(gè)高性能、Web擴(kuò)展存儲(chǔ)系統(tǒng)時(shí)的一些心得。特別是,我將重點(diǎn)介紹在現(xiàn)代橫向擴(kuò)展存儲(chǔ)系統(tǒng)中發(fā)掘新興的閃存存儲(chǔ)全部容量時(shí)所遇到的挑戰(zhàn)。
當(dāng)人們嘗試?yán)斫夂吞岣呷魏我粋€(gè)軟件系統(tǒng)的性能時(shí),首先想到的第一個(gè)階段一般都是去確定最重要的性能瓶頸在哪里。我們都本能地知道他們是如何工作:如果我們想讓一個(gè)軟件系統(tǒng)盡可能快地去運(yùn)行,瓶頸就是阻止它跑的更快的那一部分因素。為了讓這個(gè)系統(tǒng)運(yùn)行更快,重點(diǎn)必須放在確定和修復(fù)瓶頸的工作上面。然而,有趣的是,一個(gè)系統(tǒng)中的瓶頸并不會(huì)自己憑空消失,而是會(huì)轉(zhuǎn)移到該系統(tǒng)的其他部位。
在存儲(chǔ)系統(tǒng)中,瓶頸一直是在于存儲(chǔ)介質(zhì)——因?yàn)樽畛醯拇艓П旧恚约昂髞淼男D(zhuǎn)磁盤本身存在的機(jī)械限制。一個(gè)單獨(dú)的旋轉(zhuǎn)磁盤可以順序地讀取或?qū)懭霐?shù)據(jù),速度大約在100MBps。然而,當(dāng)磁盤開始隨機(jī)接入數(shù)據(jù)的時(shí)候,這個(gè)數(shù)字就會(huì)變?yōu)?0MBps,甚至更低,而且大多數(shù)時(shí)候會(huì)低很多。其他任何有關(guān)性能的因素都無關(guān)緊要,因?yàn)橐苿?dòng)磁頭去接入數(shù)據(jù)所受到的物理限制可以蓋過其他任何有關(guān)性能的因素。因?yàn)榇疟P系統(tǒng)本身比其他部分慢很多,世界上最快的存儲(chǔ)系統(tǒng)也都是用很多很多的磁盤聚集而成的。即便這樣,磁盤本身仍然是瓶頸。
PCIe SSD讓瓶頸轉(zhuǎn)移
隨著企業(yè)級(jí)PCIe SSD的出現(xiàn),這個(gè)形式開始出現(xiàn)改觀。即使是一片單一的PCIe SSD,就可以達(dá)到數(shù)以百計(jì)的旋轉(zhuǎn)磁盤的速度。不僅如此,PCIe SSD還不存在機(jī)械上的限制,它不會(huì)遇到隨機(jī)數(shù)據(jù)讀寫速度慢的問題?,F(xiàn)在通過購買一個(gè)單一的存儲(chǔ)設(shè)備就可以滿足一個(gè)10GB網(wǎng)絡(luò)鏈路的需求。想一想:一塊盤就可以提供一個(gè)高速物理網(wǎng)絡(luò)連接的高速需求!
閃存這個(gè)用于構(gòu)建存儲(chǔ)系統(tǒng)的部件帶來的變化就是讓原有的存儲(chǔ)系統(tǒng)的瓶頸整體轉(zhuǎn)移。原先最慢的部分瞬間變成了系統(tǒng)中最快的部分。如果我把額外的閃存設(shè)備放在第一裝置,同時(shí)以同樣的方式將磁盤添加到常規(guī)陣列中,網(wǎng)絡(luò)本身將成為瓶頸。這種形式變成了:我正在浪費(fèi)性能,因?yàn)槲业膽?yīng)用程序并不能讓我的存儲(chǔ)設(shè)備達(dá)到滿載。
但是,網(wǎng)絡(luò)并不是成為瓶頸的唯一一個(gè)目標(biāo)因素。這些閃存設(shè)備如此之快,它們能夠提供足夠快的I/O處理速度,因此可以充分利用閃存硬件,但這也意味著它們需要消耗大量的CPU。因?yàn)檎?qǐng)求處理需要消耗這么多的CPU(+微信關(guān)注網(wǎng)絡(luò)世界),因此PCIe閃存設(shè)備需要有專用的處理器來足夠快地處理這些請(qǐng)求,這樣才能滿足一個(gè)10GB的網(wǎng)絡(luò)連接。
為了更好地理解新存儲(chǔ)系統(tǒng)對(duì)性能帶來的影響,我想到了“數(shù)據(jù)孔徑”的想法。在攝影技術(shù)中,透鏡的孔徑是由透過它的光的量和寬度來進(jìn)行測(cè)量的。你可以想象訪問數(shù)據(jù)的方式也是如此:數(shù)據(jù)孔徑就是所有應(yīng)用程序要訪問這些數(shù)據(jù)所需要的路徑寬度。
存儲(chǔ)系統(tǒng)傳統(tǒng)上并不需要擔(dān)心孔徑的問題,因?yàn)樵谥暗腎T架構(gòu)里,它不是瓶頸,而在現(xiàn)在這個(gè)IT環(huán)境之下,存儲(chǔ)系統(tǒng)已經(jīng)變成了瓶頸。這是我們的工程師團(tuán)隊(duì)在兩年前面臨的第一個(gè)挑戰(zhàn),當(dāng)時(shí)我們正開始嘗試用這些新興的高性能設(shè)備去構(gòu)建可擴(kuò)展的存儲(chǔ)系統(tǒng)。在一系列的基準(zhǔn)測(cè)試和分析之后,我們發(fā)現(xiàn)避開顯著瓶頸來構(gòu)建可擴(kuò)展存儲(chǔ)系統(tǒng)的唯一一個(gè)方法就是平衡所有的用于構(gòu)建存儲(chǔ)系統(tǒng)的物理介質(zhì)資源。
傳統(tǒng)的存儲(chǔ)系統(tǒng)都依賴于一個(gè)固定的網(wǎng)絡(luò)連接和一個(gè)靜態(tài)的存儲(chǔ)控制器(或者叫頭),然后添加磁盤以達(dá)到提高性能和容量等縱向擴(kuò)展的目的?,F(xiàn)代的存儲(chǔ)系統(tǒng)必須采用不同的方法,即CPU和網(wǎng)絡(luò)資源必須達(dá)到橫向擴(kuò)展,方法就是使用一定比例的高性能閃存設(shè)備。
在平衡了所有物理資源之后的結(jié)果就是,一個(gè)存儲(chǔ)系統(tǒng)可以與周圍的配件來一起進(jìn)行設(shè)計(jì)。一個(gè)PCIe閃存設(shè)備與一個(gè)足夠快的CPU配對(duì),可以處理其與網(wǎng)絡(luò)之間的I/O調(diào)度問題。這一配對(duì)與一個(gè)10GB的網(wǎng)絡(luò)接口相連,這可以充分地利用閃存的速度。因此,訪問數(shù)據(jù)的速度呈現(xiàn)線性增長(zhǎng),因?yàn)榇鎯?chǔ)系統(tǒng)得到了橫向擴(kuò)展。
這個(gè)數(shù)據(jù)孔徑的挑戰(zhàn)只是傳統(tǒng)縱向擴(kuò)展陣列走向滅亡的其中一個(gè)原因。用Web擴(kuò)展的方式來存儲(chǔ)可以讓用戶享用更好的靈活性,而橫向擴(kuò)展架構(gòu)的商用硬件可以更好地用更高性能和更經(jīng)濟(jì)的方法來使用閃存硬件。
在Coho Data,我們已經(jīng)采取了這種方法,通過將軟件定義網(wǎng)絡(luò)[注]合并進(jìn)入系統(tǒng)來更好地有規(guī)模地管理性能,當(dāng)然,這將是另外一個(gè)主題需要討論的技術(shù)。