在上一篇文章《SDS 之二:什么是軟件定義存儲》里,我們提到各家(包括知名的咨詢機構和知名的IT廠商)對SDS定義的共性的描述:“雖然每家對SDS的定義都不盡相同,各有側重點。但可以看出來,易于擴展(主要指在線橫向擴展)、自動化、基于策略或者應用的驅動都幾乎都成為大家定義中的必備特征。而這也是軟件定義數據中心的重要特征,只有具備自動化的能力,才能實現敏捷交付,簡單管理,節省部署和運維成本。自動化也成為各家SDS方案,是否愿意走向更高階段的試金石”。
不過自動化是現階段絕大多數SDS廠商或方案的較長遠發展目標,也許需要3~8年。在此之前,還需先逐步完成抽象、池化的過程。實際上,絕大多數存儲廠商還停留在抽象、池化這兩個階段。本篇主要在抽象、池化這兩個階段展開詳細的交流。
最早提出抽象、池化和自動化的是VMware公司,這個過程論也是VMware首倡的軟件定義數據中心(SDDC)概念中的重要組成部分。
那么如何理解抽象、池化、自動化呢?
如下圖所示,抽象其實就是軟硬件解耦的過程。早先的存儲,如2000 年以前,大多數集中存儲(以外置磁盤陣列為主流),邏輯卷一旦創建,就不能更改(更改RAID、增加大小),除非允許數據全部丟失,刪除這個邏輯卷再創建 一個新的邏輯卷。那時候的邏輯卷與存儲的前端端口、后端端口、物理磁盤,都緊密地綁定在一起,耦合度非常高。在這種情況下,即使是為多個業務應用提供存儲 資源的集中存儲,也在內部形成了一個個的孤島,孤島的存儲資源不能相互共享,數據不能自由流動。在這種環境下,存儲首要解決的問題就是解耦,將邏輯卷與硬 件解耦,打破孤島之間的疆界,讓存儲資源能夠共享,數據能在各個存儲的硬件組件間自由流動。
例如,假設某用戶單位的網管在最初給FC SAN光纖存儲劃分ZONE時,是按照物理WWWN的方式。這樣,每當FC SAN存儲控制器的前端卡因故障需要替換時,就還得進入SAN光纖交換機管理界面內,重新調整FCSAN的Zone分區,這個運維操作往往需要業務停機。 如果存儲支持虛擬WWWN的方式,就簡單多了,只需要進入存儲管理界面,SAN光纖交換機不受影響。
再如,以往邏輯卷在創建之初,先必須挑選幾塊盤來創建RAID Group,在此基礎上,在新建邏輯卷。這意味著邏輯卷被綁定在幾塊盤里,一旦業務增長規模擴大,所需容量和性能不夠時,舊存儲不得不停機去做數據遷移。如果存儲支持精簡配置(Thin Provisioning),在線擴容就比較容易了。
這個軟硬件逐漸解耦的過程,其實就是將同類硬件的不同細節的部分,隱藏起來,并與上層隔離開來。這樣,上層就不必因為下層硬件的不同而修改。因此,增加了可移植性和靈活性。
不過需要注意的是,軟硬件解耦也是一個循環往復的過程。有時,硬件的某些內容解耦了,繼而軟件完成了這些內容的抽象池化和自動化;過段時間之后,客戶的需求 又可能推動再去解耦硬件的其他部分,這樣,又需要再去完成其他部分的抽象池化和自動化。因為,不同時代的用戶會對所需抽象的內容有不同的關注和需求,而且 硬件本身也在不停地發展。當硬件的發展日新月異,其速度和容量能夠遠遠地超前于當下軟件對其資源的要求時,硬件就有更多的機會在不同的層面、不同的角度, 不斷地解耦,讓更多的部件被抽象,被軟件定義,直到最后,剩下該硬件的最核心最本質的部分。
解耦硬件的哪一部分(換句話說,用軟件去定義哪一部分),必須結合用戶主流的需求,以及當時的客觀條件(主要是硬件的能力)。以上一篇文章《什么是軟件定義存儲》 的比喻-空調為例,當智能家居的周邊條件遠未具備時,例如手機應用、WIFI尚未普及之時,空調遙控器開放幾個簡單的如溫度、風速、風向的接口,就足夠了。如果有公司過早的投入人力物力去做智能空調,研究移動設備或PC機如何通過互聯網來遠程控制空調的接口,很有可能只有極少的用戶(例如財大氣粗的比爾蓋茨)才有這個需求。這樣,這個公司就變成先烈,而不是先進了:)
花絮:
提到“先烈”,想起了IT的兩位著名“先烈”
1)1995年,拉里森提出網絡計算機(NC, Network Computer)的概念:
配置簡單卻能充分利用網絡資源的低價電腦,不需要不斷更新的硬件設備和越來越復雜,龐大的操作系統,沒有軟盤和硬盤,只要打開電源用瀏覽器連上網絡,就可以獲得信息和存儲文件;
2)1999年,比爾蓋茨宣布微軟耗資數十億美元,向中國消費者推出“維納斯計劃”。這個宏大的計劃試圖通過嵌入微軟操作系統的“神奇盒子”,將中國人使用的3.2億臺電視機變成電腦其實,拉里森和蓋茨提出的東西,就是現在的云計算和互聯網電視。盡管成為先烈,但不妨礙我們對其如此超前的預見、想法、舉措充滿敬意。十多年后的云計算和互聯網引領者Salesforce,Amazon, Apple TV,樂視, 小米也許正是由于這些”先烈”的啟發,因時制宜,接過他們的接力棒,為人類的發展做出貢獻。在抽象的基礎之上,才能進一步做資源的池化。因為池化就意味著資源不受硬件的限制,能被自由地分配、使用和調度。池化包括存儲虛擬化和存儲標準化,而存儲虛擬化指所有存儲資源的虛擬化,包括
1)外置磁盤陣列內的虛擬化
2)跨外置磁盤陣列的虛擬化(也即異構存儲的管理)
3)分布式存儲服務器內的存儲虛擬化,這部分在以后的篇章里再介紹
存儲虛擬化最早可以溯源到IBM AIX LVM(邏輯卷管理器),和HP EVA的vDisk技術。其實HP的EVA技術,準確說是源于Compaq,甚至是DEC的VA,詳情可在網上搜索林肯大叔的《存儲器那點事》 。
大約在距今10 年左右,新興廠商Compellent和EqualLogic、3PAR和LeftHand、XIV、Pillar的塊級虛擬化,打破了以往RAID Group的限制,支持精簡配置(Thin Provisioning)的功能,無需預先分配并實際霸占物理空間,實現寫多少分配多少的策略,并支持在線擴容。有趣的是,后來上述新興廠商分別被 DELL、HP、IBM、Oracle收入囊中。
外置磁盤陣列內的存儲虛擬化,大多都不受以往存儲RAID Group的限制,能將相同速度(有的存儲解耦做得還不夠,嚴格要求磁盤類型也必須相同)盤的空間形成一個存儲池,統一分配和管理空間。再輔助以自動分級 技術,便可以實現數據塊在SSD盤、磁盤之間的數據流動,例如DELL Compellent的Data Progression(數據調度,也即自動分級)技術。
跨外置磁盤陣列的存儲虛擬化,指的是能夠跨越異構的磁盤陣列,在更大的范圍,如數據中心內,形成一個大的存儲資源池,統一管理和分配來自不同存儲廠商的存儲資源。實際上,當我們討論異構存儲之間的管理的時候,其實也同時在討論存儲標準化,只有當大家開放的接口遵循共同的標準(也即規范)的時候,也就是用相同的“語言”對話時,才有可能被調用、被管理。
隨著用戶的數據不斷增加,為了不被單一廠商鎖定,規模較大的用戶的存儲網絡往往包含了來自多個存儲廠商的外置磁盤陣列,每個陣列都需要自己的管理軟件,這些陣列之間缺乏互聯互通,管理復雜度增加。為了解決這一個問題,2002年,SNIA(全球網絡存儲工業協會)提出了存儲管理建議規范SMI- S(Storage Management InitiativeSpecification),希望在存儲網絡中的存儲設備和管理軟件之間提供標準化的通信方式,從而使存儲管理實現廠商無關性 (vendor-neutral),使得存儲管理系統能夠實現鑒別、分類、監控和控制物理及邏輯資源的能力,提高管理效率、降低管理成本,促進存儲的發 展。
SMI- S是一種中間件性質的規范,定義了存儲管理軟件和受管對象之間的交互機制。它提供了多種特性以簡化SAN的管理。首先,在SMI-S標準中定義了統一的數 據模型,使用基于Web的企業管理(Web-Based Enterprise Management,WBEM)技術和公共信息模型規范(Common Information Model, CIM) ,SMI-S的代理可以與交換機、磁盤陣列等各種支持CIM的設備進行交互,獲取其管理相關的數據并返回給請求方。使用SMI-S可以免除設計管理數據傳 輸機制的麻煩,對各種設備和組件直接進行帶內或帶外的管理,甚至兩者并用。SMI-S還提供了基于HTTP的CMI-XML傳輸機制,以增強適用性。
SNIA對于SMI-S標準寄予了很高的期望,跨越的版圖非常宏偉。從下圖(摘自《Storage Management from SMI-S to Management Frameworks》),可以看出來,它希望做到,存儲管理軟件能夠識別磁盤陣列、光纖交換機、IP交換機、磁帶庫、FC HBA卡、iSCSI HBA卡等各種各樣與存儲相關的設備,并通過存儲管理服務,自動發現、部署和配置存儲資源。
SMI-S標準發布以后,得到了大多數主要存儲供應商的支持,目前已經超過500多個產品支持SMI-S標準。最新的標準是SMI-S v1.6.1,在SNIA官網能夠下載到詳細的規范,規范包括8篇文章,其中的一篇《Storage Management Technical Specification, Part 4 Block Devices》,長達1144頁!其中,僅僅關于Automated Storage Tiering的描述就長達77頁。如果新興存儲廠商,有興趣有耐心通讀完,也許對于存儲未來研發路線的發展有所啟發。
SNIA也直言不諱地提到了如下問題:
1、標準走向市場的時間漫長;
2、存儲廠商研發新特性的過程中,規范的確立花費1年,廠商實施再需要6個月(筆者持懷疑態度),用戶方接受并實施需要2年甚至遙遙無期;
3、需要加速標準走向用戶的過程;
花絮:
漸漸發現,SNIA就像一個操心的大家長J,各家廠商就像頑皮的孩子,每個人都有不同的需求,而且這些需求有可能是相互沖突的。SNIA力圖協調、折中,讓大家盡量滿意,期望大家都照章辦事。但實際上,由于各家有著不同的經濟利益,很難協調。除了SMI-S,再以云數據管理接口(CDMI)為例,那些業已長大成人的云存儲服務提供商,如AWSEBS、阿里云OSS,愿意聽家長的話嗎? 真為SNIA操心
從市場上看,跨磁盤陣列的存儲虛擬化(也即異構存儲的管理),比較知名的有:EMC VPLEX、IBMSVC、HDS VSP,以及Symantec Storage Foundation。他們都能或多或少的將其他廠商的存儲納入自己的存儲平臺之下進行管理。但這種管理,也只是將異構存儲的邏輯卷做為一個外來設備使用,把它視為一個普通的容器,不知道它能提供多大的性能。同時也丟失了異構存儲內嵌的豐富的軟件特性,例如快照、容災等。IBMSVC為例,這個在2003年(如此超前,非常厲害!)就誕生的存儲技術,在存儲虛擬化領域,在很長的一段時間內想必都是傲視群雄。
如下圖,IBM SVC針對其內部盤,按照RAID方式(如8塊盤)創建出Mdisk,再將多個Mdisk形成存儲池,在池上創建邏輯卷VDisk(Virtual disk,現更名為Volume)。
在SVC這個存儲管理體系下,也能管理異構存儲,支持對HP(MSA, EVA, XP), EMC (CX, DMX), NetApp (FAS), Hitachi (AMS, WMS, 99xx) 和DELL(Compellent)等異構存儲的虛擬化。以DELL Compellent為例,將Compellent邏輯卷納入SVC之下,需要經過如下步驟:
1、業務停機;
2、在Compellent圖形管理界面中,去掉卷與主機的映射關系(un-mapping);
3、在Compellent圖形管理界面中,創建新的服務器對象:SVCCluster;
4、在SVC圖形管理界面中,執行MDisk發現操作;
5、將新發現的MDisk以ImageMode MDisk方式導入;
6、將這個Image Mode MDisk映射到原主機上;
Image Mode Mdisk(來自異構陣列),被SVC允許保留其原生的(Native)的數據復制服務(快照、克隆、鏡像)。但是,在SVC最新的紅皮書(忍不住贊一下高貴大氣的IBM,無需注冊,紅皮書隨便下載)《Implementing the IBM System Storage SAN VolumeController V7.4》里,找不到關于SVC驅動受管對象創建快照、克隆、鏡像的描述,筆者猜想目前IBMSVC尚未支持這種存儲之間的互操作。如果讀者發現支持,并且能找到原始出處,希望能告訴筆者。
無論是內部盤還是外部盤,SVC都可以按照VDisk為單位,實施本地的數據復制服務(快照、克隆、鏡像)。利用SVC,可以將放置其下的低端存儲,提升起來,也具備高級功能。存儲發展到現在,高端存儲和中端存儲的豐富的軟件功能下移到低端存儲,SVC的這部分作用就意義不大了。不過,時至如今,SVC的存儲虛擬化,對于用戶而言,利舊,方便管理(只是少部分程度的),雙活,容災(SVC災備端可以采用與SVC生產端不一樣的存儲品牌),仍有一定的現實意義。
需要注意的是,存儲雙活的功能,其實相當于把VMFS、MSCS、VCS具有集群高可用的部分從OS層面下沉到了一個專用的物理設備(存儲網關)上。如果用戶的業務應用能在應用層面,或者OS層面(相對業務應用層面更容易實現),實現其高可用的話,存儲雙活就不如以前那么重要了。
在存儲在線Dostor網站上,董唯元和西瓜哥的《存儲虛擬化技術普及貼》對于這種池化,有著簡單直白的的闡述,下面摘取其中一段,可以看出在現階段異構存儲的管理有多難:“曾經有用戶想用HDS的USP管理EMC的CX系列磁盤陣列,結果EMC工程師跟用戶講磁盤陣列的兼容列表上沒有HDS USP,拒絕提供服務。還有一次用戶實測用NetApp的V3000管理IBM DS系統磁盤陣列,發現性能低的離譜。結果NetApp和IBM的工程師都說不是自己的問題,讓對方改設置來兼容自己”。
距今十多年前,存儲經常提及的一個概念是互操作性,正是因為各家廠商的存儲管理各自為政,缺乏互聯互通,使得用戶面臨存儲管理的巨大挑戰,用戶一直希望存儲廠商解決互操作性:各家的存儲管理軟件都能管理并靈活調用其他異構存儲的資源。這個互操作性,筆者更愿意視為SDS三步曲中,自動化的一部分,是存儲與存儲之間的資源調用和策略驅動。除此之外,自動化還包含OS/Hypervisor對存儲的資源調用和策略驅動,以及應用軟件對存儲的資源調用和策略驅動。
當下的存儲虛擬化(異構存儲的管理)并沒有解決互操作性的問題,也沒有提供數據服務:空間部署,數據保護(快照、克隆),數據高可用(備份、容災),性能,安全等。
SMI-S標準出來已經13年了,那么,這個互操作誰來做合適呢?存儲廠商想做一統天下的存儲管理軟件,但問題是誰愿意做受管對象呢?
顯然,其他異構存儲廠商不會愿意。因為經濟利益有沖突:我開放API給你,對我有什么好處?我能控制你嗎?而且,被你虛化了,我對于用戶的重要性就下降了。
實際上,在SMI-S v1.6.1的標準《StorageManagement Technical Specification, Part 4 Block Devices》中,已經包含了對鏡像、快照、克隆的描述,但是筆者相信截止目前為止,還沒有哪個存儲廠商的存儲虛擬化平臺可以驅動受管對象的高級軟件功能,如數據復制服務:快照、克隆、鏡像、容災等。
下面兩圖摘自SMI-S v1.6.1的標準。
也許EMC ViPR開源也有這個原因,開源之后,其他存儲廠商對ViPR開放更多的API,才有更多的可能性。
其實,最合適做互操作的不是存儲廠商,而是操作系統(OS)廠商、Hypervisor廠商,絕大多數存儲資源都必須納入到OS/Hypervisor的版圖之內。在云計算、軟件定義數據中心的背景下,存儲資源被虛機使用的規模將遠大于被物理機使用。因此,存儲廠商可以考慮與VMware、Hyper-V、Citrix XenServer、RedHat
KVM、華為FusionSphere等Hypervisor廠商的互操作性。我們也看到Hypervisor廠商也在努力實現與存儲的互聯互通,例如Microsoft System Center 2012就把SMI-S做為組成部分。再如VMware vR Ops云管理軟件利用SMI-S等協議進行存儲分析。
對于虛擬化服務器市場份額的領先者VMware來說,從創立至今,它極力營造的生態環境,使得vSphere成為事實上的標準,先后推出的VAAI、VASA,以及最新的Virutal Volumes(簡稱vVol),都有主流存儲廠商,甚至新興的全閃存、混合陣列廠商的鼎力支持。這在存儲與Hypervisor的互聯互通中,占據了主流。下圖右邊列出的15家存儲廠商,就是目前支持VMware Virtual Volumes的VMware合作伙伴。