今天與以前一位做存儲的同僚(現在支付寶)還有brocade上海那邊的工程師聊了一些san的話題,在這裡記錄一下,順便寫一下我了解的san的設計概要,希望對大家有點幫助。
對于一個企業來說,資料是相當重要的(垃圾資料就不說了)。比如銀行的個人賬戶資訊,逾時的銷售記錄等等。
在資料的生命周期中存在多種多樣的特征(動态的和靜态的)。如資料的存在形态,資料量,粒度,增長速度,使用頻率等等
根據不同的場景,設計合理的存儲架構即可以滿足企業的當下需求,又要兼顧未來企業的發展,減少碳排放,注意投資保護等等。
設計合理的存儲架構需要對當下企業存儲情況進行調研,充分了解業務的發展和當下的需求。評估未來幾年的存儲需求(包括io,吞吐量,容量等等),對于一個已有業務,可以取出曆史資料進行趨勢分析,推測未來幾年的趨勢。
扯了這麼多,開始進入主題,今天的主題是san的架構設計,先來了解幾個術語。
das(direct-attached storage) :
也稱為非網絡共享存儲,從字面上很好了解,這應該是比較早的共享存儲的技術。典型的是sas,ultra scsi接口連接配接的存儲等等。優點是比較便宜,缺點是天花闆太低了,或者說可擴容的餘地較小,投資回報也是比較小的,因為使用率較為低下。
nas(network-attached storage)
或稱為網絡共享存儲,如smb,nfs,mfs,afs等等。建構一個nas需要一台提供共享服務的伺服器,客戶機需要支援共享服務的用戶端。優點是共享友善,廉價等。确定是高度依賴網絡,性能可能不穩定,普通的lan中延時較大(infiniband可能會較好,不過造價昂貴)。
san(storage area network)
存儲區域網絡,也可以了解為存儲專用網絡。建構一個基本的san環境需要光纖交換機,連接配接裝置,支援san的存儲,伺服器等。san的優點是傳輸速度快,擴容上限大大提高,擴容友善,投資保護大。缺點是造價較為昂貴,多了一個布線的環節(随着fcoe的發展,布線可能會簡單很多)。
das,nas,san三者的差別:
das的存儲和伺服器之間沒有其他的中間層。nas和san的存儲和伺服器之間都存在中間層(網絡,交換機或提供共享服務的伺服器)。
對于nas和san,用一個圖來加深一下認識:
接下來細說一下san:
首先,在san中存在兩種最基本的角色,initior(active),target(passive)。initior就是發起請求的那一方(如hba),target是接受請求的那一方(如存儲的fc口)。而fc switch是将這兩方串起來的裝置(zone),同樣fcsw還承擔了管理和監控的角色。根據initior的特性,fcsw的另一個功能是屏蔽兩個initior之間的交換。
被串起來的兩個裝置就像建立了一個獨有的通道一樣,被稱為fibre channel,fibre channel 是一個二層的協定,正因為如此san的擴充也是有上限的,比以太網小得多。每一個fabric中的所有交換裝置必須有相同的zone資料資訊,換句話說,在一個fabric中的任意一個裝置都必須知道initior和target的通路控制資訊,這有點類似于mac位址資訊表但是又不一樣,因為fabric網絡是單向的,而lan是雙向的。
下面來看幾個常見的san架構圖,并解釋一下各個架構的優缺點:
flat san top:
這個圖上架設的是一個沒有使用isl(inter-switch links)的單層san網絡,呈現的特征是伺服器和存儲的交換不需要跨兩個交換機,因為交換機之間的交換又增加了傳輸的延時,降低了io響應速度。
備援的話通過架設兩個交換機來實作。使用flat架構的好處是伺服器到存儲的通路速度是最快的,也符合ras,(reliability,availability,serviceability)
如果要擴充flat架構的fabric網絡,但是又不想使用isl連接配接的話,需要增加交換機。如下:
從flat的架構上我們很容易看出,flat架構很快就會到達天花闆,随着交換機的增加,存儲的端口數将很快成為flat的瓶頸。如果使用switch級聯的方式,isl的傳輸延時也将成為性能的瓶頸,通過與brocade原廠工程師了解,一般最多不要超過7個交換機進行級聯,否則延時将成為嚴重瓶頸。
在flat中還要注意避免over-subscription,也就是伺服器和存儲的比例,一般1gb鍊路是7:1,2gb鍊路是12:1,4gb鍊路是18:1。超過這個比例可能會産生性能問題,當然這不是必然,還是要根據伺服器的iops需求來定義的。
mesh san top:
mesh架構的san環境,所有的fcsw之間都是互通的,伺服器通路存儲可能會跨越多個fcsw,造成通信延時。同時由于每個交換機都需要互聯,将消耗大量的端口來進行isl通信,在擴容上也是很麻煩的。這中設計一般是不推薦的。
core-edge top:
因為我們前面講到falt模式下,整張網很容易達到端口上限。于是出現了core-edge架構,它實際上是整合了多個flat fabric,使得各個fabric之間的存儲可被共享。在core-edge的設計中,我們還是要盡量避免isl通信,如将通路量最高的存儲放在同一個fabric,而将通路量較小的并且需要多個fabric伺服器共享的方在core層。
下面是一個三層結構的core-edge設計模型
其實總結起來将,就是考慮成本,考慮未來的發展趨勢,按需要設計。
先寫到這裡