“性能”這個詞可以說伴隨著整個IT行業的發展,每次新的技術出現,從硬件到軟件大多數情況下都圍繞著性能提升而展開。“摩爾定理”指出CPU的處理速度每18個月會翻一番,但是進入21世紀的第二個十年來,似乎它的速度慢了下來。但是IT行業的各個行業領導者們,還是不斷在計算機的性能尋求突破,繼續挑戰物理極限。細看存儲行業,每款新的存儲產品的推出,也圍繞著如何更快、更好的服務前端服務器的I/O請求為中心。本文從I/O(Block)的流向介紹,試圖解讀整個I/O流與存儲性能之間的些許聯系。本文作為一篇存儲基礎的介紹文章,幫助讀者了解看似簡單的數據讀寫中的更多細節。
存儲I/O流與存儲性能:
存儲I/O(后文簡稱I/O)的處理過程就是計算機在存儲器上讀取數據和寫入數據的過程。這種存儲器可以是非持久性存儲(RAM),也可以是類似硬盤的持久性存儲。一個完整的I/O可以理解為一個數據單元完成從發起端到接收端的雙向的過程。在企業級的存儲環境中,在這個過程會經過多個節點,而每個節點中都會使用不同的數據傳輸協議。一個完整的I/O在每個不同節點間的傳輸,可能會被拆分成多個I/O,然后從一個節點傳輸到另外一個節點,最后再經歷相同的過程返回源端。
下圖演示了一個文件在經過整個I/O路徑中每個節點所進行的變化(以EMC Symmetrix存儲陣列為例):
圖1 文件在經過整個I/O路徑中每個節點所進行的變化
整個I/O流經歷一下幾個節點:
File System – 文件系統會根據文件與Block的映射關系,通過File System Manager將文件劃分為多個Block,請求發送給HBA。
HBA – HBA執行對這一系列的更小的工作單元進行操作,將這部分I/O轉換為Fibre Channel協議,包裝成不超過2KB的Frame傳輸到下一個連接節點FC Switch。
FC Switch – FC Switch會通過FC Fabric網絡將這些Frame發送到存儲系統的前端口(Front Adapter)。
Storage FA – 存儲前端口會將這些FC 的Frame重新封裝成和HBA初始發送I/O一致,然后FA會將數據傳輸到陣列緩存(Storage Array Cache)
Storage Array Cache – 陣列緩存處理I/O通常有兩種情況:1.直接返回數據已經寫入的訊號給HBA,這種叫作回寫,也是大多數存儲陣列處理的方式。2. 數據寫入緩存然后再刷新到物理磁盤,叫做寫透。I/O存放在緩存中以后,交由后端控制器(Disk Adapter)繼續處理,完成后再返回數據已經寫入的訊號給HBA。
Disk Adapter – 上述兩種方式,最后都會將I/O最后寫入到物理磁盤中。這個過程由后端Disk Adapter控制,根據后端物理磁盤的RAID級別的不同,一個I/O會變成兩個或者多個實際的I/O。
根據上述的I/O流向的來看,一個完整的I/O傳輸,經過的會消耗時間的節點可以概括為以下幾個:
CPU – RAM, 完成主機文件系統到HBA的操作。
HBA – FA,完成在光纖網絡中的傳輸過程。
FA – Cache,存儲前端卡將數據寫入到緩存的時間。
DA – Drive,存儲后端卡將數據從緩存寫入到物理磁盤的時間。
下面的表中根據不同階段的數據訪問時間做了一個比較,一個8KB的I/O完成整個I/O流向的大概耗時。(表中的耗時根據每秒的傳輸數據整除獲得,例如HBA到FA的速度有102,400KB/秒除以8KB得到78 μs)。根據表中的數據顯而易見,I/O從主機的文件系統開始傳輸到存儲陣列的緩存在整個這個I/O占比很小,由于機械硬盤的限制,最大的耗時還是在DA到物理磁盤的時間。如果使用閃存盤,那這個數據會大幅縮小,但是與其他幾個節點的傳輸時間相比,占比還是比較大的。
表1 不同階段的數據訪問時間比較
可以看到,存儲陣列的緩存在整個I/O流中所起到的作用是至關重要。緩存的處理效率與大小,直接影響到I/O處理的速度。而然,在實際的環境中,即使存儲陣列的緩存工作得當,主機的I/O也不會達到100 μs也就是0.1ms的水平,通常在1-3ms左右,就會認為I/O處理處于比較高性能的模式。原因就是因為另外兩個因素“數據頭處理”和“并發”。
1.“數據頭處理“由于I/O流中每個I/O的數據組成并不是只包含數據,如下圖所示,一個I/O除了數據以外還包含了Negotiation,Acknowledgement用來負責在I/O流中的每個節點傳輸和進行管理的。其中包含和TCP/IP一樣的“Handshaking“信息以及流控制的信息,比如初始化傳輸,結束通訊等等。Header中則會定義一些例如CRC校驗的信息,保證數據的一致性。所有這些數據的處理都會耗費一定的處理資源,增加I/O流的耗時。
圖2 數據頭處理
2.“并發“。由于I/O流整個過程中不可能只同時處理一個I/O,所有的I/O在HBA,FC,FA和DA處理的過程中都是已大量并發的情況下進行。而主要的耗時取決于I/O隊列的等待,雖然存儲陣列會在并發上進行優化。同一個處理Slice的處理還是會一隊列形式進行。如下圖所示,當存儲同時面對多個I/O的處理的情況,總會有某個I/O會在整個流的最后出來,而增加I/O的耗時。所以說,在I/O流的每個節點出現瓶頸,或者短板的時候。I/O的耗時就會增加。
圖3 存儲同時面對多個I/O的處理的情況
綜上所述,I/O流與存儲性能的關系可以總結為以下幾點:
完成一個I/O流主要經歷過的節點有HBA,FC網絡,存儲前端口FA,存儲緩存、存儲后端口,物理磁盤。而很個過程中最耗時的是物理磁盤。
存儲陣列的緩存的大小和處理方式直接影響到I/O流的性能,也是定義一個存儲陣列優劣的重要指標之一。
I/O的處理速度通常會遠離理論值,原因多個并發量較大而造成的隊列延遲。
優化I/O的方式可以從多個節點入手,而最顯著的效果是提升物理磁盤的速度。因為存儲陣列會把盡可能多的數據放入緩存,而當緩存用滿以后的數據交換則完全取決于物理磁盤的速度。
適當選用合適的RAID級別,因為不同的RAID級別的讀寫比例大不相同,可能使得物理磁盤處理耗時幾倍增加。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:淺析I/O處理過程與存儲性能的關系