作者簡介:文劉飛,杉巖資料聯合創始人 引擎架構師伺服器虛擬化成為資料中心的主流技術,大量執行的虛擬機器大大提高了伺服器的利用率,對虛擬機器進行批量的建立、複製、遷移極大的簡化了it運維的同時,也帶來了大量的資料拷貝操作,進而消耗了伺服器的大量cpu、記憶體和網路頻寬資源。
針對於這些問題,vmware提出了vaai(vstorage api for array integration)介面,希望將vmware基礎架構的某些功能委託給儲存陣列去實現,通過減少資料對於虛擬機器和物理伺服器的資源消耗,從而提公升vmware基礎架構的效能。
同時,microsoft也在windows 8或windows server 2012中新增了解除安裝資料傳輸(offloaded data transfer odx)這一功能,期望把資料拷貝功能解除安裝到儲存硬體中,降低虛擬化伺服器的開銷。
本文將和您一起**windows odx的實現與優化
通過配合支援解除安裝的儲存硬體使用,odx可在不占用 hyper-v 宿主機 cpu 資源的情況下通過儲存裝置執行檔案複製操作,由儲存裝置直接從乙個儲存位置讀取資料,並寫入到另乙個位置。解除安裝資料傳輸的設計符合t10 xcopy lite規範,對資料拷貝加速進行了端到端的設計,理論上支援在不同儲存廠商的儲存裝置之間進行資料複製。
odx使用基於令牌的機制在智慧型儲存陣列內部或之間複製資料。待複製的原始檔和目標檔案可以在同乙個卷上、同一伺服器管理的兩個不同卷、或者多個伺服器共享的群集共享卷上。
令牌是乙個512位元組的隨機數,令牌代表了乙個或多個extent(最多128mb的實際資料),一般是乙個檔案或檔案的一部分。令牌由儲存控制器通過雜湊演算法產生,同時令牌具有一定的生命週期。因此微軟一直認為安全性和相容性是windows odx區別於 vmware vaai的乙個顯著特徵。
由於傳給主機的是代表資料的令牌,而不是資料本身,因此大大提高了資料複製的效能。同時由於odx的命令互動比較多,因此odx檔案複製要求檔案至少為256kb,太小的檔案所產生的開銷會使得xcopy操作變得沒有任何意義。
圖1 windows odx基於令牌的複製操作
如上圖所示,利用odx實現資料複製的主要操作流程如下所示:
使用者通過windows explorer或命令列執行檔案複製/移動。
windows 8或windows server 2012傳送乙個讀請求給儲存控制器要求執行資料拷貝(populate_token命令,包含了源lba/block length pair list)
儲存控制器建立代表資料的令牌併發送回主機(sp建立pit token)
主機使用令牌發起寫請求給儲存控制器(write_using_token命令,包含乙個目標lba/block length pair list)
儲存控制器根據令牌資訊,驗證令牌的有效性和源資料位置,並把資料傳輸資料到目標位置。
最後儲存控制器把odx複製的結果傳送給主機(主機使用receive_rod_token_information命令查詢結果)
為了實現odx功能,odx增加了如下幾個scsi命令:
populate_token命令,傳送解除安裝讀請求給儲存控制器,請求針對虛擬磁碟lun a的某段資料產生乙個資料令牌。
write_using_token命令,攜帶資料令牌傳送解除安裝寫請求給儲存控制器,請求把該令牌所代表的資料複製到指定位置。
receive_rod_token_information 命令,傳送解除安裝查詢請求給儲存控制器,查詢解除安裝讀/寫的結果。
3.1令牌的管理和同步
對於分布式儲存集群,通常會提供多個儲存控制器來實現io的併發訪問以及io路徑的高可用(如圖2所示)。同時windows伺服器通過iscsi mpio和分布式儲存連線以後,odx可能會對不同的儲存控制器分別下發populate_token命令和write_using_token命令。這就要求某乙個儲存控制器產生的資料令牌需要和其他儲存控制進行實時同步。同時令牌具有一定的生命週期, 因此儲存控制器需要保證資料令牌的唯一性,並且定期清理已經過期的資料令牌。
圖2 提供多個iscsi服務端的分布式儲存集群
3.2 odx相關引數調優
odx進行資料複製時,預設傳輸的乙個資料片段大小為64mb,支援傳輸的最大資料片段為256mb。由於不同的分布式儲存環境,所配置的hdd、ssd磁碟數量各不相同,因此不同環境最有的資料傳輸切片大小也各不一樣。odx支援通過儲存的vpd描述去建議最優的資料切片大小。因此可以結合分布式儲存的配置情況,選擇最優的資料傳輸片段大小。
考慮到分布式儲存在產生資料令牌時,需要在各儲存控制器之間通過網路進行實時同步,時延開銷比較大,因此可以通過配置引數,最大化資料令牌所代表的資料塊大小,減少populate_token命令的傳送次數。
3.3 odx相關的流量控制以及一些異常處理
odx進行資料複製時,通常都是大資料塊的讀寫,這樣會對儲存伺服器的硬碟帶來很大的壓力,進而影響對其他io業務的處理。因此有必要在同時存在其他業務io時,對odx相關的io做一定的流量限制。
在某些異常場景,write_using_token命令的目標位置和原始檔位置會發生重疊,這樣有可能會導致資料處理不正確,因此在執行寫操作前需要增加一些位置校驗。
杉巖資料的sandstone ups作為企業級軟體定義儲存產品,對windows odx實現了完美的支援,借助odx,sandstone ups大大節省伺服器的網路頻寬和cpu資源。下圖為windows 2012伺服器通過1g網路連線sandstone usp進行資料複製的測試。
從任務管理器可以看到,在做資料複製時,網路頻寬和記憶體、cpu消耗都不大,特性是網路頻寬只占用了200k左右,但是資料複製顯示的速度平均有200mb,遠超過1g網路頻寬的限制。(說明一下:200k是windows和儲存控制器直接頻寬,windows只是傳送控制命令,實際的資料傳輸是在儲存網路間進行的。)
以上,就是我們在windows odx上的具體優化實踐,本著開放、務實的技術理念,未來,將積極吸取行業的優秀經驗和技術產品,從而為使用者打造一套更加完善的需求解決方案。(責編/魏偉)
分布式儲存
塊儲存,檔案儲存,物件儲存區別 分布式儲存的應用場景相對於其儲存介面,現在流行分為三種 物件儲存 也就是通常意義的鍵值儲存,其介面就是簡單的get put del和其他擴充套件,如七牛 又拍 swift s3 塊儲存 這種介面通常以qemu driver或者kernel module的方式存在,這種...
分布式儲存
普通儲存 das 直連式儲存。nas 連線式儲存。san 儲存網路。大檔案分布儲存 gfs google file system google檔案系統 hdfs hadoop distributed file system hadoop分布式檔案系統 小檔案分布儲存 adfs ali distrib...
分布式儲存技術
分布式儲存技術 分布式儲存概念 與目前常見的集中式儲存技術不同,分布式儲存技術並不是將資料儲存在某個或多個特定的節點上,而是通過網路使用企業中的每台機器上的磁碟空間,並將這些分散的儲存資源構成乙個虛擬的儲存裝置,資料分散的儲存在企業的各個角落。結構化資料的儲存及應用所謂結構化資料是一種使用者定義的資...