前兩天在說基于SMB的NAS檔案分享功能速度根本就是弱到渣,然後給大家一個截圖:
這時候就有人出來硬剛,說這是在萬兆網絡中跑出來的速度。
恰好有時間,錄一段視訊,咱們一刀不剪的看一下iscsi的性能表現:
完整的視訊有19分鐘,放在文末,有興趣的粉絲們可以去看一下。
這是iN給大家前期講Windows存儲的系統桌面,隻安裝了一套Windows 2025,除此之外并沒有安裝其他任何軟體。
網絡也隻利用機器主機闆所附帶的intel 82574L網卡,這是一個intel 08年釋出的網卡,到現在已經釋出了16年了,再有兩年就是好漢一條了。
注意一下加亮的部分是1000/1000Mbps。
在這台機器上的D盤iso檔案夾内包含了一些常用的系統安裝鏡像包,我們選擇兩個用來做大檔案傳輸測試:
先做一個SMB傳輸,目的地是一台Windows開啟的SMB共享檔案夾
直接粘貼:
大檔案上傳,在磁盤上的讀取是順序讀取,最大限度的利用了MTU資料包的大小,在一開始的表現就是110MB/秒。這個速度是符合千兆網絡的傳輸預期的。
但在傳輸了十幾秒之後由于大量SMB資料包給遠端帶來的額外系統開銷,開始讓傳輸速率有所降低。
這并不是網絡性能的問題,而是在服務端需要排程和重組SMB資料包帶來的後果,這時候我們就可以認為千兆速率是跑不滿了。
當然了資料傳輸和SMB資料包的重組的處理能力是不平衡的,在傳輸一段時間之後傳輸速率會有所上升,恢複到千兆網絡應有的水準。
但是,我們在傳輸大檔案的時候這種波動是會反複發生的,而且每次都會更加加劇網絡速度的降低程度。
是以,即便是很多人說的大檔案傳輸,在SMB上最終也會成為這樣的效果:
之是以會出現這樣的現象,并不是網絡或者系統的效能問題,而是SMB協定本身的設計就不是用來進行大量資料傳輸的。SMB(Server Message Block,伺服器消息塊)的設計初衷就像名字一樣主要功能是使網絡上的機器能夠共享計算機檔案、列印機、串行端口和通訊等資源并且提供經認證的程序間通信機能。“程序間通信”才是SMB最重要的用途,傳檔案這件事雖然大家用的更廣,有更多的群衆基礎,但并不是SMB的專有用途。就好比我們用家用小轎車運大米一樣,能不能運呢?必然是能的;但如果真正的糧食加工廠運大米,是用卡車的,而不會使用家用小轎車來運。
在SMB中傳送的檔案被讀取、解包,封包、傳送、解包、再轉儲為磁盤檔案都給“傳檔案”這件事造成了極大的額外負擔。
那麼咱們再看利用iscsi進行檔案傳輸:
E盤是一個通過同樣的網絡挂載在系統上的iscsi硬碟。在磁盤屬性中被windows系統直接視為一塊硬碟:
還是剛才的兩個檔案:
向E盤拷貝的時候就是1GB/秒到速度,不過這個速度并不依賴于網絡的帶寬,而是依賴于伺服器為這塊iscsc盤提供的系統級緩存。
當系統配置設定的緩存滿了,速度會降低到網絡線路的速度:
這時候才開始真正的網絡傳輸,隻不過,你會發現,在短暫的傳輸速度下降之後,傳輸速度還會立刻攀升起來
直到遠端的伺服器寫入緩存寫滿,這時候基本的傳輸過程也就結束了。
我們對比一下傳輸的時間點:
通過SMB傳輸檔案從視訊的43秒開始,到4分25秒結束,總計耗時3分42秒,
通過iscsi傳輸同樣的檔案,從4分57秒開始,到6分14秒結束,總計耗時1分17秒。
在這次的大檔案的傳輸中iscsi所需要的時間僅僅是SMB的34%
一般的情況下,傳輸大檔案實際上在生産力環境中用到的還不是很多,我們更多的是處理很多小檔案。
這個用于測試的檔案夾裡面有大約5萬個小檔案,我們分别複制到SMB共享檔案夾和iscsi磁盤中做一個小檔案的對比測試:
這時候你會發現,在傳輸小檔案的任務中,SMB是KB級别的傳輸速度,而在iscsi下小檔案的傳輸依然維持到了MB級别。
這種狀态下,對于小檔案的頻繁打開和關閉這樣的句柄操作讓系統根本跑不滿網絡帶寬,對比的就是SMB和iscsi這兩種方式對小檔案操作的效率。
由于iscsi是基于對磁盤塊的操作,是以并不需要像SMB頻繁的封包和解包,額外的資料包處理工作就全部省略掉了,是以,我們可以看到在複制檔案的時候iscsi的速度要遠高于SMB。
當iscsi上的小檔案複制任務完成的時候,SMB其實才做了10%。
對比對檔案的操作,例如删除:
删除指令也是SMB通過列目錄再逐個發送删除指令完成的,是以我們可看到在删除的過程中SMB以每秒300多個檔案的速度進行删除。
到了iscsi呢?已經不需要看到數了:
很多小檔案的傳輸速度實際上才是生産力的環境所需要的,并不是時時刻刻我們需要搬運大檔案。iscsi所帶來的低延遲特性,則是可以秒殺SMB的繁瑣操作的。
有很多小工作室,往往會使用到一些網絡共享檔案夾,讓大家在上面剪輯視訊,或者共享一些素材資源。這種事情放在SMB共享的環境中,iN就隻能說SMB在降低大家的“生産力”了。
對于大的視訊剪輯操作,我們注重的是資料的傳輸性能和IOPS性能。
對于這方面的性能測試,iN選擇了Anvil's Storage Benchmark測試工具,我們跑一跑測試看一下結果:
首先是SMB的測試,你會發現無論測試軟體怎麼跑都是跑不滿網絡帶寬的。
而在iscsi的測試中,我們可以看到千兆網絡終于可以發揮到自己應有的水準:
最後的測試資料大家可以參考一下:
SMB的檔案共享:
讀取得分211.84、寫入得分137.17 總分 349.02
iscsi的性能測試:
讀取得分492.99、寫入得分442.25 總分935.24
剛剛咱們還提到了IOPS,IOPS是一個用于電腦儲存設備性能測試的量測方式,可以視為是每秒的讀寫次數。它所反映的就是高強度工作的時候存儲系統能夠快速響應的基本能力。大家在測試報表中自行查閱吧,你會發現這兩種模式的IOPS性能根本就不是一個數量級的。
完整視訊:
視訊加載中...