近期與一家匿名供應商討論,在共享的存儲陣列里我們是否真的需要服務質量(QoS)。他的想法是,如果我的存儲陣列和網絡有足夠的帶寬/IOPS,那何苦還要實現服務質量。乍一看這似乎是一個合理的假設,假如我擁有比所需更多的資源,那么滿足所有需求自然不成問題。單就其是否有意義而論,我們先退一步,看看在過去的15-20年,人們是如何提供持續存儲的。
問題
持續存儲在計算中一向是瓶頸,因為磁盤和磁帶I/O比處理器和內存運算發生要慢得多。而存儲比數據在處理器往返的速度要慢3到4倍(納秒&微秒對比毫秒),相互之間差異巨大。因就有了著名計算機架構師Gene Amdahl曾說的一個好理由,“最好的I/O就是你什么都不必做”。外部I/O拖后腿。因此,存儲一直力圖盡可能快地傳遞I/O請求。正如“麥當勞”式配送相對飯館訂餐的區別在于時間間隙被提前分配到了哪里。
具體來說,對于麥當勞店,顧客按順序享受服務,即便他們一時半會吃不到。選錯隊你還可能會排在猶豫不決,團購訂餐的人后面又或者還有一個動作遲緩的服務員。沒有優先權和特殊待遇——用餐時間未知。很多帶寬是通過增加更多服務器(可擴展性受限)提供。相對而言,飯店有預訂時間間隙,確保了大廚能及時奉上美食。食物利用晚上的時間均勻分配(希望如此)以期顧客有更一致的體驗。間隙受限,還要進行策劃和管理。如果沒有預約,你可能會被拒之門外。飯店的“向外擴展”是通過增加更多覆蓋面(桌位)再加上更多人手。
存儲陣列是由HDD構建,I/O響應能力具有不可預測性和多變性,取決于I/O請求的工作負載概要。供應商采用如高速緩存,預取,隊列重組和降級來緩解峰值并簡化I/O。一些供應商實施無服務質量的優先級技術,旨在實現盡可能多的后端I/O。而對于閃存,這些問題就不大明顯了,因為SSD提供比HDD更高吞吐量和更低的延遲, 甚至隨機工作負載(受制于管理問題如垃圾回收)。主機I/O更具可預測性和一致性,但在共享組件如前端端口,內部軟件隊列,后端控制器和共享SSD上仍會出現情況。
添堵的鄰居
由于這個共享性質,可能會有“添堵的鄰居”問題,一臺主機阻斷I/O“交通”造成他人損失。即便有后端SSD,硬件前端隊列(比如FC HBA)和軟件隊列(比如那些更新的元數據)依然會看到爭奪和一些潛在地延遲。服務質量能使爭奪得到控制,SSD允許這些主機之間I/O進行持續交付。
因此服務質量確實占一席之地,即便這個系統似乎已經有了很多I/O容量,無非是為了確保I/O能力在所有服務器間公平共享。此外服務質量開始用于更多如SSD,處理器或系統內存上其他資源有爭搶的地方。優先級能用于決定哪些工作負載率先節流,以便保護關鍵任務系統。最后我們應該記得服務質量QoS也允許基于云的部署,確保用戶(內部或外部)僅獲得它們支付的資源(委婉稱之為“一致體驗”)。
最后一點相當重要,我們正在轉向一種為所有組件交付IT即服務的模式,不單單是存儲。現今業內普遍的選擇是最快介質SSD。未來可能是NVDIMM或3D Xpoint。沒有一些基于服務的控件,IT企業會發現很難引進新技術還不影響用戶體驗。因此要分離二者以盡可能的最佳方式實現技術交付。