两本赠书和投票 | 服务器里面一定要有硬盘吗? - SAS与SDS
【編者按】
一不留心就到4月1日了,不過我保證文末的贈書活動是真實的,SDS新書有8位作者的簽名。另外一本贈書是VMware VDI的書籍。
在《SDS新書的來龍去脈 & SDS序言 - 倪光南:眾籌出書也是一種創(chuàng)新》里,我曾說到:“我相信這本書里面有些篇章,具有較遠的技術前瞻性,即使是三、四年過后,仍然有其借鑒或者啟發(fā)的意義”。原因就在于這本書里有好幾篇前瞻性的文章,而Peter Cui(崔勇)撰寫的第24章《SAS與SDS》是其中的一篇。
我曾一度猶豫是否要把SAS與SDS這篇文章放到書中。這篇文章起源于2015年12月18日在微信公眾號“樂生活與愛IT”上的一篇閱讀量非常高的《別再說存儲了,我真的煩了》,文章本身令人腦洞大開,看完也頗有啟發(fā),而且這篇文章還引來了一則趣事,也許十年后可以請故事的主角親自來回顧這段軼事。
坦率說,這篇文章總體上行文不是十分嚴謹,而且不是現(xiàn)有技術的分析,是對未來技術的探討。彼時其實現(xiàn)在也是如此,SAS交換技術尚未成為業(yè)界的主流標準,未來是否能普及開來不得而知。后來考慮到SDS生態(tài)的完整性(代表著SDS后端的數(shù)據(jù)傳輸技術),而且個人覺得確實很有道理,另外也希望讀者不僅能看到現(xiàn)在,還能激發(fā)對未來的思考,就收錄進來了。
另外,Peter Cui提出的一個觀點也頗為新穎:“云計算就是數(shù)據(jù)更靈活的和計算單元(物理CPU或虛擬CPU)建立耦合關系”。其實數(shù)據(jù)和計算的解耦是否采用SAS交換來落地不重要,但是這種往解耦的方向發(fā)展,從而更靈活地適用于多種業(yè)務場景,以滿足各自對計算和存儲的配比關系,或許是一個值得思考的方向。
時至今日,采用SAS交換機將服務器的計算和存儲分離的廠商和用戶,在全球范圍內(nèi)仍不多見,很高興看到做為IT廠商的浪潮、英業(yè)達、書生云;做為用戶的阿里、騰訊、百度等中國互聯(lián)網(wǎng)廠商,以及以BAT為首的天蝎3.0計劃已經(jīng)有SAS交換的落地了。順便恭喜一下書生云基于SAS交換的超融合產(chǎn)品簽約鳳凰創(chuàng)新園,據(jù)書生云CEO王東臨說,該數(shù)據(jù)中心投資超過10億元,設計存儲容量超過1Eb(編者按:應該是1EB)。
如果SAS交換技術能夠在未來形成生態(tài)乃至標準,這或許是華人在存儲領域這個細小分支的突破!
好,下面我們就開始腦洞大開之旅。
---Begin---
第24章? ?SAS與SDS
重復一下本書主編的話:軟件定義的存儲(SDS)是一個不斷進化的概念,在現(xiàn)階段看來,SDS是指存儲資源由軟件自動控制,通過抽象、池化和自動化,將標準服務器內(nèi)置存儲、直連存儲、外置存儲或云存儲等存儲資源整合起來,實現(xiàn)應用感知,或者基于策略驅(qū)動的部署、變更和管理,最終達到存儲即服務的目標。
筆者認為軟件定義存儲和傳統(tǒng)存儲并不是黑與白的關系,而是彼此學習、互相兼容而且不斷發(fā)展的過程;由于市場格局或產(chǎn)品定位等非技術原因,往往最新的、定制化的技術會被首先用在所謂的傳統(tǒng)存儲設備上,比如PCIe的網(wǎng)絡,RapidIO網(wǎng)絡等,這些技術最先被用在傳統(tǒng)存儲的控制器之間互聯(lián)。這些在當時并不是最通用的技術,但是可以提供高速、低延時的數(shù)據(jù)通信。而今天隨著技術飛速發(fā)展,越來越多的快速、廉價的網(wǎng)絡技術被普及,越來越快的存儲介質(zhì)遠遠突破傳統(tǒng)存儲控制器的IO設計能力,與此同時CPU的計算能力有極大的剩余,軟件定義存儲(基于X86服務器和以太網(wǎng))也就自然而然的產(chǎn)生了。
剛剛提到的快速而且廉價的網(wǎng)絡是指以太網(wǎng),今天的標準有10Gb、40Gb、100Gb、25Gb,同時像RoCE這樣的技術也越來越普及,高速和低延時的網(wǎng)絡越來越容易獲得。但是以太網(wǎng)是唯一的選擇么?后面會給大家介紹各種協(xié)議的選擇和妥協(xié)。
本章內(nèi)容主要介紹通過SAS(串行連接SCSI接口)網(wǎng)絡來實現(xiàn)存儲池化的方法。由于本章所展望的通過SAS實現(xiàn)SDS和以往的方法不太一樣,所以需要有一些鋪墊內(nèi)容來介紹一些基礎概念。本章涉及到的一些概念和現(xiàn)在的硬件和SDS不太一樣,所以我們先在本章開始之前提出一個問題:服務器里面一定要有硬盤么?
本章分為以下幾個部分:
1)什么是SAS協(xié)議,SAS協(xié)議的現(xiàn)狀;
2)服務器存儲和計算硬件解耦和;
3)用SAS協(xié)議來傳輸數(shù)據(jù);
4)數(shù)據(jù)IO從軟件到硬件;
5)云計算和軟件定義存儲;
6)其它的一些補充。
24.1 ?SAS協(xié)議和SAS協(xié)議的現(xiàn)狀
SAS全稱是串行連接SCSI接口,也是目前服務器和存儲設備中的最常見的存儲協(xié)議,通常用來連接硬盤的協(xié)議,SAS協(xié)議兼容SATA協(xié)議。在服務器中通常由IOC(也叫SAS卡或者HBA卡)或Raid卡來實現(xiàn)PCIe協(xié)議到SAS 協(xié)議的轉(zhuǎn)換,HBA卡或RAID卡一般有8個SAS接口(少數(shù)卡支持16個或者24個接口),其中每4個SAS接口可以組合組合成一個寬端口,因為服務器內(nèi)的SAS HBA或RAID卡是必備配件,為了減少服務器的內(nèi)部PCIe插槽占用,這張卡片也有很多不同的外形。Server SAN里的都是采用HBA卡連接本地硬盤。如下圖
?
內(nèi)置RAID控制器,定制接口,多采用插座形式,不占用PCIe插槽
標準PCIe 插槽RAID卡外置MiniSAS端口
標準PCIe SAS HBA卡內(nèi)置Mini SAS端口
?
SAS協(xié)議目前最新的版本是SAS 3.0,單端口的帶寬是12Gb。一張8端口的HBA,可以提供理論上96Gb的SAS帶寬,而HBA卡的PCIe 3.0 x8接口帶寬是64Gb。所以HBA卡的SAS接口理論上沒有瓶頸,可以充分發(fā)揮PCIe的帶寬。每4個SAS端口組成一個寬端口,每個寬端口的帶寬是48Gb。目前使用的寬端口的名稱叫做Mini SAS HD,包括外部端口和內(nèi)部端口。如下圖
外置Mini SAS 接口和內(nèi)置Mini SAS HD接口
外置Mini SAS HD接口
SAS協(xié)議可以說是無處不在,無論是服務器或存儲設備中,只要有硬盤的地方就有SAS協(xié)議使用,除了我們前面提到的控制卡使用SAS協(xié)議,在服務器或存儲設備上還有一個SAS端口擴展器,可以讓一個8端口的控制卡連接幾十塊硬盤。由于這些器件通常都是放在機箱內(nèi)部,大多數(shù)人對它們不是非常熟悉。
24.2 ?服務器存儲和計算物理解耦和
作為目前X86唯一的CPU供應商,Intel每隔一年半到兩年左右就會發(fā)布新一代的CPU,而每個服務器廠家就會按照Intel的節(jié)奏發(fā)布新款服務器,我們以雙路服務器為例,每個廠家都會基于最新一代的IntelCPU發(fā)布十幾個型號服務器,這些服務器最大的不同在于機箱的機械尺寸和存儲的擴展性。所以我們提出希望統(tǒng)一計算部件,將服務器的計算部分和存儲部分分離,實現(xiàn)數(shù)據(jù)中心的計算節(jié)點統(tǒng)一,在選擇計算節(jié)點時候不需要考慮服務器支持多少個硬盤或者多少種類硬盤。服務器僅需要包括CPU、內(nèi)存、網(wǎng)卡、HBA卡等基礎部件即可。存儲部分都在服務器外部。那么就需要一個設備可以把若干臺服務器和大量的硬盤連接在一起。同時這個方案需要能被互聯(lián)網(wǎng)行業(yè)使用,必須要滿足高速交換、不改變現(xiàn)有操作系統(tǒng)、不改變應用習慣、不增加成本、擴展容易等特點。無論是2個至強CPU配置2個硬盤還是配置120塊硬盤,都可以采用相同的服務器和相同的JBOD硬盤柜。如下圖
CPU和硬盤分離示意圖
?
上圖上半部分是僅包含CPU、內(nèi)存、網(wǎng)卡、SAS卡的計算節(jié)點,通過某一種網(wǎng)絡和大量的硬盤或SSD連接在一起。硬盤可以按照需求任意分配給Fabric連接的服務器。這個Fabric需要滿足高速、無阻塞、低延遲、低成本、低開銷、技術成熟、較高的擴展性??墒沁@個Fabric究竟應該是什么樣的協(xié)議呢?
可以選擇的互聯(lián)協(xié)議比較有限,目前看來,協(xié)議無非就是PCIe、Ethernet、SAS、FC等幾種協(xié)議。為什么選擇SAS協(xié)議來實現(xiàn)存儲和計算物理解耦和呢?我們簡單來看一下各種協(xié)議的現(xiàn)狀,目前該方案采用了SAS網(wǎng)絡,國內(nèi)已經(jīng)有2家公司量產(chǎn)了這種交換機,而且有超過2家的互聯(lián)網(wǎng)企業(yè)采用了這種CPU和硬盤解耦和方案。下面我們通過協(xié)議的對比,看看為什么最終選擇了SAS協(xié)議。
PCIe協(xié)議,一提到PCIe協(xié)議,大家就會覺得高帶寬、低延時、直連CPU等等。反正就是快,采用PCIe協(xié)議再配合上NVMe 來實現(xiàn)存儲更符合技術發(fā)展的方向,但是我們現(xiàn)在需要的是一個Fabric而不是點對點的數(shù)據(jù)傳輸,在這個Fabric上要有多個節(jié)點和多個存儲配件。
但是我們不能忽視PCIe協(xié)議目前的幾個缺點,NVMeSSD的每GB成本還是遠高于機械硬盤,PCIe交換機目前成本還比較高。PCIe交換機的擴展規(guī)模有限,以目前最大96 lanes(通路)的單PCIe switch芯片為例,如果每個服務器需要x8的帶寬,那么最大只能實現(xiàn) 12個主機互聯(lián)而且還沒有考慮到PCIe 存儲設備連接到Switch芯片上,如果要多個交換芯片組成一個大的交換矩陣,PCIe端口擴展比較復雜。
PCIe交換機成本較高,目前PCIe交換機主要供應商是PLX和IDT,PCIe 3.0協(xié)議不支持多主機互聯(lián)(需要使用非透明橋NTB來橋接主機和PCIe交換機)。用PCIe交換機來計算存儲解耦和或者統(tǒng)一IO(存儲、網(wǎng)絡等),目前來看只是一個美好的愿望,但是還有很多路要走。
戴爾的服務器產(chǎn)品較早使用PCIe交換機,從最初的GPU擴展,到多服務器節(jié)點共享存儲資源,而且根據(jù)使用場景有不同的存儲資源分配方案,目前配置了PCIe交換機的服務器主要有VRTX和FX2,這2款產(chǎn)品充分利用了PCIe交換的特點,并且這2款產(chǎn)品完全面向不同的業(yè)務環(huán)境,所以在存儲擴展上采用了不同的實現(xiàn)方式。下圖是IDT和PLX PCIe交換機芯片。
?
如果用PCIe Switch組成的解耦和環(huán)境如下圖所示:考慮到HDD每GB成本比較低,實際使用中還需要HDD和NVMeSSD 同時存在,那么必須要有PCIe到SAS的協(xié)議轉(zhuǎn)換,而且Fabric里面有2中協(xié)議混合存在。如果要把接在SAS HBA下面的HDD 要分配給不同的主機,有很大的難度,也有很多的挑戰(zhàn),這里不進一步詳述。其實DELL的VRTX就是這么做的,把一張RAID卡虛擬成4張RAID卡,但是目前僅僅支持4個節(jié)點,主要面向中小企業(yè)和分支機構。
?
?
?
Ethernet協(xié)議,如果要通過Ethernet連接今天的硬盤和CPU,需要通過幾種協(xié)議的轉(zhuǎn)換,在Initiator端,先要把PCIe轉(zhuǎn)到Ethernet,在Target端,把Ethernet轉(zhuǎn)到SAS或者NVMe協(xié)議。第一次協(xié)議轉(zhuǎn)換相對比較容易,和現(xiàn)有的網(wǎng)卡一樣的功能,這個特殊的網(wǎng)卡需要虛擬出一個塊存儲設備給CPU.但是在Target端協(xié)議轉(zhuǎn)換卻需要重新設計,硬盤或SSD需要有以太網(wǎng)接口,通常會采用RJ45接口,接口速率10G或更高的速率,硬盤需要把Ethernet協(xié)議轉(zhuǎn)換成SAS協(xié)議或NVMe協(xié)議,目前沒有任何類似的產(chǎn)品可以參考,FCOE協(xié)議和SASOE如下圖。
參考FC協(xié)議到FCOE,SAS和NVMe協(xié)議也可以采用類似的邏輯,但是在Mapping的部分可以有不同的實現(xiàn)方式,比如在SAS(64位)地址和MAC(48位)地址的處理方式,可以采用變長地址,也可以2種地址完全無關直接packing,但是無論哪種方式,都需要網(wǎng)卡中有直接Offloadengine。
基于Ethernet協(xié)議解耦后的結構圖
?
采用了這種SASOE后的結構如上圖,從上圖中可以看出,存儲介質(zhì)的接口需要改成Ethernet,通常采用RJ45接口,供電部分也可以直接使用POE,目前這只是我的一個假設,RJ45接口的缺點就是機械尺寸比較大,但是這個問題不大,畢竟8個觸點還是比較好處理的。
?
圖 24-8 網(wǎng)卡虛擬存儲設備
?
改成這種結構以后,對OS和應用有什么需求么?如圖24-8所示,這時候NIC就需要有較多的功能,在MAC層以上需要支持SASOE和NVMeOE的協(xié)議,通過NIC可以虛擬出存儲設備,對于CPU和操作系統(tǒng),這就是一個連接在PCIe總線上的存儲設備,該虛擬存儲設備由多個SASOE存儲設備的存儲空間組合而成,組合方式見后面的SAS DHBA卡工作原理。
可能有人會說為什么不用ISCSI協(xié)議呢?其實ISCSI協(xié)議和Ethernet轉(zhuǎn)存儲方式是類似的,只是Ethernet轉(zhuǎn)存儲時候沒有IP層和傳輸層,轉(zhuǎn)發(fā)效率上和封包速度上會快不少。IP轉(zhuǎn)存儲相關協(xié)議比如ISCSI協(xié)議,沒有獨立器件實現(xiàn)IP到SAS協(xié)議之間的轉(zhuǎn)換,目前多用ISCSI網(wǎng)關(IPSAN存儲設備等)來實現(xiàn)轉(zhuǎn)換。下圖對比ISCSI和SASOE的區(qū)別。
?
FC協(xié)議,雖然FC協(xié)議已經(jīng)發(fā)展了十幾年了,但是到今天為止FC協(xié)議的成本仍然不低,其次從CPU到硬盤或者SSD,如果采用FC互聯(lián),必須要經(jīng)過PCIe轉(zhuǎn)FC,FC轉(zhuǎn)SAS 兩次轉(zhuǎn)換。FC協(xié)議基本上不在考慮范圍之內(nèi)。
SAS協(xié)議,最后我們說說這個無處不在的SAS協(xié)議,目前從CPU到硬盤,僅僅是PCIe協(xié)議轉(zhuǎn)SAS協(xié)議僅僅一次轉(zhuǎn)換就可以了。通常是SAS HBA或RAID卡來實現(xiàn)轉(zhuǎn)換。最大的缺點就是不支持NVMe協(xié)議。如下圖。
?
最終可以實現(xiàn)的服務器計算部分和存儲部分完全分離,CPU到每一個硬盤都可以實現(xiàn)無阻塞的交換,實現(xiàn)后的效果圖和邏輯結構圖如下
?
SAS交換機現(xiàn)狀,最早的SAS交換機是LSI6160 SAS交換機,基于SAS2.0協(xié)議。最大16個端口。每個端口的帶寬支持4*6Gb=24Gbps。浪潮在2015年推出了一個17口交換機,基于SAS3.0協(xié)議,每個端口的帶寬是4*12Gb=48Gbps。理論上,現(xiàn)有的技術單交換機可以支持68個48Gbps端口。LSI 的SAS交換機價格非常高,但是浪潮和英業(yè)達的SAS交換機已經(jīng)把成本降到非常非常低。
LSISAS6160 SAS交換機
某公司設計的SAS 交換機
?
肯定有人會擔心SAS交換機的成本是不是很高,大家都知道一個最基本的道理,被大量廣泛使用的技術,成本下降的最快,相比以太網(wǎng)和FC網(wǎng)絡,大家對SAS網(wǎng)絡不是很熟悉。其實SAS網(wǎng)絡比以太網(wǎng)和FC網(wǎng)絡更加普及,在通用服務器中,通常會有一個SASExpander和一個SAS RAID卡或HBA卡。按照端口數(shù)量來估算,每10-20臺服務器有1個FC接口,每臺服務器有2個以太網(wǎng)口,但是每臺服務器有20-40個SAS接口(每張SAS RAID卡或HBA卡有8個接口,服務器硬盤熱抽換背板上有24到36個SAS端口)。所以SAS的普及程度要遠遠高于其它的網(wǎng)絡。而SAS交換機就是基于SAS Expander 設計出來的?;?/span>SAS協(xié)議的解耦和架構就是把每一個服務器的SAS Expander拿到機箱外部,并不會增加什么器件成本。
某互聯(lián)網(wǎng)公司采用這種方案,可以實現(xiàn)高性能計算、熱數(shù)據(jù)、溫數(shù)據(jù)、冷數(shù)據(jù)存儲采用統(tǒng)一的服務器。為什么這么說呢?各種應用類型的服務器最大的特點是CPU計算能力和數(shù)據(jù)量之間的比例,舉例來說:高性能計算通常只需要2個硬盤RAID1配置,熱數(shù)據(jù)采用若干塊SSD,溫數(shù)據(jù)采用12-16塊7200轉(zhuǎn)機械硬盤,冷數(shù)據(jù)可以配置到60塊機械硬盤。今天上線的計算服務器,幾年后新的CPU上市,原來的計算服務器需要被汰換,改為存儲型服務器,假如原來的計算服務器最大僅支持2塊硬盤,擴展硬盤容量是件很復雜的事情。但是如果采用SAS網(wǎng)絡來更改CPU和硬盤的比例,就是件很容易的事情,不再收到機箱規(guī)格的限制。如下圖。
?
24.3 ?Server SAN的數(shù)據(jù)讀寫通過SAS網(wǎng)絡傳輸
上一節(jié)我們提出了低成本實現(xiàn)CPU和存儲的解耦和,可以得到一個靈活配置的機架,可以減少服務器的種類,優(yōu)化了BOM成本。在實際案例中評估上圖方案的成本和一個機柜配置傳統(tǒng)服務器成本略有優(yōu)勢。同時我們得到了一個連接所有CPU和硬盤的網(wǎng)絡。
在實現(xiàn)了計算和存儲的物理分離后,我們可以發(fā)現(xiàn),其實任何一個CPU到任何一個存儲介質(zhì)(硬盤或SSD)都可以聯(lián)通。我們在回去看看Server SAN的架構原理,如下圖,大家不難發(fā)現(xiàn)在Server SAN的方案中,當數(shù)據(jù)在寫入磁盤的時候需要保持多副本的一致性,必須要在其它的主機上同步寫入數(shù)據(jù),而副本的寫入是是通過IP網(wǎng)絡寫入到其它的主機的硬盤上。
在現(xiàn)有硬件條件下,這是最好的方式,而且通過合理配置SSD、提高以太網(wǎng)絡帶寬以及降低網(wǎng)絡延時,可以實現(xiàn)不錯的性能。但是其缺點也是顯而易見的,首先副本數(shù)據(jù)在寫入其它主機的時候,需要經(jīng)過的協(xié)議轉(zhuǎn)換次數(shù)是很多的,而且這些協(xié)議的轉(zhuǎn)換需要通過CPU來實現(xiàn),數(shù)據(jù)傳輸?shù)奶鴶?shù)比較多,主機開銷也比較大。如圖24-14。
圖24-14?Nutanix基礎原理架構
?
圖24-15 Nutanix的數(shù)據(jù)流示意圖
?
從上面的圖24-15可以看出,當一個虛擬主機需要寫數(shù)據(jù)的時候,需要經(jīng)過若干次軟件處理,再通過必不可少的硬件設備,若干次的協(xié)議轉(zhuǎn)換,最終實現(xiàn)副本寫入到其它的主機的物理存儲空間。整個過程的時延和CPU開銷是非常大的。
?
但是,當Server的計算部分和存儲部分分離之后,我們可以發(fā)現(xiàn),其實當CPU寫入到本機硬盤和其它主機的硬盤實際的物理路徑是一樣的,甚至中間的跳數(shù)和協(xié)議的轉(zhuǎn)換也是完全一樣的,也就是說,有可能通過一步操作實現(xiàn)多個副本的寫入,理論上想寫幾個副本就寫幾個副本,任何一個副本的開銷和本地寫開銷完全一樣,而且可以不經(jīng)過任何軟件層處理。當一個主機計劃內(nèi)或計劃外下線了,其實它的所有的數(shù)據(jù)都在SAS交換網(wǎng)絡上,甚至連主副本都在,只需要有某一個主機把這些數(shù)據(jù)再裝載起來,完全不用擔心,服務器離線后,服務器內(nèi)的硬盤內(nèi)的幾十TB數(shù)據(jù)也一起下線了。如下圖
?
只要文件系統(tǒng)可以很好的調(diào)度和管理主數(shù)據(jù)和副本,并且在CPU主機之間通過狀態(tài)監(jiān)控,就可以實現(xiàn)數(shù)據(jù)按照需要在不同的主機之間漂移,數(shù)據(jù)始終在那里,就想SAN存儲設備一樣,所有接在這個交換網(wǎng)絡內(nèi)的主機都有可能訪問這些數(shù)據(jù)。和SAN不同的地方在于,網(wǎng)絡內(nèi)全是硬盤,這些硬盤怎么組成一個簡單的高效快速存儲空間呢?需要主機內(nèi)的文件系統(tǒng)來管理邏輯存儲空間到物理磁盤之間的映射關系,比如100塊SSD,每塊SSD提供10GB的空間,組成一個邏輯1TB的邏輯塊設備。那么這個映射關系就需要文件系統(tǒng)來管理,而且需要對這個映射關系建立好副本。
在上圖可以看到,全局的硬盤的數(shù)量比較多,元數(shù)據(jù)的存儲、全局磁盤狀態(tài)、副本數(shù)據(jù)校驗等工作還需要在本機CPU上執(zhí)行,同時一份數(shù)據(jù)需要3次寫入。但是最大的挑戰(zhàn)在于,必須要在OS的文件系統(tǒng)中支持這樣的存儲方式,所以需要對Server SAN或者云計算的文件系統(tǒng)層做出修改。如果想讓任何操作系統(tǒng)都能支持,就需要多廠家都支持這種工作方式,比如VMware、Windows、Linux、Openstack、Ceph等等,但是如果要在一個數(shù)據(jù)中心里面,同時有多種操作系統(tǒng),該如何才能像FC SAN那樣來分配存儲空間呢?短時間內(nèi)要讓操作系統(tǒng)廠家來支持這個方案,需要對操作系統(tǒng)進行比較大的改動,但是目前北京有一家云計算公司簡稱SS公司,他們已經(jīng)讓OpenStack支持SAS交換網(wǎng)絡,從目前的情況來看,無論是IO能力還是CPU資源的占用都得到了極大的改善。
24.4 ?數(shù)據(jù)寫入硬盤從軟件到硬件
在上一節(jié)中文件系統(tǒng)必須是特殊定制的,雖然定制的復雜度很大,但是獲得的收益也是很顯而易見的,同時因為所有用到的配件都是量產(chǎn)成熟的硬件,SAS網(wǎng)絡來實現(xiàn)數(shù)據(jù)寫入硬盤的做法是目前比較理想和現(xiàn)實的。
前面提到的SS公司在開源的操作系統(tǒng)中先實現(xiàn)了基于SAS網(wǎng)絡的數(shù)據(jù)傳輸,修改Ceph,讓OpenStack來支持通過SAS網(wǎng)絡實現(xiàn)CPU到硬盤的數(shù)據(jù)讀寫。但是如果要修改windows或者修改VMware則難度很大,有沒有一種可能來實現(xiàn)不需要修改現(xiàn)有的操作系統(tǒng)就可以實現(xiàn)數(shù)據(jù)多副本寫入到硬盤?可以讓現(xiàn)有的操作系統(tǒng)或者任何單主機的操作系統(tǒng),都能自由使用SAS網(wǎng)絡呢?甚至Windows7 也可以使用SAS網(wǎng)絡實現(xiàn)多副本呢?
方法總是有的,在上一節(jié)總我們提出了虛擬地址到物理地址的映射關系,這個映射關系就是存儲的核心,原來是交給文件系統(tǒng)來管理和動態(tài)維護,如果把這個管理維護的工作交給一個獨立的硬件來完成呢?我們按照數(shù)據(jù)寫入的路徑從文件系統(tǒng)往下一級一級的看,文件系統(tǒng)到CPU,CPU到PCIe總線,PCIe總線到SAS HBA,SAS HBA到SAS 交換機,SAS交換機到硬盤,有機會承擔這個映射關系管理工作的只有HBA或者交換機了。如果讓SAS HBA 實現(xiàn)這些功能。那我們看一看新SAS HBA需要增加那些功能,我暫時給這種HBA卡起一個名字叫DHBA。
DHBA主要作用是抽象真實的物理的存儲空間(包括DHBA卡連接的SAS 交換機以及連接在交換機上的硬盤和其它計算設備),通過抽象底層的硬件和結構,DHBA卡向上層CPU和操作系統(tǒng)提供一個邏輯的塊存儲設備,數(shù)據(jù)可靠性、一致性、讀寫優(yōu)化、部分的物理存儲資源的管理也是由DHBA卡來實現(xiàn)。如下圖
大家肯定會問,萬一這個DHBA卡壞了,數(shù)據(jù)是怎么保護的?業(yè)務會不會中斷?這里簡單介紹一下DHBA卡怎么實現(xiàn)的。
如上圖示例,DHBA卡虛擬出一個SAS設備,操作系系統(tǒng)會認為這是一個20TB的硬盤,但是實際的存儲空間是由200塊磁盤各出100GB空間組成的,副本存儲在其它的空間,按照3副本要求實際占用空間60TB。虛擬SAS設備和物理SAS存儲之間采用地址映射的方式實現(xiàn)。如下表
從上面的表,大家可以看到,VirDev1是CPU和操作系統(tǒng)可以看到的本機的塊存儲設備,但是VirDev1實際上是不存在的,是由DHBA卡虛擬出來的卡片,而虛擬設備的存儲塊是由物理設備的存儲塊映射過來的。
三副本的映射方式
上表中大家也可以看出,也可以由一個虛擬塊映射到多個物理塊,這樣可以實現(xiàn)副本備份,也可以實現(xiàn)QOS調(diào)度等。通過合理的設計這個mapping表還可以實現(xiàn)災難備份、精簡配置、動態(tài)遷移等等,這個表是最小粒度的塊地址映射,當然可以實現(xiàn)更大的粒度比如4M或者64M,或者采用連續(xù)塊地址映射來優(yōu)化映射算法。具體算法需要高手來實現(xiàn)。
通過上面的映射表可以實現(xiàn)很多高級的功能。比如精簡配置的功能,虛擬設備照樣提供20TB的空間,但是物理地址實際上僅提供2TB的空間。比如副本數(shù)量調(diào)整,一方面可以提高可靠性,另一方面可以實現(xiàn)某些應用的讀取負載均衡,如下圖,數(shù)據(jù)一次寫入進虛擬存儲空間,同時實現(xiàn)20份副本,每份副本提供給一個服務器。這樣可以極快速提供最大數(shù)據(jù)讀取IO能力。再比如寫3副本的時候,1份副本采用SSD,同時讀寫,另2份副本僅寫入,采用機械硬盤。這樣可以實現(xiàn)較好的性價比。還有其它的一些功能在后面描述,比如容災,HA,雙活,高可用等。
整個存儲網(wǎng)絡由很多的硬盤組成,整個映射表也非常大。但是可以實現(xiàn)子表和總表分離,每個交換機存儲全局的總表,每個子表和SAS端口對應,當服務器連接上SAS交換機端口,DHBA卡從總表下載下載對應端口的子表,然后DHBA卡建立虛擬SAS設備存儲和物理空間的映射,這樣服務器就可以從虛擬磁盤設備上直接啟動和讀寫數(shù)據(jù)了。服務器完全不需要預裝操作系統(tǒng),也不需要配置存儲和主機的映射。服務器和操作系統(tǒng)以及數(shù)據(jù)完全沒有關系了,比如原來的一臺服務器是雙路服務器,因為服務器需要升級到新的四路服務器,只需要把新的四路服務器連接到原來服務器對應的SAS端口,那么新的四路服務器從SAS交換機下載對應的端口的子表后,就可以從原來的操作系統(tǒng)啟動并讀寫原來的數(shù)據(jù)了。如圖24-18。
圖24-18映射子表和全局映射表
?
有什么協(xié)議可以比SAS更合適未來的技術需求呢?比如NVMe+PCIe。或者NVMe over Fabric。假如是NVMe over Eth,那么上面的DHBA的映射技術還可以被用到新的協(xié)議上來么?以太網(wǎng)卡不僅可以把所有的IO統(tǒng)一,而且網(wǎng)絡技術也成熟,現(xiàn)在網(wǎng)絡速度很快,交換設備的交換容量也很大,而且現(xiàn)在的大二層的以太網(wǎng)方案也可以很好的支持各種OverEthernet存儲技術。
在前面第三節(jié)的協(xié)議的選擇的時候,提到過如何通過SAS over Ethernet 或者NVMe over Ethernet。就目前的協(xié)議發(fā)展速度和方向來看,Over Ethernet幾乎是一個很好的選擇,但是其實現(xiàn)的復雜度要遠遠高于SAS網(wǎng)絡。開發(fā)難度,相關硬件的成熟度等等。筆者認為在5-10年內(nèi)SAS很有可能要繼續(xù)發(fā)揚光大。
?
?
?24.5 ?云計算和軟件定義存儲?
?
在第四節(jié)我們已經(jīng)把數(shù)據(jù)和CPU徹底分開了,數(shù)據(jù)和CPU完全沒有任何依存關系。任何CPU都可以按照策略或者按照需求來獲得所需要的數(shù)據(jù)。把子表分配給某端口,某個端口連接的CPU就可以讀寫子表對應的邏輯存儲空間,邏輯存儲空間上的數(shù)據(jù)就屬于該端口的CPU。
在說云計算之前稍微說一下虛擬化,因為今天的云計算基本上都是基于昨天的虛擬化發(fā)展過來的。與此同時今天的云計算也離不開現(xiàn)在的軟件定義存儲。
最初,一個物理主機上建立虛擬層,并且在虛擬層上創(chuàng)建若干硬件資源,在每個虛擬硬件資源上運行若干個操作系統(tǒng),每個操作系統(tǒng)彼此獨立。這個時候的虛擬化最大的優(yōu)勢是充分利用剩余的計算資源,在歷史的發(fā)展過程中從開發(fā)環(huán)境、測試環(huán)境一步步的向生產(chǎn)系統(tǒng)遷移。
由于生產(chǎn)系統(tǒng)對可靠性要求比較高,而且隨著SAN技術越來越成熟,通過把SAN加入虛擬化環(huán)境,人們可以將避免單物理服務器的故障,可以共享數(shù)據(jù)來實現(xiàn)更高速的集群計算,數(shù)據(jù)統(tǒng)一管理等。虛擬化不可避免的用到SAN技術,原先2臺物理主機之間的HA并不能很好地解決數(shù)據(jù)一致性的問題,VMware推出了和上層操作系統(tǒng)和應用無關的vMotion讓虛擬機和數(shù)據(jù)可以運行在不同的物理機上,而且這個過程平滑、快速,其實歸根到底是數(shù)據(jù)所在的位置并沒有發(fā)生改變。
從單機虛擬化到基于共享存儲的虛擬化
?
2014年,VMware推出了VSAN,這個上市時間并不長的軟件,成為今天的VMware云計算的一個核心組件。為存儲的資源池化提供了技術保障。也可以說,VSAN是一個里程碑的產(chǎn)品。
?
筆者認為,數(shù)據(jù)和CPU的關系決定了今天的云計算的結構,我們通??紤]的事情是數(shù)據(jù)屬于那個計算節(jié)點(CPU),數(shù)據(jù)就在那個計算節(jié)點上運行。原先通過SAN來實現(xiàn)數(shù)據(jù)耦合不同的物理主機,比如把LUN分配某一個主機,該LUN上的數(shù)據(jù)就可以被該主機讀寫。但是SAN的局限性有3點,不可能擴大到云計算的規(guī)模(速度、主機數(shù));成本高;性能受限。但是VSAN可以在更大的網(wǎng)絡規(guī)模上可以實現(xiàn)數(shù)據(jù)耦合不同的物理主機,硬件成本要比SAN節(jié)約很多,幾十個主機合計的IO性能要高于傳統(tǒng)的SAN。由于VSAN的多副本,可以輕松的實現(xiàn)數(shù)據(jù)和其它主機的耦合。
數(shù)據(jù)通過SAN被投射給不同的物理主機,而且因為SAN可以靈活的按照各種策略將數(shù)據(jù)投射到不同的物理主機。VSAN由于正本和副本數(shù)據(jù)存儲在不同的物理主機上,可以按照需要來實現(xiàn)數(shù)據(jù)副本和其它物理主機的耦合,比如下圖紅色數(shù)據(jù)正本耦合在主機1,如果主機1宕機,紅色數(shù)據(jù)副本符合可以立即耦合到主機2。
?
SAN的數(shù)據(jù)和主機之間的耦合方式
圖24-21 SAN可以靈活的讓數(shù)據(jù)和主機建立耦合關系
?
從圖24-21可以看出,由于有虛擬層的存在,所以數(shù)據(jù)可以被輕松的耦合到任何一個物理主機,再分配給任何一臺虛擬機,我認為云計算就是數(shù)據(jù)更靈活的和計算單元(物理CPU或虛擬CPU)建立耦合關系。如果用運算能力較弱的物理CPU (ATOM 或ARM) 來替代虛擬CPU,只要數(shù)據(jù)可以靈活的和物理CPU耦合,那么也可以實現(xiàn)類似云計算的效果,如圖24-22.
?
圖 24-22異構計算環(huán)境的云計算平臺
?
按照本章第四節(jié)所描述的方案,我們可以實現(xiàn)一個更靈活的云計算環(huán)境,計算資源和存儲資源完全分離,數(shù)據(jù)的IO不依賴虛擬化或操作系統(tǒng)或應用軟件的處理,而且多種作業(yè)系統(tǒng)可以在同一個環(huán)境下并存,如下圖
?24.6 ?最后的一些話
12年前,筆者開始向企業(yè)級客戶推薦SAN產(chǎn)品的時候,我們常常與一個例子,每個人有一瓶水,但是可以把這些水存在一個大水桶中然后通過飲水機給用戶提供水,這樣可以節(jié)約水資源,更合理的分配,做到資源優(yōu)化配置。但是我們忽略了,如果大家都很渴,都想喝很多誰的時候,一個飲水機的出口是不能滿足大家一起喝水的,而且飲水機的容量越大,提供的喝水用戶越多,瓶頸越明顯。延伸一下,今天的軟件定義存儲是把許多瓶水用繩子捆在一起,每增加一瓶就增加一瓶水的容量,也增加一個出水口,容量和性能都很好的提高了,讀者可以想象一下那個畫面,還是有一些小小的不方便。或者有沒有可能做一個大盤子,把水倒在盤子里,每個人都可以在盤子里直接喝水,只要盤子大,幾百人也可以一起喝水,這個大盤子的容量和IO能力遠超其他的容器。
最近(【編者按,指2015年的時候】)有一款具有革命意義的產(chǎn)品上市,它可以提供驚人的高速存儲IO能力,基于PCIe的網(wǎng)絡SSD存儲介質(zhì),它就是DSSD。不知道各位是都注意到它的架構其實是和本章縮描述的SAS交換網(wǎng)絡是非常類似的,在DSSD的材料中有一句話是“movethe system software out of IO path ” 首先要有一個扁平高速網(wǎng)絡,其次硬件要有一些的智能來執(zhí)行必須的指令,指令來自于軟件,但是軟件不轉(zhuǎn)發(fā)數(shù)據(jù)。就像許多人在一個大盤子里喝水。
?
在筆者寫下上述這些文字的時候,EMC的DSSDD5也發(fā)布了,大家關注在它的高性能上,10M的IO,100Gbps帶寬,100us的延時。估計少有人注意到剛才提到的那句話,這是一小段Q&A的對話,出現(xiàn)在發(fā)布會的PPT上:Move System Software Out Of I/O Path。全段如下:
The software layer was really,really different than the storage stacks we knew well.?ANSWER = don’t tryto design a software stack for traditional storage persistence (RAID or objectmirroring) and data services – this isn’t an array, it’s a new thing, designthe software stack in a different way – out of the IO path inentirety.?? While perhaps data services likereplicas/dedupe/compression (which are data-path in nature) may be possible inthe future, you can see the effects (both as strengths andweaknesses) in DSSD at GA – focus of the team was on extreme performance,extreme density, and targeting new use cases.
翻譯一下:“這個軟件和我們知道的存儲堆棧有非常非常大的不一樣?;卮?#xff0c;不要試圖把它理解成為一個傳統(tǒng)存儲或數(shù)據(jù)服務的軟件堆棧,它不是一個陣列,它是一個新事物,用不同的方式設計軟件堆棧-完全在IO路徑之外。雖然有可能某些數(shù)據(jù)服務像副本、去重、壓縮本質(zhì)上還是屬于數(shù)據(jù)IO,也許在未來也是有可能從數(shù)據(jù)IO上去除。但是你可以看到這個新設計的DSSD帶來的影響(優(yōu)勢和劣勢),極高的性能、極高的密度、一些新的目標市場”。
---end---
【編者按】
談及EMC DSSD,編者我忍不住嘮叨幾句。進入2017年3月,意外的聽說Dell EMC Stops Production On DSSD
http://www.storagereview.com/dell_emc_stops_production_on_dssd ,不過按照官方的說法,將來會把DSSD的技術融入到其他產(chǎn)品線里。
在SDS新書《軟件定義存儲:原理、實踐與生態(tài)》,編者我撰寫了第25章,《內(nèi)存虛擬化與SDS及DELL Fluid Cache》,當時比較看好具有深厚SDS基因的Fluid Cache(脫胎于DELL收購的RNA),可惜不久也停產(chǎn)了,據(jù)說就是因為EMC有DSSD。沒想到,時至今日,竟然聽到花了10億美元的DSSD將不再以原有面貌繼續(xù)銷售。
看來這種曲高和寡的超前技術,生存并壯大還是比較難的。不知道SAS交換技術在存儲和互聯(lián)網(wǎng)領域的發(fā)展會如何? 歡迎大家投票或留言。
scrolling="no" frameborder="0" class="vote_iframe js_editor_vote_card" data-display-style="height: 225px;" data-display-src="/cgi-bin/readtemplate?t=vote/vote-new_tmpl&__biz=MzA5MzMwMTc2Ng==&supervoteid=459159988&token=24554944&lang=zh_CN" data-src="/mp/newappmsgvote?action=show&__biz=MzA5MzMwMTc2Ng==&supervoteid=459159988#wechat_redirect" data-supervoteid="459159988" allowfullscreen>
SDS新書是指《軟件定義存儲:原理、實踐與生態(tài)》
贈書活動
為感謝廣大讀者的支持以及慶祝《軟件定義存儲:原理、實踐與生態(tài)》一書第三次印刷,再次舉行簽名贈書活動。參與方法:
1.?在本文末留言,發(fā)表對本文內(nèi)容或?qū)浖x存儲看法;
2.?邀請朋友對您的留言點贊。
簽名包括如下8位作者:
1)第9章 飛康軟件 FreeStor作者 張瑾
2)第15章 Lenovo ThinkCloud AIO作者 要志文
3)第16章 華云網(wǎng)際FusionStor作者 王勁凱
4)序言3《軟件定義-存儲的規(guī)模效應》的作者張廣彬(企事錄創(chuàng)始人)
? ? ? 序言3的詳情可打開:張廣彬《軟件定義——存儲的規(guī)模效應》 ?& ?活動介紹(2016軟件定義存儲技術沙龍,7月3日下午1點)
5)贊譽作者 陳緒博士 (Intel中國云計算戰(zhàn)略總監(jiān),中國開源軟件推進聯(lián)盟常務副秘書長)
6)本書主編Peter Ye(葉毓睿);
7)第26章 容器與SDS 作者Henry Zhang(張海寧,他同時是《區(qū)塊鏈技術指南》的作者);
8)第20章 Zadara云陣 作者鄒均(他同時是《區(qū)塊鏈技術指南》的第一作者);
總結
以上是生活随笔為你收集整理的两本赠书和投票 | 服务器里面一定要有硬盘吗? - SAS与SDS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios底部安全距离
- 下一篇: 2017云栖大会门票转让_云栖大会的门票