可軟件定義的存儲邏輯——Efficient and agile storage management in software defined environments

        note:寫這個也許算是翻譯,又或算是對這個論文[1]的理解,又或者只是我的看法。


        這篇論文和IOFlow相比較,更加註重軟件定義存儲的框架(利用已有的框架來創建新的框架,然後使用已有的協議),而不是像IOFlow那樣注重通信的協議。並且,這個框架還是軟件定義環境的框架,而不僅僅是存儲的框架,不過全文注重說了存儲(更有挑戰性)。特別地,關於可軟件定義的存儲邏輯,從這裏可以管中窺豹。



SDE軟件定義環境


        數據中心的環境包括Compute、Network和Storage資源。

        數據中心對(flex)靈活性和rapid的需求越來越大,而數據中心應用程序性能和計算、網絡和存儲這些資源息息相關。一個整體的對數據中心的smart的組織和安排方案(global view)肯定能打破計算,網絡和存儲的限制,明顯的增加QoS和用戶體驗。


Objective of SDS


        SDS的目標和軟件定義網絡的目標是一樣的,SDN的目標可以分爲兩個維度,從橫向上來說,是全局的優化能力;從縱向上來說,是控制平面和數據平面的軟件集成。

        從高層應用程序的角度來看(和低層的LUN和RAID比較),應用程序的部署要求storage provision和一定的性能(從整個系統的角度看),系統將所需的邏輯卷分配給應用程序。然而,應用程序的生命週期是動態變化的,需要的資源不停地在動態變化着(存儲需求,性能需求,數據保護要求,拷貝政策,恢復點目標和恢復點時間的改變)等,所以上面提到的這些變化如果可以顯示的去配置,那麼對於應用程序來說,就太有效了。

         總之,SDS的總目標就是使得需求和下層的infrastucture解耦。


          這篇文章最主要的貢獻是一個叫做IBM Open Platform的SDS解決方案,基於OpenStack(使用了它的擴展接口)。



已有的存儲方案


企業級的解決方案


        存儲企業界提出了一個叫做SMI-S(存儲管理首創說明)的草案來作爲管理不同存儲設備的統一接口。但是這個和SDS是有區別的,也不能達到在前面提出的SDS的目標。爲了減小它和SDS的區別,達到更好的用戶級需求和體驗,IBM的存儲管理方案VSC做了很多事情,其他的企業級存儲還包括RMC,NetAPP等等。


開源社區的解決方案


        Openstack是一個來源的雲管理系統,這個開源項目現在由許許多多的vendor在參與,已經取得了很大的成就。Openstack中提供了SDS的平臺,他的存儲部分主要是包括了swift(給應用程序和虛擬機提供了對象存儲)和Cinder(給虛擬機提供了塊存儲)。

Swift

        Swift管理和提供對象存儲,提供相應的API給client。swift的一個很重要的能力就是在可用的磁盤和nodes中間自動的複製數據,自動的來提供可擴展性,有效性和數據保護的能力(這些都是隱藏的功能,swift有一套嘛)。然後swift的目標是更小的存儲開銷,因爲集羣中的機器都是有大容量存儲的商品機。現在的新的應用程序中很流行使用對象存儲,尤其是web程序(因爲swift的 REST API 在http上面很盛行)。比起文件存儲和塊存儲來說,對象存儲更加有擴展性,也更加靈活。


cinder

        它是一個塊管理組件,提供了塊存儲管理的功能,比如給服務器創建,增加塊設備,或者刪除某個服務器的塊設備。(這些服務器不再使用簡單的linux服務器的存儲,而是使用統一的存儲支持,(向上甚至支持ceph和netapp))。現在cinder可以管理很多的存儲系統,比如GBFS(IBM的分佈式並行文件系統,屬於底層的一個文件系統)和lvm(卷管理器)。cinder包括一個scheduler(plugged,所以可以採用第三方的)來爲服務器選擇最佳的塊設備(根據需求,可能包括volume type(也是存儲資源的一種抽象吧))。更多學習cinder,點擊這裏

 

        openstack的這些存儲機制是在一定程度上支持軟件定義的概念的,但是對那些具體的支持還不夠,如果說是SDS應該還算不上。




框架架構


        這篇文章提出了一個叫做IBM Open Platform的平臺(如下圖所示),主要包括了對工作負載的抽象,對資源的抽象,以及負載到資源的映射,以及相關的優化。要讓這個框架發揮作用,對workload和對資源的抽象都很重要。對workload的抽象就是把各種各樣不同的workload通過一種抽象方式(比如說JSON或者XML)表述,然後抓取出其中的與應用相關的需求,比如說基礎架構和操作流。


 

        而資源的抽象就是提供一個統一的接口來提供、管理和監控下層的計算、存儲和網絡資源。所以複雜的設備對於用戶來說就是透明的了,而那個核心的SDE統一控制平面就翻譯workload的抽象表示,也翻譯來自下層資源的抽象表示,然後組織sdc、sdn和sds的組件(爲了靈活而有效的管理)。

 

工作負載的抽象

        比如說,一個簡單的三層的web程序一般包括一個web服務器,包括一個數據庫,還要一個應用服務器。這種軟件模式可以被一個描述性的語言格式來描述,比如JSON。然後中間的unifiedcontrol plane的engine解析這種語言,之後爲這個workload組織安排底層的資源。

 

        從存儲的角度來說,這個框架可以創造靈活的存儲語義。比如說,應用程序可以指定存儲卷的大小,存儲服務類型和相關的其他的政策等。因此,這個框架使得程序開發者和系統管理者顯式的指定他們對底層存儲的需求。這種用戶級的存儲需求也可以在用戶程序的生命週期中發生改變,帶來了更大的靈活性。


資源的抽象

 

        那麼資源的抽象是怎麼做的呢?

        IBM的開放平臺支持的底層平臺不僅僅是企業級的存儲子系統,也包括商業存儲設備,比如GBFS。資源抽象就是將存儲資源(不管是SAN,還是NAS或者是DAS)抽象爲一個資源池,然後再根據workload的需求去管理和分配。

 

        比如說這個框架可以在GBFS中利用底層的存儲設備創建一個文件,然後把這個文件作爲一個塊設備分配給虛擬機去使用,也可以使用GBFS的快照和文件遷移的功能去管理虛擬塊設備。關於底層的特殊的設備,有的設備可能是企業級的,會提供一些高級的功能,比如固件級的壓縮和去重能力。這個時候,就可以使用這些功能。但是如果底層的存儲設備沒有這些功能,就需要調用軟件的方法來達到這個目的。

 

        總之這個框架提供了一個存儲資源的抽象,能夠達到很好的存儲資源利用率,並且提高操作性能,減少了存儲系統的複雜度。

 

 

資源的映射


        從上面的描述我們看到,這個框架中 unified control plane的功能就是利用上面的請求,組織安排下面的資源。對於存儲請求,那就是解析存儲請求的要求並傳給sds模塊來達到資源映射的目的。從下面的例子可以很好的瞭解有關存儲資源的映射過程。

performance-aware存儲配置

        形象一點來說,對於每個存儲資源創建請求,都需要一個“服務類型”的標籤,代表着特殊的對(storage provisioning)的需求,比如說RAID的級別或者是錯誤恢復特性(resiliency profile)。每個服務類型代表一組存儲的配置。比如說對於“白金”級別的服務類型,那可能就是要求低延遲,這樣的workload創建的存儲卷更有可能放在ssd中,而不是普通的磁盤。另外,如果可用的ssd有很多,組成一個資源池,這個框架還會分析ssd資源池中設備的利用率情況,然後將新創建的存儲卷放在其中一個SSD(會產生最小的性能影響的)。


存儲fabric管理

       當存儲單元創建好了之後,也就是創建好了workload服務器和存儲卷之間的聯繫。然後對於下面的存儲網絡技術,比如fc,iscsi,infiniband和fcoe都提供了統一的接口。然後這個框架提供一個最好的zone管理和fabric 分析來確定服務器和存儲卷之間的最好的storage fabric。(比如說,通過分析存儲設備的利用率,然後在多個端口之間進行負載平衡)(也可以使用爬山算法來找到最好的路徑)


存儲恢復

        還原能力是數據保護的一個重要的特性。在這平臺上,有兩種形式的resiliency。一種是fabric resiliency,應用程序可以選擇一條IO路徑,保證路徑上的每一個節點都是好的(不會failue,就像fcoe存儲節點上面的需求那樣);對於存儲設備級的數據保護措施,這個框架可以讓應用程序選擇一種複製策略,比如point-in-time快照,同步的鏡像或者異步的鏡像。存儲恢復還可以利用sde的整體功能,包括計算,來實現更加整體的數據還原功能。


連續模式優化ILM

        這裏有一個很重要的概念,叫做存儲信息生命週期管理(ILM)。這是因爲數據的價值在它的生命週期中是動態變化的,比如郵件數據在剛開始的時候價值是最高的,後來隨着時間這個郵件越來越沒有價值了。所以ILM的目標就是在正確的時間把正確的數據放在正確的storage tier上面。這也就是Storage tiering技術(根據歷史io行爲,來決定io tier)。而我們的這個框架使得可以應用程序根據獨特的需求來控制存儲的tier。比如說給一個服務類型指定是(higher tier和lower tier的類型,然後自動的在某些io閾值的時候執行某些tier policy。

       note:就比如說應用程序編程的時候就可以指定在將來某個時候把數據存放在哪塊盤上面~~~


SDE的集成

            數據中心對(flex)靈活性和rapid的需求越來越大,而數據中心應用程序性能和計算、網絡和存儲這些資源息息相關。一個整體的對數據中心的smart的組織和安排方案(global view)肯定能打破計算,網絡和存儲的限制,明顯的增加QoS和用戶體驗。

            這個sde框架中的存儲部分和其他的部件比如sdc和sdn都合作良好,並且整個框架有着豐富的api,還可以在這個框架上做各種各樣的優化。比如說VM的安放問題。

storage-aware VM placement

        VM的放置關係到cpu,內存和vdisk。對於一個io密集型的vm來說,它的vdisk放在SAN中的某個位置是相當重要的(延遲和帶寬),對於一個計算密集型的VM來說,cpu和內存的分配就更加重要。所以vm的放置往往也需要考慮到cpu,存儲和vdisk的問題。這個框架的邏輯能提供一個靈活的vm存儲放置方案。


LAB

        IBM的研究人員創建了一個小型的實驗環境,這個框架得到了很好的應用,效果也很好。


參考文獻

[1]Alba, A., et al. "Efficient and agile storage management insoftware defined environments." IBM Journal of Research and Development 58.2 (2014): 1-12.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章