軟體定義存儲(SDS)的定義及其分類

作者葉毓睿

軟件定義存儲(SDS)的定義及其分類

2011年8月21日,Netscape創始人馬克·安德森(Marc Andreessen, 硅谷著名投資人, 投資了Facebook、Groupon、Skype、Twitter、Zynga和LinkedIn等高科技新秀),在華爾街日報上發表《軟件正在吞噬整個世界》,認為當今的軟件應用無所不在,並且正在吞噬整個世界: “越來越多的大型企業及行業將離不開軟件,網絡服務將無所不在,從電影、農業到國防。許多贏家將是硅谷式的創新科技公司,它們侵入並推翻了已經建立起來的行業結構。未來十年,我預計將有更多的行業被軟件所瓦解”。安德森以亞馬遜顛覆圖書零售巨頭Borders(已於2011年2月破產)、Netflix顛覆視頻行業、蘋果顛覆音樂行業、Skype顛覆電信行業、LinkedIn顛覆招聘、PayPal顛覆支付等為例,並指出基於互聯網的服務,將讓新創建全球性軟件初創公司變得容易。

中國也是如此,包括BAT(百度阿里騰訊)、滴滴、快的、美團、大眾點評等互聯網公司在內的軟件公司,深刻地影響了我們每一個人的生活,也已經或正在逐步地顛覆著教育、零售、通信、交通、醫療、政府等行業。

2013年10月Gartner發佈2014年十大戰略技術中,重要的組成部分就有:軟件定義一切。Gartner認為:軟件定義一切囊括了在基礎設施可編程性標準提升下不斷增長的市場勢頭、由雲計算內在自動化驅動的數據中心互通性、DevOps和快速的基礎設施提供等。軟件定義一切還包括各種舉措,如OpenStack、Open Flow、Open Compute Project和Open Rack,共享相同的願景。開放性將成為供應商的目標,SDN(網絡)、SDDC(數據中心)、SDS(存儲)和SDI(基礎架構)技術的供應商都力圖成為所在領域的領導。

那麼,什麼是軟件定義? 難道以前沒有軟件定義? 都是硬件定義嗎?

我們先來看一下,什麼是軟件?

  • 軟件是用戶與硬件之間的接口界面。

用戶主要是通過軟件與硬件進行交流。

  • 早期,為了大規模生產,降低製造的複雜度和成本。許多功能都固化在硬件裡,我們可以稱之為硬件定義。隨著人民日益增長的多樣化、個性化定製的需求,以及雲計算所要求的,更加智能、更加靈活的自動化的需求,由軟件定義來操控硬件資源的需求將越來越多、越來越廣。

最早的空調裡面也有軟件,但相對固化,不提供或者提供非常少的接口,缺乏靈活性。那時,我們只能選擇溫度,或者開關;後來出現了更多的選擇,如風速、風向等的設定。到了智能家居的時代,通過嚮應用軟件開放空調的編程接口,使得我們能在回家之前,就藉助手機或者平板,開啟並設置空調了。

軟件定義,究其本質,就是將原來高度耦合的一體化硬件,通過標準化、抽象化(虛擬化),解耦成不同的部件。圍繞這些部件,建立起虛擬化軟件層,以API(應用編程接口)的方式,實現原來硬件才提供的功能。再由管理控制軟件,自動地進行硬件資源的部署、優化和管理,提供高度的靈活性,為應用提供服務。

簡而言之,就是更多地由軟件來驅動並控制硬件資源。

需要注意的是,軟件定義其實是一個過程,不是一蹴而就的目標,它分成不同階段。軟件定義逐漸將硬件與軟件進行解耦,將硬件的可操控成分按需求,分階段的,通過編程接口或者以服務的方式逐步暴露給應用,分階段地滿足應用對資源的不同程度、不同廣度的靈活調用。

什麼是軟件定義存儲

當我們討論軟件定義存儲的時候,避免不了要先回顧一下軟件定義這個詞彙出現的歷史。

在IT基礎架構領域,最早出現的軟件定義,是軟件定義網絡(Software Defined Network)。SDN起源於2006年斯坦福大學的Clean Slate研究課題。2009年,Mckeown教授正式提出了SDN概念。通過將網絡設備的控制平面與數據平面分離開來,並實現可編程化控制,實現了網絡流量的靈活控制,為核心網絡及應用的創新提供了良好的平臺。

隨後,在2012年8月,VMware在其VMworld 2012大會上首次提出軟件定義數據中心(Software Defined Data Center,簡稱SDDC)的概念。

軟件定義存儲(SDS)的定義及其分類

VMware認為,軟件定義的數據中心,是 IT 演變的下一個階段,是迄今為止最有效、恢復能力最強和最經濟高效的雲計算基礎架構方法。SDDC方法論將對存儲、網絡連接、安全和可用性應用抽象、池化和自動化,整個數據中心由軟件自動控制。 基礎架構提供的服務將聚合起來,並與基於策略的智能調配、自動化和監控功能結合在一起使用。應用編程接口和其他連接器支持無縫延展到私有云、混合雲和公有云平臺

總結一下,SDDC概念的核心包括:

  1. 軟件定義的數據中心由軟件自動控制;
  2. 軟件定義包括三個階段:抽象、池化和自動化;
  3. 軟件定義的數據中心包括五大組成部分:計算、存儲、網絡、管理和安全。

作為VMware軟件定義數據中心五大組成部分之一,軟件定義存儲(Software Defined Storage,簡稱SDS)的概念也在全球範圍內,首次被提出。

VMware認為:軟件定義的存儲產品是一個將硬件抽象化的解決方案,它使你可以輕鬆地將所有資源池化並通過一個友好的用戶界面(UI)或API來提供給消費者。一個軟件定義的存儲的解決方案使得你可以在不增加任何工作量的情況下進行縱向擴展(Scale-Up)或橫向擴展(Scale-Out)。

實際上,SDS的定義出現至今已經三年多了,但仍沒有統一的標準,VMware的定義也只是一家之言。各家權威諮詢機構,各大廠商,都對這一概念有著不同的定義或描述。下面我們再來看看SNIA對SDS描述。SNIA是Storage Networking Industry Association的簡稱,也即全球網絡存儲工業協會,做為曾經制定過SAN,NAS,對象存儲,雲存儲等標準的第三方協會,我們有理由相信,SNIA對SDS的看法比較權威。其內容也確實有助於大家更深刻地理解SDS。

SNIA在SDS的定義中提到,SDS允許異構的或者專有的平臺。必須滿足的是,這個平臺能夠提供部署和管理其虛擬存儲空間的自助服務接口。除此之外,SDS應該包括:

  • 自動化:簡化管理,降低維護存儲架構的成本;
  • 標準接口:提供應用編程接口,用於管理、部署和維護存儲設備和存儲服務;
  • 虛擬數據路徑 :提供塊、文件和對象的接口,支持應用通過這些接口寫入數據;
  • 擴展性:無需中斷應用,也能提供可靠性和性能的無縫擴展;
  • 透明性:提供存儲消費者對存儲使用狀況及成本的監控和管理。

SNIA認為,存儲服務的接口需要允許數據擁有者(存儲用戶)同時表達,對於數據和所需服務水準的需求。數據的需求,就是SDS建立在數據路徑(Data Path)的虛擬化,而控制路徑(Control Path)也需要被抽象化成為存儲服務。雲、數據中心和存儲系統,或者數據管理員能夠被用於部署這個服務(指Control Path)。

在SNIA對SDS的看法中,貢獻最大,也是最有價值的部分,應該是SNIA關於Data Path(數據路徑)和Control Path(控制路徑),以及手動傳送數據請求和應用通過元數據來傳送請求的的對比描述。它幫助大家清晰地瞭解了兩者的的區別,並描繪了未來理想的SDS的藍圖,為如何發展SDS指明瞭方向。

SDS包括數據路徑和控制路徑。數據路徑由以往的標準接口(塊、文件和對象)組成。那麼控制路徑呢?在傳統存儲中,其實就是指存儲管理員為數據提供部署數據的服務。在使用傳統存儲的大多數情況下,每一個數據服務有著各自的管理接口。變更數據服務,會導致所有存放在相應虛擬存儲空間的數據都受到影響。

1. 傳統方式下傳遞數據請求的方式

軟件定義存儲(SDS)的定義及其分類

如圖上所示,存儲用戶的控制路徑是在帶外,通過傳統、人工的方式將數據請求傳遞給存儲管理員,例如對於數據保護、可用性、性能、安全性的要求。存儲管理員進入存儲管理界面,按存儲用戶的請求分配存儲資源。

這種情況是當前普遍存在的主流方式。其實是:存儲管理員定義。

這種存儲部署方式存在一個最大的問題,擴容或升級非常艱難。由於剛性架構限制系統資源只能靜態分配,這就意味著後續新部署的資源難以歸入原先存儲體系。

2. 理想方式下傳遞數據請求的方式

軟件定義存儲(SDS)的定義及其分類

如上圖所示,理想的SDS,其傳遞數據請求的方式是:讓應用通過元數據來請求相應的數據服務。如,空間部署,數據保護(快照、克隆),數據高可用(容災、雙活),性能,安全等。

理想的SDS實現了存儲基礎架構的自動化機制,極大地降低了人工管理運維成本,數據請求需直接傳達至自動化軟件。它能夠直接應對請求,分配應用人員所需的存儲資源,而無需人工干預。存儲管理員可以從枯燥重複的建卷、映射卷等工作中,從疲於修補那些導致存儲服務水準降低的突發故障中,脫身出來,轉向更高級的任務,例如定義存儲策略。

3. SNIA之SDS全局示意圖

圖4是SNIA關於理想的SDS的全局示意圖,很好的概括了未來理想的SDS所涵蓋的各個方面。

  • 存儲管理

將來自服務器本地的閃存盤、機械盤,存儲陣列,JBOD等存儲資源,通過存儲管理協議(如SMI-S等),進行特性描述和虛擬化,構建出存儲資源池。

  • 數據服務

存儲資源池化後,數據服務即可按照用戶對存儲服務級別(如金銀銅)的要求提供。數據服務包含:空間部署、數據保護、數據可用性、性能、數據安全性。

  • 數據請求

存儲資源的使用者,如軟件開發人員通過數據管理接口(如CDMI),向SDS發起數據請求。由於SDS開放了豐富的API供調用,因此SDS能夠滿足用戶的數據請求,按照服務級別,提供相應的存儲資源。

軟件定義存儲(SDS)的定義及其分類

除了VMware、SNIA之外,Gartner、IDC,以及EMC、IBM、HP、DELL等,都提出了各自對SDS的定義或闡述。雖然每家對SDS的定義都各有不同,但易於擴展(主要指在線橫向擴展)、自動化、基於策略或者應用的驅動都幾乎都成為大家定義中的必備特徵。而這也是軟件定義數據中心的重要特徵,只有具備自動化的能力,才能實現敏捷交付,簡單管理,節省部署和運維成本。自動化也成為各家SDS方案,是否願意走向更高階段的試金石。

SDS的分類

軟件定義存儲的概念很大。我們所熟知的,存儲虛擬化、Server SAN、超融合架構(HCI)都是SDS的一部分。

下面筆者不揣淺陋,嘗試著對紛繁複雜的SDS進行分類,用來幫助大家對SDS進行深入理解。

軟件定義存儲(SDS)的定義及其分類

1. Control Plane(控制平面)

在SDS Control Plane這一層,比較著名的有:

  1. VMware SPBM (Storage Policy Base Management, 基於存儲策略的管理);
  2. OpenStack Cinder 。Cinder是OpenStack雲平臺的一個組件,用來提供塊存儲服務;
  3. EMC ViPR。目標是實現EMC存儲、異構存儲、商用硬件本地存儲資源的存儲虛擬化(包括互操作性);
  4. ProphetStor (希智)的Federator;
  5. FalconStor(飛康)的 Freestor;

2. Data Plane (數據平面)

在SDS Data Plane這一層,比較複雜,組成部分較多。

  • Based on Commodity Hardware (基於商用的硬件)

其實,這一部分是最難分類的,種類繁多,命名還不容易。首先,筆者認為超融合架構(HCI)是Server SAN的一個子集。

另外想說明的是,Based on Commodity Hardware這個分類裡,包括了IDC分類中Virtual Storage Appliance(簡稱VSA,存儲控制器運行在虛機上)和Physical Storage Appliance兩類,注意在這個分類裡,後者並不包括傳統的外置磁盤陣列。我們知道,控制平面與數據平面的分離之意義大於硬件與軟件的分離。因此,部署方式的這兩種不同,並沒有帶來本質的差異。舉例來說,VSAN FS(VSAN File System)之於EVO:RAIL,NDFS(Nutanix Distributed File System)之於Nutanix一體機,差別僅在於是否與硬件捆綁,共同點在於都是基於商用的硬件,將分佈式存儲資源池化,且基於Hypervisor。所以,VSAN, EVO:RAIL, Nutanix都屬於Server SAN的分類裡,而且由於它們都不僅提供存儲資源,還提供計算資源,所以還屬於超融合架構這個子類裡。

超融合架構裡,比較著名的有: VMware VSAN或EVO:RAIL、EMC ScaleIO、Nutanix、Maxta、SimpliVity、Scale Computing、Pivot3;國內有:華為FusionStorage、志凌海納SmartX、青雲HCI、深信服HCI等;開源的有Open vStorage(類似Nutanix架構);

在Server SAN裡,非超融合架構(也即不提供計算資源)的有DELL Fluid Cache、HP StorVirtual、RedHat Inktank Ceph、Microsoft Storage Spaces等,以及達沃時代、StorWind、大道運行SSAN等;還包括分佈式文件系統,如GPFS、Lustre、Panasas等;

筆者認為Server SAN在它的原始定義裡,應該是一個橫向擴展的分佈式存儲,它至少需要支持3個以上節點。這樣,對於那些僅支持兩個控制器做為集群的存儲,就不在Server SAN這個分類裡了。不過,它們依然屬於軟件定義存儲這個大的分類裡。這類存儲有:DataCore、Nexenta、國內的InfoCore(信核),還有其他支持Solaris ZFS的存儲,如開源的FreeNAS、NAS4Free。

  • Traditional SAN/NAS(External Storage)

指的是傳統的外置磁盤陣列,包括SAN存儲或者NAS存儲。例如:EMC VNX,NetApp FAS系列,HDS HUS, DELL SC系列和PS系列,HP 3PAR,IBM V系列和DS系列,華為OceanStor系列等。這些存儲勁旅,不甘人後,也紛紛加入到SDS浪潮裡,採取的方式有:

一是與Control Plane更多的API對接,例如,支持VMware SPBM之下的Virtual Volumes,再如,支持OpenStack Cinder等;

二是通過收購或自己研發,去逐步實現SDS抽象(解耦)、池化、自動化的階段,典型的就有HP將LeftHand與原有硬件解耦,形成VSA版StorVirtual;NetApp推出Data ONTAP的VSA版ONTAP Edge VSA;IBM推出XIV的軟件版Spectrum Accelerate;EMC推出VNX的虛擬化版本 vVNX等。另外,DELL的Fluid Cache脫胎於之前收購的內存虛擬化軟件RNA,本身已經具備抽象池化的SDS基因。相信隨著SDS的浪潮,會有越來越多的傳統大牌存儲廠商推出類似的方案。

  • Cloud/Object Storage

它作為Data Plane的組成部分,實際上是以後端存儲的身份為VM/App提供存儲資源。

VM/App可以通過RESTful API等接口與對象存儲進行數據的輸入輸出,目前有三種RESTful API:亞馬遜S3、SNIA CDMI和OpenStack SWIFT。

從雲存儲來看,隨著混合雲的逐漸深入,用戶自然會期待在自己的私有云和公有云之間,能夠實現除了在VM/App級別,在存儲級別,也能實現如同本地數據中心之間的同構存儲之間的高級功能,例如備份、歸檔和容災。此時,運行在公有云之上的VSA,也即虛擬存儲控制器(其實與在Hypervisor之上的VSA相類似),即可與本地存儲建立數據連接。

以NetApp的Cloud ONTAP為例。它是在AWS EC2的實例中運行Data ONTAP(FAS存儲的操作系統)軟件,充當虛擬存儲控制器,對下接管AWS EBS作為自己的存儲空間,對上給運行業務應用的EC2實例提供存儲服務,包括塊(iSCSI)和文件(NFS、CIFS)。

我們知道,把NetApp的FAS存儲直接放到AWS或Microsoft Azure裡去,是不太現實的。NetApp通過軟件定義的方法,把存儲控制器做成虛機,後端磁盤櫃換成塊存儲服務(AWS EBS),為業務虛機提供專業的、高級的存儲服務。

類似的還有SoftNAS,也是以虛機方式運行在AWS EC2實例上,可以為運行業務應用的EC2實例提供包括塊(iSCSI)和文件(NFS、CIFS)的存儲服務。

其實,談到軟件定義,無論SDN、SDS,都離不開控制平面Control Plane,數據平面Data Plane的提法。控制平面負責數據調度,實現自動化;而數據平面負責數據處理和數據優化,負責抽象和虛池化。

最近兩年流行的概念 - Server SAN目前還只是圍繞著數據平面做些工作,是當前階段SDS的主要形態,離理想的SDS尚有一些距離。不過,我們也注意到,已經有一些Server SAN在控制平面做些工作了,例如嘗試與VMware SPBM(主要指Virtual Volume),或者OpenStack Cinder對接。

可以肯定的是,在最近幾年內,Server SAN仍然是充滿著創業生機的沃土,與之相關的初創公司(包括HCI,也即超融合架構)會如同雨後春筍般冒出來。但是,需要注意的是,在數據中心三大基礎架構中,存儲相對於服務器和網絡,是最難被替換的,因為它是數據的命脈。初創公司存儲的安全性(數據不丟失)、穩定性是首要需要保證的。

SDS的發展

1. 為什麼出現SDS?

人類各項發明、創新,大多都是為了更加的高效、方便、靈活,並且節省成本。例如,從種植業、畜牧業的出現,到蒸汽機的發明,到自來水、集中供電的出現,再到互聯網的出現(信息傳遞更快更高效,更省成本),無一不是如此。IT也不例外,存儲也不例外。

伴隨著需求,還有兩大背景:

一是,隨著個性化、物聯網、萬聯網的發展,數據以前所未有的速度迅猛增長;2014年4月,IDC發現數據的增長超過其在2012年的預期,預計2020年將達44ZB的數據量;因此,數據需要更高效,更省成本的方式存放。

二是,虛擬化、雲計算和硬件技術的發展,使得軟件定義成為可能;隨著虛擬化和雲計算的普及,用戶的思維方式也發生了轉變,逐漸意識到,快速、敏捷、靈活地獲取計算資源已經成為可能,並且逐漸要求能按需使用,按需付費。因此,做為虛擬化和雲計算裡重要的組成部分,存儲也應適應新的需求而不斷完善,做到存儲即服務,實現快速交付,動態調整。

下面我們就來剖析一下,是哪些技術的發展,使得SDS,尤其是SDS的重要組成部分Server SAN在未來5年內會成為主流?

二三十年前,CPU的處理能力較弱,內存較小,單塊磁盤的性能和容量都較小。為了不搶佔寶貴的CPU和內存資源,也為了提高數據的性能、可靠性(如RAID保護)、可用性(如快照,容災,雙活等)、擴展性,以及提供方便易用的集中管理,誕生了外置磁盤陣列(也叫集中存儲),陣列本身自帶智能控制器,能夠組織管理數據,並提供快照、容災等高級的軟件功能。有些高端存儲甚至能在一個單一陣列裡提供1000乃至數千塊盤,如EMC VMAX,HDS VSP和華為OceanStor等。

然而,近幾年來,新的技術顯著地改變了存儲架構。包括:

  • SSD:延時從磁盤的毫秒級縮短到亞毫秒級(0.1毫秒),性能從單塊15K磁盤的180左右IOPS,猛增到單塊SSD的8000 IOPS(外置磁盤陣列),甚至到單塊SSD的36000IOPS(內嵌在服務器裡的SAS或SAT接口的SSD,或者PCIe SSD);閃存價格的下降速度比硬盤更快,根據IDC預測,兩者價格曲線將於2015-2017年出現交叉,屆時單位GB的SSD的價格甚至低於單位GB的15K磁盤的價格;

例如,2014-04-30,SanDisk發佈世界上第一款4TB SSD,並計劃2015年發佈8TB,2016年發佈16TB SSD;2015年08月11日,三星在閃存峰會上公佈世界容量最大的2.5英寸硬盤:16TB SSD PM1633a 。

可喜的是,除了國外Intel、Micron、Sandisk、SamSung、Seagate、Toshiba、HGST、Fusion-IO、Greenliant(綠芯)等SSD廠商之外,中國也湧現出不少SSD廠商,除了華為自研SSD之外,還有MemBlaze(憶恆創源)、Shannon(寶存,2015-04-24被Silicon Motion公司收購)、RunCore(源科)、蘇州恆成芯興等SSD廠商;

  • CPU多核技術:服務器的CPU多核早已被業務應用利用起來,尤其在虛擬化環境裡,多核處理器功不可沒,既提高了處理器利用率,也提高了單臺服務器上用戶對更多I/O的需求,這其實也驅動著底層存儲需要變革。如前所述,絕大多數存儲控制器採用了X86架構,但真正利用其多核處理IO,從最近三年才開始。例如,DELL Compellent Storage Center 6.3在2012年11月推出多核技術;EMC VNX 2在2013年9月推出MCx多核技術;而做為純軟件方式的存儲Nexenta,也利用多核技術去實現其在線的壓縮功能;正是有了多核的利用,Server SAN得以在處理業務應用之外,心有餘力地去處理或優化IO,實現豐富多彩的存儲軟件功能;
  • 高速網絡技術:分佈式存儲藉助於節點之間的緩存(用SSD存放)的同步複製來確保數據的冗餘性,也得益於近些年來網絡的高速發展;通常推薦採用萬兆網絡,甚至有的採用四萬兆(40GbE)的網絡。目前,萬兆網絡的延遲非常小,大約在100 微秒左右,遠小於PCIe閃存的延遲1毫秒;如果採用RDMA技術,延遲能更小;
  • 大容量服務器和磁盤:分佈式存儲藉助於大容量的服務器和磁盤,也能夠提供以往外置磁盤陣列才能支持大存儲容量。例如,DELL PowerEdge R730XD最多16個3.5寸近線SAS盤,可支持多達近100TB的裸容量;另外,單塊的機械磁盤容量也越來越大,例如,2015年03月,HGST首次向公眾展示了10TB的機械硬盤;這樣,不遠的未來,僅憑服務器內置磁盤,即可支持100多TB的裸容量。如果還支持服務器連接直連存儲來進行Scale Up(縱向擴展),容量就更大了。
  • 分佈式存儲的技術逐漸成熟。面向對象存儲的技術逐漸成熟。
  • 虛擬化和雲計算要求更智能的存儲,能夠調用其控制信息,配合上層更靈活敏捷的部署存儲資源。

2. SDS的現狀如何呢?

其實,前面提到的SDS分類其實已經涉及到了大部分內容。

目前,存儲市場上更多的是做數據平面的。做控制平面的SDS廠商,尤其是初創廠商,是需要巨大的勇氣和魄力,因為複雜度高,而且在短時間內很難看到回報。

這些做數據平面的廠商,絕大部分還在抽象、池化這兩個階段。

抽象做的是軟硬件解耦。池化做的是存儲虛擬化。

池化包括存儲虛擬化和存儲標準化,而存儲虛擬化指所有存儲資源的虛擬化,包括:

  1. 外置磁盤陣列內的虛擬化;
  2. 跨外置磁盤陣列的虛擬化(也即異構存儲的管理);
  3. 分佈式存儲服務器內的存儲虛擬化。

抽象是第一步,沒有解耦,寸步難行;第二步,池化,這樣才能靈活分配存儲資源;

第三步是自動化,存儲資源由軟件(Hypervisor,雲管理)來自動分配和管理。目前觀察到的,自動化其實是根據不同的工作負載來動態分配或管理存儲資源。那麼,誰來判斷工作負載的特點?最好是Hypervisor/OS,或者雲管理軟件,它們具有優勢。所以,存儲通過和Hypervisor、雲管理軟件對接,是一個比較現實可行的方法。


分享到:


相關文章: