云計算技術浪潮奔涌向前,以云原生為代表的新秩序將帶來企業IT系統架構的重構。如何建設云平臺存儲實現業務穩定與創新并舉?最近筆者通讀了《邁向YB數據時代》夏季刊關于“云平臺存儲”相關的內容,有感而發。
下文是筆者對“近年云計算存儲技術發展趨勢”的解讀與洞察,也希望能帶給讀者朋友一些靈感啟發,共同交流!
當提到云計算存儲時大家首先想到的是什么?分布式,軟硬解耦,通用硬件,甚至是去IOE后無存儲?云計算“創世紀”時,這些特征是存在的,但隨著近年需求和技術的發展云存儲已經變得“面目全非”。本文試圖理清一些重要變化,為大家的工作提供一些參考。本人“身在此山中”,未必識得廬山真面目,僅以自己了解的一些信息,供朋友們打開新思路。
近年“云存儲”顛覆了哪些認知 “企業存儲”反攻上云
云計算、大數據、互聯網應用架構火熱之后,普遍認為隨著以互聯網為代表的新型IT架構的出現,高性能、高可靠但高成本的企業存儲的需求會逐漸消失,同時“集中式存儲”或稱“企業存儲”成為了落后架構,承載未來IT系統的云計算中的云存儲應是分布式存儲的天下。這使得企業存儲已死的聲音不絕于耳。然而近幾年以AWS為代表的公有云廠商卻以行動推翻了這些觀點。
高可用、低時延、高性能密度仍是高端云存儲的追趕目標
2020年底AWS推出塊存儲IO2 Express預覽版,號稱首個云上SAN存儲,無論是口號還是技術指標都從SAN存儲已死變成SAN存儲真香我要成為它。伴隨產品對標對象從服務器磁盤到企業存儲的轉變,IO2 Express的持久性、最大IOPS/GiB、時延三個關鍵指標都有數量級的提升,業務范圍也從本地盤替代轉向商業數據庫、內存數據庫等企業級存儲應用:
卷類型 |
EBS發布時 |
通用型SSD GP2 |
IO1發布時 |
IO1 |
IO2 |
IO2 Express |
持久性 |
|
99.8%-99.9% |
|
99.8%-99.9% |
99.999% |
99.999% |
最大IOPS/GiB |
|
|
|
50 |
500 |
1,000 |
時延 |
|
個位數毫秒 |
|
個位數毫秒 |
個位數毫秒 |
亞毫秒 |
單卷最大IOPS |
|
16,000 |
|
64,000 |
64,000 |
256,000 |
單卷最大吞吐量MB/S(16K塊) |
|
250 |
|
1,000 |
1,000 |
4,000 |
每實例最大IOPS |
|
26,000 |
|
26,000 |
16,000 |
26,000 |
單實例最大吞吐量 |
|
7,500 |
|
7,500 |
4,750 |
7,500 |
“云存儲”不但參數的“面子”越來越像企業存儲,架構的“里子”也是如此。AWS自2012年推出 IO1后8年沒有新產品,但收購存儲廠商E8 Storage獲得其硬件能力并將其CEO任命為塊存儲研發總監后1年多時間就推出了IO2和IO2 Express2。以下為被AWS收購的E8 Storage存儲架構,關于云存儲架構與企業存儲的趨同趨勢分析詳見"濃眉大眼的叛變"一節:
企業級NAS存儲被直接搬上云
如果云上SAN存儲還是AWS“自研”(實為收購),那么企業級文件存儲則干脆把老牌NAS存儲廠?.NETApp的產品搬上了云。2021年9月AWS存儲日大會宣布與NETAPP合作推出OTNAP文件服務,成為與AWS自有FSx并列的4種托管文件服務之一,這一合作由AWS直接面向客戶提供服務,比此前NETAPP與AWS、微軟和谷歌的存儲軟硬件合作更為深入。有人認為這是存儲廠商向云低頭,但反過來AWS在已經有了多個文件服務的情況下與NETAPP合作又何嘗不是為了市場而向存儲廠商低頭呢?
AWS與NetApp合作的文件存儲服務
大數據存算分離成主流
大數據相關技術從被google三駕馬車和其開源實現HADOOP帶火開始就是去存儲化的架構。但近十年來,AWS從EMR到數據湖(并不是業務視角的數據湖)不斷推動大數據存算分離理念。如今數據共享、靈活按量使用、高可靠性的存算分離數據湖理念已被所有主流云廠商接受,存儲已是云上數據湖的“中心”。
AWS數據湖圍繞S3存儲構建
阿里云數據湖,同樣圍繞存儲構建
甚至不僅叫賣基礎設施的云廠商,將服務構建于云上的Snowflake也采用公有云對象存儲以存算分離架構構建數據倉庫服務:
Snowflake架構,使用各種公有云對象存儲持久化數據
云原生數據庫回歸IOE架構
與前面兩個同時發生的是分布式數據庫中存儲的回歸,領頭的叒是AWS,以下是AWS的Aurora數據庫架構:
藍色為計算節點,綠色為共享存儲,S3用于備份數據
最初我把這個架構拿給一個資深DBA同事時,他說這個架構和ORACLE的一體機架構很像。當時我有點詫異AWS怎么走回頭路了?但看到更多的業界類似觀點后證明同事的判斷是正確的。在AWS帶動下,阿里,華為,騰訊都出現同架構的稱為云原生數據庫的產品,共同點都是利用存算分離架構的可靠性與靈活性優勢和將大量利用存儲成熟能力解決數據庫難題來提升數據庫整體能力。如果說數據庫是IT業最難解的題,那么云原生數據庫與IOE架構的解題思路就是一樣的。由于AWS用Aurora實現亞馬遜內部業務去O(交易類業務),可以說是用魔法(IOE架構)打敗魔法(IOE產品)。
云存儲的“架構變異” 去除架構色彩回歸云服務本質
IT業只有事實標準,大量的概念是約定俗成的,會隨時間發生變化。比如現的“集中式存儲”概念本不存在,分布式存儲概念火起來后,原先的磁盤陣列才“變”成了集中式存儲。因為磁盤陣列代表產品Symmetrix存儲系統之父莫西·雅奈同時是最早的分布式存儲XIV的創始人,集中式存儲和分布式不但同父異母,架構上也都繼承了Symmetrix中分布式的特征。“集中式存儲”的典型特征不是集中式,而是雙/多控架構:
Ceph存儲架構
華為高端企業存儲內部架構
云存儲的概念也是多樣的,世界第一個云服務就是存儲服務——AWS的S3。所以云存儲本來應是云上的存儲。由于是存儲服務,云存儲又可以理解為存儲云服務。但由于早期的云廠商一般采用自研存儲軟件+通用服務器來構建存儲,且多為分布式架構,因此也會把軟硬解耦/分布式與云存儲等同起來。由于某一時期云的熱度要大于分布式,一些廠商會把具有分布式架構的產品以云存儲的概念來宣傳,就顯得更為混亂。
在業務范圍發生巨大變化的同時,云計算存儲系統的架構已經不能再簡單和分布式、通用服務器、軟硬解耦等關聯了。除了引入普遍認為應該是“集中式存儲的NetApp這種公然投敵行為外,自研存儲也向架構融合,軟硬協同方向發展了。因此再審視云存儲概念時,架構的色彩已逐漸褪去,回歸到它云服務的本質。
“濃眉大眼的叛變” 融合“集中式存儲”架構
再次對比一下典型的分布式存儲Ceph、被AWS收購的E8 Storage和被認為是”集中式存儲“的華為Dorado架構:
Ceph組網架構
被AWS收購的E8全閃存組網及節點內雙控架構
華為高端企業存儲內部架構
很明顯分布式架構是分布式存儲、云存儲、集中式高端存儲的共同點,區別在于“頭”(控制器架構)。
E8 Storage是介于典型分布式存儲和磁盤陣列之間的形態:它采用了和高端存儲類似的雙控架構,因而更容易實現低時延和高性能密度。但它的雙控制器只和24塊硬盤固定組成一臺物理機,相對高端企業存儲實現簡單,但靈活性不足。
除此之外,在緩存技術、高速網絡等方面云存儲也越來越多使用與磁盤陣列類似的技術,只是不那么顯眼而已,這里就不一一分析了。
軟硬協同
自研硬件并和自研存儲軟件緊耦合則更早出現。定制服務器、自研芯片早已廣泛用于各類存儲服務器。雖然沒有自己生產,但這更多是從產業分工的經濟性上的考慮,實際上大型云廠商的存儲軟硬一體化已經是很普遍的情況,換成普通服務器可能軟件都無法安裝。
軟硬協同最早可能是出于成本考慮,現在則主要是為提升性能和可靠性,是實現支撐云存儲向企業存儲能力發展,支撐大數據,數據庫等業務需求的需要。公有云是封閉全棧模式,存儲軟件多為自研或深度魔改開源版本,軟硬協同反倒是效率最高的模式。
探尋顛覆性變化的根因
如果把云存儲的現狀與之前尤其是去IOE火熱時云廠商的宣傳對比一下可能會覺得有點魔幻。正面來看看這些轉變的根本原因。
不改造上云的需求驅動
由于AWS、阿里等云廠商都是以支撐自身互聯網業務來構建最初的云計算能力,所以云并不完美適配所有業務,需要改造才能上云。由于互聯網架構有其先進性,部分業務改造綜合收益還是不錯的,改造難度也不大。
但即使傳統業務要使用互聯網的應用架構也面臨大量的改造,比如亞馬遜到2019年才完成去O,還用的是IOE架構的Aurora數據庫。對互聯網企業來說,云架構就是為自己的業務量身設計的,改造投入已被消化,云的研發成本還能變現賺錢,但普通用戶就只能自己承擔改造成本和風險。最終結果就是:好改造或不需要改造的應用,很早就上云了,而難以改造的業務則一直動不了。
另一方面很多業務改造是甩鍋游戲。以容器化改造為例,首先要做的是應用“無狀態”改造,簡單理解最主要是數據與應用解耦。但解耦后的數據還是要放到文件存儲,消息或數據庫之類數據服務中,當這部分數據服務要上云時會發現要么沒有好的存儲能力很難實現,如數據庫、NAS;要么是要做存算分離否則無法發揮云計算/容器的效率優勢,比如大數據。最終還得存儲接鍋。
當容易上云的業務都吃差不多后,那些高價值(如核心業務)或數據量大(如大數據)業務就被盯上了。既然客戶沒法改造業務,那我就做業務能用的存儲唄,至于怎么做到無所謂,畢竟“賺錢嘛,生意,不寒磣”。
存算分離是最優解
除了直接給客戶提供存儲,云廠商通過多年的去IOE實踐也發現,有些問題用IOE架構來解決才是最優的。以當前火熱的云原生為例,其五大代表技術中一項為“不可變基礎設施”,要求部署服務之后決不會被修改,上文容器無狀態改造就是要達到類似的效果。這一架構避免因故障切換或擴縮容的服務啟停、增減時需要搬遷數據而無法快速完成的問題。但數據層的大數據、數據庫不可能再通過“甩鍋”的方式解決問題,只能讓存儲“回來”。
所以雖然數據庫、大數據等云服務并不直接向用戶提供存儲,但云廠商都選擇主推存算分離架構——為自己省錢省事就是多賺錢。
長大后我就成了你
那么為什么云廠商一開始不這樣做,而非要現在推翻一部分原來的理念呢?
一來互聯網作為新興業務有必要做新嘗試,并不是所有東西都能預先想到,掉坑也很正常;而最重要的是,云廠商也要追求自主可控,而這需要很長的過程進行能力積累。
云廠商的自主可控更多是從商業上的考慮,一方面要擺脫自身業務對IOE壟斷廠商的依賴獲得議價權,二來需要通過自己的業務磨練產品?;ヂ摼W出身的AWS、阿里最早的存儲產品都是對象存儲,與互聯網結合緊密,技術門檻比較低,非常適合一邊支撐業務一邊變現一邊提升技術能力。之后他們都經歷了十多年的積累,甚至最終通過收購等手段才有了前文分析的產品能力。手中有自主可控的產品,即使能力差一些,也從當年求著廠商變成了廠商求著自己。這時再與傳統存儲廠商合作也與當初大不相同了。
雖然路徑是必然的,但在自己產品能力還比較弱時,當然希望用戶改造業務來適應產品能力了;現在產品雖然還在追趕,至少有模有樣了,那么各位覺得如果是你會怎么宣傳呢?
用戶視角看云存儲的規劃與構建
我既做過幾年乙方,更做過十幾年的半個甲方,在從廠商視角做完趨勢分析后,最后以用戶視角分析一下在當前趨勢下如何規劃與建設云(主要是私有云)中的存儲系統的想法。
回歸到以需求指導選型
經過多年的實踐,很多企業容易上云的業務已經遷到云上了。當前云存儲最迫切要解決的不是已經成熟的可上云業務的存儲需求,而是核心業務以及一些新業務新技術如大數據、容器的上云存儲需求。
核心業務改造難度大、風險高,少改造平移上云是最好選擇。云廠商的種種轉變就是受此驅動。核心業務存儲的關鍵能力的要求是疊加核心業務對存儲的原有可靠性、性能需求和云服務化的使用、管理需求,前者是要重點解決的問題。
相對于原來就使用存儲的核心業務,部分新業務原來不使用存儲,那么需要直接從業務需求的角度,甚至是更上層業務角度考慮使用存儲后是否能保證業務能力不下降以及能帶來哪些新價值。與核心業務類似,不改或少改,盡量在平臺層而非應用層改造是最佳選擇。
過去選型中經常會以某一架構或部署形態來作為產品分檔和選型依據。但從公有云的發展來看,我們傳統的云存儲應是“分布式”、“通用”、“軟硬解耦”等觀念已經被云廠商自己推翻了,仍以這些為依據劃圈圈很可能無法選擇到滿足業務需求的存儲,需要打破原有的觀念條框。當然這在實操中可能面臨很多困難,在首先堅持需求導向的前提下,可以考慮一些變通手段。比如把分布式由分類變為特性,把單一分類維度變為多維度,通過量化需求指標引導廠商等。
利用成熟存儲能力
通過AWS收購和直接引入企業存儲廠商能力的案例可以看到,面對云存儲與業務需求間的較大差距,拿來主義是一條捷徑。在企業云存儲規劃中,將可滿足業務需求的成熟產存儲直接上云同樣是一條捷徑:一來簡化了選型,畢竟核心業務的需求有時只可意會,不可言傳(量化),二來也解決了傳統云存儲能力不足的問題。
實現平臺集成與服務化
各種云常被說成XaaS,這個不變的S就是服務,是云的基本特征。當我們淡化架構之爭,并試圖引入成熟存儲能力時,可能會面臨像NetApp的問題,即傳統存儲資源管理、配置分發和運維需要適應云的服務化模式。
首先是解決集成和對接問題。傳統的塊和文件基本能力絕大多數存儲都提供了OpenStack,K8S等標準接口,比較有挑戰的是一些新技術和存儲特性功能的對接:如大數據存儲、FC網絡替代技術、存儲快照特性等面臨重新開發或擴展原有接口,以及打通云全流程的問題。對于體量較小的用戶,可以選擇有多廠家配套集成的方案,對于金融、運營商等IT能力比較強的用戶,則可以考慮牽引各廠商集成適配。
另外要注意的是傳統存儲不是服務化的,借鑒云服務化SLA量化和設計服務對精準規劃有很大幫助。例如數據庫典型特點是峰值IOPS高,數據有熱點,對時延極敏感,因此常常一個數據庫總共只使用了幾萬IOPS,但大部分集中在熱點數據,峰值IOPS則是平時的幾倍,而選型時如果對存儲IOPS的評估不限制時延就會有虛高的IOPS能力。AWS的IO系列存儲可以對IOPS能力進行保底來應對峰值,而其將最大IOPS/GiB作為承諾SLA則使用戶可以按熱點數據的IO需求選擇合適的存儲。除此之外,像快照、容災等存儲特性雖在云上廣泛使用,但也都是以備份、容災等服務形式提供,需要端到端而非段到段的模式。在云存儲規劃構建中,需要圍繞服務化考慮幾點:
-
選型中要考慮存儲對多租戶、SLA精細化管理的基本能力;
-
要構建云與存儲間的服務化的接口能力,如多租戶能力,云對快照、容災的調用能力;
-
要由云構建服務提供給用戶使用,如快照以備份服務、遷移服務形式提供,QoS以租戶SLA能力供用戶選擇;
-
要借機量化業務對性能、可靠性和可靠性的需求,如對IOPS需求量化到單位容量,時延要分檔等
關注新場景
從公有云存儲發展過程看,無論是進軍大數據等新業務還是嘗試核心業務替代,都是在擴大云的邊界。從業務角度,上云可能帶來意想不到的價值:比如新的業務形勢下,一部分穩態業務也需要有一定的業務彈性,那么結合新的云存儲能力和容器化等多種技術組合有可能實現“穩態業務敏捷上云”,利用云來解決資源彈性伸縮和管理問題。而大數據往往不僅業務和數據是孤島,在云上的資源也是孤島,實現存算分離的彈性上云后,不僅數據共享更方便,資源利用也更高效,甚至能實現與交易業務的“混部”為業務提供更多資源保障。在解決現有業務問題之外,未來可關注以下新場景對云存儲的需求:
-
容器化中存儲需求:這既包括以有狀態容器實現“穩態業務敏捷上云”需要的符合穩態業務高性能、高可靠要求的存儲技術,也包括容器數據服務如消息、搜索引擎、數據庫、大數據等有狀態應用對存儲的需求;
-
大數據/數據湖:雖然大數據/數據湖上云往往使用容器化技術,但容器不是唯一方式,同時數據湖對成本、性能、可靠性有獨特要求,因此單獨列出;
-
核心交易數據庫:IOE架構的成功,O在前臺,IE在幕后,缺一不可。云原生數據庫架構的出現說明云廠商已意識到存算解耦的架構以及向存儲做能力下沉來增強數據庫能力對最終實現數據庫替代的重要性。云原生數據庫架構對存儲的要求是最高的,但其業務價值也是巨大的,值得關注與嘗試。