天天看點

如何根據不同的工作負載調整存儲性能

多年來,存儲(尤其是共享存儲陣列)的性能調優工作一直被認為需要一定程度的技術和經驗基礎才能做到的藝術。

但伴随着市場與技術的發展變化,現在人們不禁要問是否可以用更簡化的操作來滿足特定應用程式和應用負載的要求。

不過,存儲“調優”仍然是必要的。

本文中,我們會談到這其中所涉及的些許問題,以及可以如何優化存儲硬體和主流應用程式的需求。

外部存儲通常被用作應用程式資料的長期存放區域,其存儲媒體的速度遠比主存儲器要慢得多。

硬碟驅動器的延遲(響應)時間以毫秒級為機關,并且更适合于順序而非随機輸入/輸出(i/o)性能。

nand閃存帶來了更好的随機i/o處理性能,盡管其犧牲了存儲媒體的使用壽命。閃存存儲還有另一個問題,其需要執行諸如垃圾回收類的背景任務,進而延長了響應時間。

dram的性能卓越,正如我們即将提到的,是用以改善系統性能的潛在方式。

最後,我們需要記住的是網絡是連接配接着共享陣列、伺服器和存儲,在基于橫向擴充節點的方案中(如超融合基礎架構),網絡亦是連接配接各節點,確定資料一緻性的關鍵所在。

上述這些都是我們可以配置、優化的可選項。

資料布局——跨實體媒體部署配置設定資料可以提高i/o性能。單塊硬碟或閃存驅動器的i/o性能是有限的,是以跨越多台裝置的“條帶化”有助于在多并發讀寫操作時擴充i/o。由于要使用raid進行資料保護,條帶化難以無限擴充,需要在raid擴充性和raid組重構時間之間做出權衡。raid 6犧牲了額外的空間和奇偶校驗量換取擴充性。還有一種方式是使用糾删碼,但這更适合用于對象類型的資料。

緩存——閃存或dram上的緩存資料可以改善i/o延遲,用共享陣列或應用程式主機上的緩存來服務讀取請求。寫入i/o同樣得以加速,不過需要複制寫入持久性緩存裝置來預防硬體故障。諸如nimble的adaptive flash或hpe 3par的adaptive flash cache之類的現代化緩存方案可以優化昂貴資源的使用,并大幅優化性能。

網絡調優——在共享存儲環境中,可以調整光纖通道和以太網網絡來改善性能,即光纖通道中的信用閥值(buffer credits,又名流量控制機制)和以太網中的資料包尺寸(packet size)。很顯然,使用非阻塞型交換機可以確定交換機上每個端口點對點的吞吐量。整體網絡設計同樣重要。在以前,我們為了節省成本将光纖通道網絡設計為拓撲結構。而到了現在,光纖通道和以太網每個端口的速度雖然都并不會趨向飽和,端口共享仍然不是什麼大問題,不過假如端口可以專用,那麼這将更有助于消除瓶頸。

分層——通常而言,分層的使用目的在于節省成本,但優化性能同樣是其目的。根據所要求的i/o性能和存儲媒體的成本消息将資料部署到最合适的存儲層上。分層算法多年來一直在快速發展,從lun轉向基于資料塊的分層。正确的分層算法和資料部署可以在不用額外購置硬體的前提下提升性能。

為了得到最佳調優效果,我們首先要知道應用程式的i/o特性。

這在每個具體場景中可能千差萬别,但我們仍可以将其歸納為某幾種類型。

結構化資料——最有代表性的是sql(oracle,sql server)和nosql(mongodb,couchdb)資料庫,其具有混合式的i/o屬性。所存儲的資料通常具備随機的i/o屬性(整表掃描除外),而資料寫入則多以小型的增量式寫入。傳統的經驗中我們将資料存放在raid-5存儲上并以raid-10作為日志,但實際上僅有少量的i/o緩存才是相關的。對于現代化的存儲陣列,大多數資料庫加載(除了密集型)都易于管理,無需手動存放資料;而對于密集型工作負載,将日志存放在高性能存儲上會是更好的選擇。

虛拟伺服器——伺服器虛拟化引入了随機與連續i/o工作負載混合的效應。這是因為資料通過多個虛拟機分布在lun或卷上,每個虛拟機都獨立于另一個,生成了随機工作負載的特性。提高虛拟伺服器的性能需要部署更快速的存儲媒體(進而減少每個單獨i/o的延遲)或者引入緩存。vsphere(vmware)和hyper-v(microsoft)都允許為單個虛拟機配置緩存。還可以在虛拟機管理程式中內建第三方緩存解決方案來提高i/o性能。對于hci,vmware的virtual san還提供了一個全閃存的選項,使用高性能和大容量閃存組合來優化i/o工作負載。

虛拟桌面——虛拟桌面給i/o性能所帶來的挑戰與虛拟伺服器中的随機通路問題相似,但卻具有差異性。首先,大多數桌上型電腦都是由某一個鏡像制成的,是以在啟動大量桌面時存在着大量重複的資料。其次,虛拟桌面經常,甚至每天都會啟動,是以讀取(啟動)和寫入(關閉)時間會更多。通過在共享陣列中對桌面鏡像使用緩存和重複資料删除,或者使用第三方軟體,可以大幅提高桌面性能。非永久性的桌面鏡像甚至可以緩存在dram中,這樣的解決方案比購買昂貴的全閃存要便宜許多。

網絡伺服器——額外的讀取緩存有助于網絡和其它讀密集型應用程式(如内容管理系統)。這可以部署在共享陣列中,也可以在虛拟機管理程式中用專用緩存。其中的權衡之處在于,網絡伺服器本身有空餘緩存時可以避免後端i/o,但緩存容量畢竟有所限制,在某個時刻仍需将資料存儲回外部i/o。

郵件伺服器——回顧10至15年之前,microsoft exchange等平台上,每個郵箱的i/o需求是相當高的。随着新産品的釋出,單個使用者的i/o需求下降了15至20倍。exchange 2016對比2003版,隻需要大約5%的iops。是以,可以用jbod而非san來部署exchange。話雖如此,像exchange這樣的電子郵件平台仍可以從日益興起的緩存和分布式資料部署(如寬條帶化)中獲益。

分析——許多分析工具在建構資料配置檔案時需要反複讀取同樣的資料。這些工具對延遲相當敏感,并且需要并行執行查詢操作,例如hadoop設計時會分布在多個存儲節點上,每個節點配置多塊磁盤。是以,提高分析工作負載的性能需要減少i/o讀取延遲。我們可以選擇使用閃存媒體,為運作分析軟體的外部存儲或主機添置更多緩存。資料的存放并不講究,因為很難準确預測運作分析時将使用到哪些資料。是以,分析操作中的重點在于平衡好存儲和緩存,并可以根據需要增加緩存。

在上述所有的場景中,得到詳細的名額來反應出性能和資源使用狀況是相當重要的。通過正确的名額資料,我們可以綜合考慮購置額外資源的成本,評估、權衡各種業務改變所帶來的影響。

本文轉自d1net(轉載)

繼續閱讀