冬瓜頭答疑 磁碟陣列內部FC AL的效能問題

2022-09-06 00:42:11 字數 1904 閱讀 9963

問:

大多數磁碟陣列都是通過兩個控制器後端的埠,組成1/2/4條fc-al環,來連線所有磁碟。

fc-al仲裁環的協議規定,同一時刻只有兩個裝置能傳送資料,也就是說,在一條fc-al環裡面,控制器的乙個後端埠充當了發起者的角色,環上的乙個硬碟充當了目的地的角色,在乙個時刻裡,後端埠發出資料讀寫指令,只有乙個硬碟能響應這個指令並傳輸資料。

那是否就意味著,一條fc-al環的總體效能,取決於乙個硬碟的讀寫效能?15k轉速的硬碟,持續讀寫頻寬不到70mb/s,iops不到400。那像ibm ds4800、emc cx-80之類的,總共4條環,後端的效能豈不是只有280mb/s、1600 iops?除了以陣列裡cache來提高速度,我不知道有沒有別的辦法,或者,磁碟陣列內部採用的不是工業標準的fc-al?

答:

這個問題非常好,而且也非常經典。要解釋這個問題,需要明白三點:

1.fcal的傳輸通道的確同一時刻只允許兩點間獨佔通道頻寬來傳輸資料。

2.控制器在有足夠io請求的情況下絕對不會讓通道閒著,會充分利用頻寬。

3.磁碟的外部傳輸率和內部傳輸率。fcal環路上存在多個裝置的時候,由於控制器的輪詢策略充分利用頻寬,整個系統在外體現為乙個永遠都在讀寫資料狀態而不是尋道狀態的大虛擬裝置(《大話儲存》第53頁也有描述),一旦某個裝置需要尋道,那麼就讓其他裝置來傳輸資料來彌補所浪費的時隙,所以整體系統可以發揮出乙個單一裝置的內部傳輸率。

下面是詳細總結:

當fcal環路上存在多個裝置的時候,控制器向謀裝置發起io之後,該裝置需要一定的尋道時間,而此期間內al環出於被釋放的狀態,此時控制器依然可以向另外的裝置發起io,也就類似於先把該做的命令全部下發,待某個裝置尋道完成請求將資料返回給控制器的時候,往往是多個裝置都出於積攢狀態,也就是他們都幹完活了,準備交差了,而此時只能排隊乙個乙個來,大家都鼓著勁呢。明白了這一點,我們就往下看。

關於iops數值的矛盾:

iops與吞吐量是一對矛盾關係。在關注iops的環境下,io size往往比較小,因為只要較小的size才不至於充滿頻寬達到瓶頸,所以,要達到較高的iops,io size需要比較小。而這種情況下控制器將io請求傳送給裝置之後,多個裝置出於積攢狀態,他們會仲裁從而乙個乙個的分別得到傳輸資料的機會,由於io size很小,所以每次傳輸資料很快就結束,這樣,乙個io就飛快的完成了,而上乙個裝置的io完成之後,下乙個裝置接著也會很快完成,因為他已經出於積攢態,待返回的資料早已在cache中準備傳送。

這樣的話,這個整體系統對外就表現為乙個永遠在完成io而不需要尋道的虛擬裝置。而如果al環上除了控制器之外只有乙個裝置,那麼環路就必須等待它尋道,因為尋道的時隙內,al環上已經沒有其他裝置可工作了。

然而,al環的這種彌補尋道時隙的效果也不是裝置越多就越好,不同的設計和產品都有自己不同的最佳裝置數量,目前的經驗值為64個,也就是環路總容量的一半,超過這個值,效能不會再有提高,甚至有所下降。

我們可以推論出另外乙個結論,也就是,慢速裝置,比如尋道時間長的裝置,越是慢速裝置,組成al環路之後其帶來的整體提公升越大,越是快速裝置,高規格的裝置,組成al環路之後,提公升的效能越有限。這就是al環或者其他共享匯流排/環方式彌補裝置自身處理產生的時隙的效果。

關於吞吐量/頻寬值的矛盾:

經過上面的描述,我們已經對共享匯流排/環傳輸方式的底層機制以及其效用有了乙個很好的理解了。在重視和追求高吞吐量,也就是充分利用頻寬的環境下,io size往往非常大,以至於在較低的iops值下就已經可以吃滿通道頻寬了。

往往這種情況下,上層所發出的io都是連續大塊的io,以至於al環之上的裝置尋道時間可以大大降低,這就使得裝置更快的出於積攢態,準備向外傳送資料。我們知道磁碟外部傳輸率由於磁碟內部不斷換道被打斷,致使其數值較內部傳輸率降低了大約20倍。而al環的效用就是彌補尋道所浪費的時隙,所以整體系統的外部吞吐量,就被提公升了上來,從而解決了這個矛盾。

mysql磁碟陣列部署 部署磁碟陣列

1 mdadm 命令用於管理linux系統中的軟體 raid硬碟陣列,格式為 mdadm 模式 選項 成員裝置名稱 常用命令 mdadm d dev md0 md0為自定義裝置名,檢視詳細資訊 2 mdadm 命令的常用引數和作用 a 檢測裝置名稱 n 指定裝置數量 l 指定 raid 級別 c 建...

磁碟管理和磁碟陣列

磁碟陣列的意思就是容錯式磁碟陣列,raid技術可以通過軟體或硬體實現,將多個磁碟整合成為乙個較大的磁碟裝置,該裝置不僅有儲存功能,還有資料保護的功能。raid具有多個不同的等級 level 每個level對整合後的磁碟實現不同的功能。1 raid0 兩塊盤同時存放資料 例如 有disk0和disk1...

磁碟陣列筆記

pvcreate dev sdg vgcreate enipvg dev sdg lvcreate enipvb n lv name size 50g mkfs t reiserfs dev enipvg lv name mount dev enipvg lv name mnt lv name um...