數據存儲已經成為企業應用中的一個薄弱環節,如果廠商不重視這方面的話,這項技術將面臨著脫節的危險。I/O棧沒有與硅芯片的升級更新保持一直步伐,最終它將有可能被像相變內存(承諾提供對數據的自由訪問)這樣的新技術所取代。
問題很簡單:內存帶寬和CPU性能的增長速度遠遠高于磁盤和總線性能以及磁盤通道速度的增長,再加上I/O接口(POSIX)的限制,結果只能是隨著時間推移I/O瓶頸越來越嚴重。
回顧過去五年存儲領域不同板塊的性能增長,我們可以看到一些明顯的趨勢:
·內存帶寬:Intel提供的內存帶寬從2004年的4.3 GB/s增長了9.3倍到現在的40 GB/s,AMD提供的內存帶寬也從5.3 GB/s增長了4.8倍到25.6 GB/s。
·CPU性能:根據摩爾定律,晶體管數量每18個月就會翻一番,那么這就意味著性能至少要增加10倍多(而事實并非如此)。
·PCIe總線:PCI總線的性能從2004年每個通道的250 MB/s增長到2008年每通道500 MB/s,明年有望超過1 GB/s,增長2倍(很快將達到4倍)。
·每磁盤通道速度:從4Gb光纖通道到6Gb SAS增長了50%。
·SATA磁盤性能從68 MB/s增長到84 MB/s,而光纖通道/SAS從125 MB/s增長到194 MB/s,光纖通道/SAS的增長速度近似于每磁盤通道速度,而SATA只增長了大約24%。
·磁盤密度:光纖通道/SAS的磁盤密度翻了一番,從300GB增長到600GB,而SATA則從250GB增長到2TB,增長了8倍。
正如你所看到的,磁盤通道速度和性能以及PCIe總線落后于CPU和內存帶寬性能。這意味著,訪問數據的速度遠遠跟不上處理數據的速度,POSIX無法判斷什么是重要的,或者無法定義服務質量,隨著其他選擇的出現,可能影響存儲網絡性能的問題也涌現出來。
數據訪問速度在系統中的任何位置都沒有提高,不管是PCIe、存儲通道還是磁盤驅動器。唯一的例外就是固態盤,尤其是SLC固態盤。五年前沒有哪項技術能夠與這些驅動器匹敵,但是它仍然受到通道速度(目前為6Gb SAS或者每通道768 MB/s)的限制。
POSIX:問題的一方面
我看到的一個問題是,在應用和存儲之間我們有一個最小界面。我們所擁有的是標準POSIX控制,打開、讀取、寫入和關閉以及其他一些系統調用命令。沒有方法提供關于文件使用情況的信息;例如,你可能希望得到一個表明文件將被連續讀取的提示,或者關于一個文件可能被復寫的提示。可能會有很多潛在的提示,但卻沒有一個提供這些文件提示的標準方式,盡管有些文件系統使用非標準的方法,但是接口只是問題的一個方面。真正的問題是,存儲性能遠遠落后于系統性能,這使得存儲更難以使用,從而讓它不再適用于實際使用。我認為性能落后是有很多原因的,不過其中有幾個比較主要的:
·設計內存的PCIe總線接口是很困難并耗費成本的一件事,而且將很多PCIe與內存連接會大幅度提高系統的成本
·因為PCIe總線性能與CPU和內存升級更新是不同步的,那么為什么我們需要更高的通道性能呢?
·磁盤驅動器接口使用的技術和通道是一樣的,因此通道的性能不會提高太多
這個問題困擾了我很長時間。我總是不斷問自己,為什么這個情況沒有改變,最后我總是得出相同的原因:在存儲方面提高性能是很難又耗費成本的。在這里或者那里作出一個變動并不能改變整個數據路徑的性能。簡單的瓶頸分析就可以證明這一點,因為即使改變了所有,但如果漏掉一個組件意味著仍然存在瓶頸。從PCIe總線到設備,再到這之間的一切(包括軟件界面)都需要通過改變來提升性能。沒有哪家廠商可以做到這一切。沒有人會搭建一個非標準的環境,因為設計成本太高,而市場規模太小。
現在有很多廠商開發基于PCIe閃存的存儲設備,這種設備解決了通道接口問題和一些性能問題。至少從目前來看,這種設備的成本對于消費級市場來說過高了,而消費市場是否青睞這種技術決定著是否向存儲市場擴展。即使是這種設備,PCIe總線仍然是一個性能瓶頸,這方面現在以及未來都不太可能有太大的改善。
有一項技術所要求的帶寬遠遠超過了PCIe,那就是固態盤。目前固態盤的讀取速度超過500MB/s,大約是一個SAS通道的65%;對于SATA驅動器來說,它的峰值性能可以達到105MB/s,大約是SATA通道的14%,對于SAS驅動器來說,它的峰值性能可以達到194MB/s,大約是SAS通道的25%。現在最底線是,它不會占用太多的磁盤驅動器用于一個SAS驅動器。在光纖通道問世早期,也就是1998年,一個雙光纖通道環可以支持9個磁盤驅動器的I/O。現在,企業驅動器的2個6Gb SAS通道可以支持少量SAS驅動器,所以一直沒有太大改善。現在我們剛剛達到6Gb SAS技術水平,大多數RAID系統仍然使用的是3Gb技術,這意味著使用目前最快的SAS驅動器可以支持大約1.9個驅動器。