當前單塊NVMe SSD性能可以達到100萬IOPS,SSD硬盤與HDD機械硬盤有了天壤之別。傳統存儲的軟硬件架構,都已經不再適合承載高速閃存介質,它們從根本上制約了新型存儲介質的生產力。全閃存陣列已經逐步向全NVMe硬件轉移,然而其擴展性與靈活性,在雲計算時代始終是最大的瓶頸。分佈式全閃存儲系統在全閃存介質配置的基礎上,採用了標準的硬件平臺、高效的新興存儲協議、極致的軟件優化,可提供更簡單經濟、彈性高效的數據存儲解決方案。
FASS是大道雲行面向高IO密集型應用場景,完全自主研發的分佈式全閃存存儲系統。基於高效的分佈式存儲軟件設計和高性能的全閃存硬件平臺,FASS可將多個節點的SSD資源通過高速以太網或Infiniband網絡組成一個高性能、高可用、易擴展塊存儲資源池,並通過iSCSI、iSER、NVMeoF存儲接口,可廣泛應用於如下各類高IO性能要求業務場景。
1、強大的性能。FASS採用主流的服務器硬件和全NVMe硬盤配置,通過軟件層面先進的體系結構設計、微控制器並行流水線設計、多級元數據索引管理,實現了三節點千萬級IOPS、100us級延遲的強大性能;
2、可靠的架構。FASS採用全對稱分佈式架構,可實現多節點的IO均衡與疊加,結合多副本、糾刪碼、快照等冗餘與數據備份機制,消除了存儲系統的單點故障,也保證了可靠的存儲服務輸出。
3、大規模擴展。FASS的分佈式集羣支持3-512 scale out擴展,單卷可達32PB容量。通過數據分佈與元數據管理的自動負載均衡,實現存儲與計算的按需擴展,滿足業務動態發展的苛刻要求。
圖-FASS產品概覽
設計哲學
1)性能驅動
定位於下一代全閃存存儲產品,FASS的核心理念即性能驅動一切。對於絕大多數全閃存儲產品的用戶而言,數據可靠性是基石,而強大的性能纔是他們改善和加速業務的關鍵,有限的硬件發揮超高的性能,即FASS分佈式全閃存儲的核心價值。
由於標準的操作系統並非爲高性能IO模式設計,其任務調度、內存管理、系統調用在高併發IO場景下非常低效,因此成爲全閃存儲性能的最大瓶頸,無法發揮硬件的真正能力。FASS團隊很早就意識到了這個問題,並基於os_bypass原理做了大量的優化與改進,開發了獨有的XPE加速引擎以取代OS的低效調度,結合高效的微控制器模型,全NVMe軟硬件設計,使得在有限硬件條件下,FASS也能發揮出超高的IOPS和延時性能。
2)軟件定義
在衆多AFA廠商都在追求高速硬件,甚至採用定製化芯片來嘗試改善全閃存儲性能的同時。TaoCloud始終貫徹軟件定義存儲的理論,通過極致優化的存儲軟件,搭載配置合理的標準X86硬件,可以做到三節點千萬級IOPS的驚人性能。當前主流的服務器硬件平臺性能雖然不高,但存儲軟件還遠未發揮出硬件性能的極限;同時軟硬件解耦可以給各類數據中心帶來更好的靈活性與經濟性,有利於各類高性能雲基礎設施的建設。
3)分佈式體系
FASS的數據與元數據管理都採用分佈式模型設計,通過多個節點組建集羣,每個節點可以同時處理數據存儲,也可以承載相應的元數據服務,節點間通過高速網絡實現相互協作與通信,可以實現極高的性能疊加與擴展能力。FASS分佈式體系機制帶來了極高的可靠性,從磁盤到物理節點到網絡,都可以實現有效冗餘,在各類故障情況下,保障數據以及元數據的完整性與高可用。
原理架構
FASS基於標準服務器硬件設計了高性能的分佈式塊存儲體系。各個節點通過高速網絡連接形成存儲集羣,FASS軟件服務將各個節點上的高速SSD介質、CPU、內存等資源抽象整合,對外輸出成單一塊存儲資源池,提供高速塊存儲服務。
邏輯架構
FASS可以部署在主流的Linux環境,如CentOS、Redhat、Ubuntu、SUSE等(推薦CentOS7_64bit),每個物理節點都需要安裝FASS的suzaku軟件服務以管理本節點資源並提供存儲訪問,suzaku包含Suzakud主進程、元數據服務、IO服務、管理工具等。
通過對各節點存儲資源的管理與整合抽象,以邏輯存儲卷的方式爲對上層提供iSCSI/iSER、NVMeoF塊存儲服務和訪問接口和統一管理控制。FASS軟件運行於Linux用戶空間,獨立的用戶態進程可以與其他系統部件隔離,避免故障的相互影響,可以實現更高的系統可靠性,也有利於未來實現更輕鬆的文件協議擴展。
FASS平臺管理層支持提供命令行訪問控制接口和REST API,並集成到 Web GUI對整個存儲集羣進行節點管理、用戶管理 、訪問管理、存儲空間管理、緩存管理、快照管理、監控管理等。
圖-FASS邏輯架構
FASS通過ETCD模塊實現高可用集羣管理,主要用於共享配置和服務發現,如保存集羣配置信息、部分元數據信息(參考元數據服務相關章節)。ETCD會選舉出Master節點,master節點負責分配磁盤空間,集羣總體管理以及節點信息協調。從而實現在故障情況下的重新選舉、自動切換等高可用特性。Master節點負載很小,不會形成性能瓶頸。
硬件上,FASS支持部署於X86服務器或國產CPU硬件平臺,如飛騰、申威、海光等服務器平臺,推薦採用全NVMe SSD硬盤配置,以發揮FASS的最佳性能。集羣最低三節點起配,硬件拓撲上包含三層網絡:存儲網絡、業務網絡和管理網絡。
集羣所有節點通過高速網速(推薦100GbE/200GbE RoCE或Infiniband)互聯,以實現節點間的協作與數據分佈與轉移。業務網絡主要爲應用提供存儲訪問,業務主機通過該網絡可訪問到FASS提供的存儲資源。爲保證前端業務的性能,該網絡的帶寬建議與存儲網絡帶寬一致。管理網絡主要負責管理監控、配置維護整個FASS系統,通信量相對較小,採用普通千兆網絡即可滿足要求。
圖-FASS硬件組網參考(注:實際部署建議配置冗餘網絡)
數據佈局
FASS作爲一套分佈式一閃存儲系統,數據分散存放在多個物理節點上。集羣是FASS實現統一管理的基本單位,FASS中多個服務器節點可以創建成一個集羣,來實現分佈在不同物理服務器上存儲資源的打通與聚合,從而實現容量、性能的疊加、節點級的冗餘保護。FASS單個集羣支持3到512個節點規模的集羣,同時統一管理平臺可支持多個集羣的監控與管理,滿足EB級數據的存儲管理需求。每個集羣都會提供一個或多個虛擬IP地址(VIP)以支持存儲業務訪問,VIP會根據負載均衡機制,在不同節點上飄移,以保證部分節點網絡故障時,業務仍可正常訪問。
在集羣基礎上可以創建FASS存儲池,可以選擇集羣裏的任意多個節點,或不同節點上的不同數據硬盤創建成單一數據存儲池,跨節點對物理上分佈的存儲資源進行抽象整合,實現更高效的資源利用。FASS支持按存儲介質類型創建存儲池,如按NVMe SSD或按SATA SSD創建不同性能的存儲池,以滿足不同用戶的性能需求。
存儲卷隸屬於某個存儲池,是應用主機直接掛載使用的最小單位。創建卷時從將存儲池劃分空間形成一個邏輯卷,進而可以通過iSCSI或NVMeoF協議以塊設備的方式,通過IP或Infiniband網絡映射給應用主機掛載。FASS支持精簡配置卷,即可以創建大於存儲池的物理空間的邏輯卷,以滿足不易預測規劃的業務應用場景。
爲了提高單卷的擴展性,FASS每個卷分成多個子卷,每個子卷對應有子卷控制器(類似RAFT協議裏的leader)。FASS在創建卷時會通過算法從集羣中選擇一個節點作爲子卷控制器(RGctl),由該節點在內存中承載邏輯卷的元數據信息並管理其數據的物理分佈。
FASS將物理磁盤分割成4MB的粒度,並通過Diskmap進行記錄與分配。數據在寫入FASS存儲系統時,會被切分成4MB大小的分片(Slice),然後根據既定的數據分佈策略,將Slice存儲在多個節點的存儲介質上,從而可以提供高性能的併發性能,而且爲數據可靠性、快速恢復提供了良好的底層支持。數據的具體位置分佈,主要由FASS元數據服務記錄管理。
圖-FASS存儲卷與切片
元數據管理
大部分分佈式存儲系統的服務端都依賴於操作系統的本地文件系統,實現集羣邏輯卷或統一命名空間管理主要在本地文件系統的基礎之上做了一層邏輯整合與封裝,如每個存儲節點上都擁有完全一致的目錄結構,但真實文件或數據塊分別寫入不同節點,通過分佈式文件系統的邏輯合併最終實現單一命名空間。這類分佈式存儲實現相對簡單,但因爲在本地文件系統基礎之上,又做了一層封裝與索引管理,毫無疑問會加大了系統複雜度、降低系統的整體性能。如再進行塊協議導出,則又多出一層塊存儲的映射索引,使整個系統運行效率低下,性能無法得到真正的發揮。
爲發揮出硬件的最大性能,FASS摒棄了服務端的本地文件系統,構建了自有的高效的塊級索引管理系統,通過對裸盤的直接管理,Slice分片與邏輯映射重組,實現遠高於其他分佈式存儲的塊級性能。
FASS數據的讀寫通過多層元數據索引進行高效定位與管理,主元數據服務主要管理數據到各個節點的映射關係,可以通過元數據訪問與查詢,迅速定位到目標數據節點;同時每個節點上都有自己的數據塊索引表,通過K/V數據庫記錄着每節點的Slice信息。每個數據硬盤都由事端控制器(BActl)管理硬盤上數據塊的具體分佈,每塊硬盤都對應一份Diskmap信息,記錄着該硬盤上的Slice分配與可用空間情況,新建卷時,FASS的RGctl根據Diskmap與數據分佈策略,爲新卷申請分配相應的存儲空間。
圖-FASS元數據層次設計
FASS的Slice分爲Meta Slice和RAW Slice,Meta Slice用於元數據的持久化保存,由MDctl服務直接管理,默認三副本保護 (不可調)。RAW Slice存放物理數據,副本位置由負載均衡策略決定。如無特殊說明,後文“Slice”都是指RAW Slice。
FASS在每寫入一個新Slice時都會訪問查詢RGctl以獲得目標節點位置進行存儲,讀取數據時RGctl會根據各副本節點的狀態,優先選擇延時最低的節點進行數據訪問。
FASS元數據主要包含集羣配置、目錄結構、卷屬性(含擴展屬性)、卷引導信息、副本位置信息等內容。FASS的子卷控制器(RGctl)均勻分佈在不同的節點上,從而實現卷性能和容量的scale out。每個Slice對應的元數據會緩存在其所屬的RGctl,並通過BActl以三副本冗餘持久化寫入到硬盤。不同於基於分佈式哈希表的存儲系統的隨機性與不可控,在內置元數據的協助下,FASS可以受控地進行數據恢復、平衡等後臺任務,從而使系統表現更穩定,以最小化對前端業務的衝擊和影響。
圖-FASS的多層元數據模型
負載均衡
爲了保證數據在各個節點上的均衡分佈,同時均勻分攤整個集羣的壓力到每一個節點,分佈式存儲需要實現合理的負載均衡策略,才能保證可觀的性能疊加輸出。各個系統的均衡性體現在許多層面,如數據均衡、負載均衡。數據均衡有兩個過程保證:首次分配過程和再平衡過程。
FASS卷可以通過任意Target控制器導出,捲進一步劃分爲子卷,每個子卷負責管理該卷的一部分數據,子卷通過hash過程均勻分佈在不同存儲節點的多個子卷控制器上。並通過智能分配算法,使數據和IO負載都能平衡地分佈在存儲池內的所有節點和磁盤,使每個SSD的磨損趨於一致。因新增節點或故障造成了數據不均衡時,FASS獨立的後臺任務調度器按預定策略執行數據再平衡任務,保證每個節點/磁盤的數據迅速恢復均勻。
RGctl服務會週期性檢查系統中部分Slice的健康狀態和分佈情況,每檢查一個Slice時,會檢查該Slice相關的存儲服務器,如果發現某個節點的容量使用比率大於用戶設定的容量比率情況下,會觸發Slice重新分佈,也即觸發容量均衡過程。Slice重新分佈時,需要選擇遷移數據塊的源服務器和目標服務器。
當有新服務器加入到服務集羣中時,首先向MDctl服務器發送加入消息,MDctl服務器會向該服務器返回當前工作中的集羣結構,同時更新diskmap並將維持的服務器狀態版本加1,並通知各服務器更新服務器版本,以獲得加入的服務器列表和當前有效的服務器存活狀態,隨後進行少量的元數據或數據的遷移操作,最終將新服務器無縫地加入到服務集羣中提供正常的服務。
新的存儲服務加入系統之後,可以啓動數據負載均衡機制,監控服務通過收集各存儲服務上的磁盤空間佔用比率並通知到各存儲服務,RGctl服務從元數據中查詢數據佔用比率較少的節點,根據負載均衡策略進行相應數據遷移,使得系統在線增加容量和擴展性能。
刪除節點時,首先需要待刪除節點上存儲服務停止,停止後對該節點在其他節點上開始重構。數據重構完成後,如果啓用節點存儲服務,集羣中會出現多餘副本,系統將啓用副本掃描與垃圾回收機制,保留最新可用副本。關閉節點服務且完成數據重構,該節點才變成可刪除狀態,刪除後系統將從刪除該節點所有相關的配置信息,將節點從集羣中完全刪除。
數據一致性
對於分佈式存儲而言,由於數據讀寫分攤給多個節點處理,很可能由於各個節點的信息不一致而造成讀寫出錯,因此數據的一致性是分佈式存儲最重注的問題之一。爲保證數據可靠性,同時提高數據的恢復效率,FASS默認採用多副本機制保存數據。數據被切分成Slice後,會生成多份副本寫入多個節點,避免數據單點故障,提升訪問性能。FASS主要由FRctl(前端控制器)服務處理IO的讀寫,FRctl從RGctl控制器獲取卷的分佈信息,進而將數據寫入到正確的位置。
FASS多個副本之間採用自主開發的SuRa一致性算法來保障數據一致性(類RAFT),內部根據集羣拓撲的變更來計算數據的可用性.通過少數服從多數的選主原則,始終確認唯一的leader和完整可靠的數據版本。FASS中每個Slice都以多副本方式(即將支持糾刪碼)存放在存儲系統中,對於每個寫入操作,FASS確認所有數據副本都完成寫入,纔會返回給應用信號,如果寫入操作無法到達指定的數據副本,則該數據副本會被置爲無效副本。有別於同類產品的只能讀取主副本的機制,FASS讀取數據時,可以從任一有效副本上進行讀取,即每個Slice數據副本都提供對外服務,以實現更好的併發吞吐能力。
在IO操作前,系統會檢查各副本的邏輯時鐘和狀態,以判定副本是否有效,發現副本故障後,集羣自動選擇可用節點,在其上重建副本。對N個副本的系統(N=2/3/4),可以容忍N-1個副本發生故障。
多個副本可以按故障域策略分佈在不同的區域(如節點、機械等),從而大幅提高系統可靠性,降低多副本同時損失概率。對於讀操作,FASS可根據網絡負載智能地選擇合適的副本,保證最優性能輸出。
圖-FASS多副本分佈
副本寫入流程:
圖-副本寫操作流程圖
1、應用主機向TGctl發起寫入操作,TGctl將請求轉發至FRctl
2、FRctl訪問RGctl,獲取所有副本的目標位置,然後同時向這些節點發起寫操作
3、所有副本節點寫入磁盤完成後,返回確認消息
4、FRctl收到所有副本節點確認消息後,嚮應用主機返回信息,完成寫入,並更新相關Slice位置信息
副本讀取流程:
圖-副本讀操作流程
1、應用主機向TGctl發起寫入操作,TGctl將請求轉發至FRctl
2、FRctl訪問RGctl,獲取Slice所有副本的目標位置,並根據位置信息,判斷當前可用的路徑最優的副本節點,發起讀取請求
3、FRctl節點從被最優節點讀取數據,並嚮應用主機返回信息
高可用
FASS多副本機制可使數據冗餘分佈在集羣多個節點,從而確保硬盤故障或節點故障,不造成業務中斷或數據丟失。FASS可通過虛擬IP智能切換技術在單節點出現故障時,多個iSCSI/iSER連接到來時,FASS自動將應用的請求通過重定向方式調度到後端實際提供服務IP的節點,以保證業務的連續性。FASS同時支持iSCSI的多路徑模式(MPIO),實現鏈路的冗餘和負載均衡。
應用主機(guest)通過集羣虛擬IP(VIP)訪問邏輯卷,FASS收到訪問請求時會請求重定向至RGctl節點,因此,在guest無需知道RGctl IP的情況下,也能正常訪問集羣裏中的邏輯卷。
guest正常情況登陸RGctl併發起IO讀寫,一旦該RGctl出現故障,備用RGctl節點就會生效,且獲得相同的存儲服務IP,從而保證discovery portal始終可用。這樣邏輯卷的iSCSI target始終可用,有新的登陸請求時,集羣會將訪問重定向到健康的RGctl。
圖-RGctl故障重定向登陸
當前連接的RGctl失效時,集羣在啓用新的RGctl後,會讓guest重新登陸,從而定位到新的健康RGctl,以保證數據訪問在短暫中斷後可以繼續進行。
FASS集羣中Master的有效性是通過ETCD來監控的,一旦節點角色出現異常,系統將會重新選擇產生替代角色,以確保存儲系統高可用。通過該機制,guest多路徑功能可以無需開啓,也能保證鏈路和冗餘和高可用.
塊存儲服務
在底層高效的數據佈局、元數據管理、數據一致性的基礎上,FASS支持標準的iSCSI、iSER、NVMeoF存儲訪問,可基於以太網環境,爲多個應用場景提供高性能塊存儲服務。
iSCSI/iSER
FASS分佈式全閃存儲系統不僅提供標準iSCSI塊存儲訪問,同時也支持基於RDMA的高性能iSER訪問,可以將iSCSI協議通過RDMA的方式跑到例如Infiniband或高速以太網絡上,從而實現遠超普通以太網絡的存儲訪問性能。目前FASS主要支持採用RoCE協議的以太網來實現iSER訪問。
圖-FASS iSCSI Structure
NVMeoF
NVMeoF(NVMe over Fabric)可以實現NVMe標準在服務器外部網絡上的擴展,通過把NVMe映射到多個Fabrics鏈路,消除網絡帶來的性能瓶頸,實現NVMe存儲系統性能的真正發揮。
FASS目前支持NVMeoF運行在RDMA transport(IB or RoCE v2)之上。分爲host端和target端,host端採用工具nvme-cli,target端採用SPDK的NVMeoF target,完成協議解析後,對接到後端suzaku存儲系統。一個卷可以通過任一NVMeoF target進行掛載,賦予全局唯一標識NQN。
圖-FASS NVMeoF Structure
XPE加速引擎
FASS定位於下一代全閃存存儲產品,性能是其核心生命力,因而也在提升性能這塊做了很多的嘗試與改進,如端到端NVMe協議的引進,DPDK技術的應用,但性能提升效果都相對有效,發現唯一徹底改進操作系統,纔是加速分佈式全閃存儲的關鍵。
XPE模型
在全閃存時代背景下,傳統存儲軟件如不充分考慮SSD的地址映射、多隊列、垃圾回收等一系列特性,因而即使換上全閃存介質,也無法發揮出理想的性能;然而只有存儲軟件的優化是遠遠不夠的,在us級延時的NVMe硬盤時代,操作系統逐漸暴露出低效的CPU核心調度、內存資源競爭、上下文切換帶來的巨大延遲等問題。標準操作系統完全沒有考慮到現代計算機的多核心、大內存以及高併發的運行模式,因而在高併發壓力下如海量IO的高速處理,多核心CPU的資源競爭與不合理調試,成爲系統最大的性能瓶頸。
在這一前提下,FASS高性能體系的核心,即通過OS_bypass設計,通過FASS獨有的XPE加速引擎——通過私有CPU調度器與虛擬內存管理,基於微控制器實現高效的併發流水線設計,從而從根源上解決存儲系統的性能瓶頸,實現基於標準硬件平臺、軟件定義的超性能的存儲系統。
圖-FASS XPE模型
爲實現CPU多核心的高效分配與調度,解決NUMA體系內存低速訪問帶來的一系列性能問題,FASS繞開了操作系統的CPU調度器,設計了FASS專屬的CPU調度系統,通過智能靈活的計算資源分配,消除互斥鎖設計,保證IO性能的最大化輸出。
分佈式微控制器
FASS針對每一個IO,FASS將其分解爲協議解析、IO處理、元數據訪問、落盤等服務階段,每個階段分別對應着各個微控制器進程。FASS主要有兩類微控制器進程:IO控制器和元數據控制器:IO控制器包括TGctl、FRctl、RGctl、BActl等服務,元數據管理包括MDctl服務。
每個FASS節點可以存在多個相同控制器,同時各微控制器服務按最優配比關係映射到CPU核上,同時通過系統的智能優化調整,可以靈活根據不同服務的負載爲其分配所需的CPU核心資源。每類服務專注於特定的任務,同時分配獨享的計算資源,充分規避了NUMA多核架構訪存的局部性限制,各控制器的功能見下表:
TGctl |
目標端控制器,轉發IO請求到本節點內同一NUMA節點上的FRctl並進行下一步IO處理 |
FRctl |
前端控制器,負責IO路徑管理與選擇,並將IO轉發到BActl進行讀寫落盤 |
RGctl |
子卷控制器,向MDctl查詢並緩存子卷元數據信息,並負責子卷的數據分佈管理,協調卷IO讀寫、修復、平衡等任務 |
BActl |
後端控制器,負載管理本地磁盤的數據讀寫,提供數據的寫入和讀取服務。 |
MDctl |
元數據控制器,運行KV數據庫,提供元數據查詢與持久化寫入管理,其中一個MDctl充當master角色。 |
並行流水線
FASS不僅爲IO不同階段定義出各個微控制器進程,同時也根據全閃存特性與多種IO負載模型,爲每個控制器分配了指定數量的CPU核心、專屬的無競爭鎖的內存資源。每個FASS節點,都會運行所有的微控制器服務,但根據不同節點角色與IO壓力的不同,各個節點上相同控制器的數量也會自動智能調整而各不相同。
在這一前提下,每個節點都是完全對等的角色,IO從應用端流入後,被拆分成多個階段,分別對應着各個微控制器進程。每個IO被轉發到本節點內同一NUMA節點上內的其他控制器上進行下一步處理,一步一步流水線推進直到最終落盤。各個微控制器間由於相對固定的資源鎖定,幾乎不存在CPU核心資源競爭與跨內外部NUMA節點訪問,也不存在因爲上下文切換與分支預測錯誤帶來的巨大延時開銷,多個IO宏觀上均勻分佈在整個FASS集羣,由各個節點的多個CPU核心進行高效併發的流水線處理,從而實現在分佈式體系下,依然保持的us級的超高性能。
圖-FASS並行流水線作業
在具體IO流動上,首先卷可以通過任一TGctl控制器導出,在應用發起IO訪問時,Target控制器把相關請求分發到多個前端控制器上執行(FRctl)。隨後每個FRctl會訪問對應的RGctl,以獲取該卷的元數據信息,找到對應的BActl,然後進一步下發請求到各個BActl,最終由BActl完成數據最後的落盤寫後並返回信息。
MDctl負責管理所有元數據信息交對接BActl,實現元數據的持久化落盤處理。每個RGctl都需要從MDctl獲取並加載對應子卷的元數據信息到內存,以實現高速存儲訪問。
由於每個TGctl、FRctl、RGctl、BActl、MDctl等服務都可以相同節點上併發啓用,而且每個服務都可以指定專屬的CPU核心及其數量,並支持智能動態調整,因而可以達到極高的併發吞吐,實現硬件資源的最大化利用。
圖-微控制器工作流示意
虛擬內存管理
操作系統提供的內存分配器,存在CPU親和性、碎片化、同步等關鍵問題,會帶來極大的訪存開銷。FASS採用Hugepage虛擬內存管理機制,一次性從操作系統申請出所需內存,降低頁表查詢開銷。同時將頁面鎖定到內存,不使之發生swap。
圖-FASS自定義內存管理
FASS爲每個CPU核心分配專屬內存空間,實現真正的專核專用,避免內存鎖帶來的訪問開銷。同時針對每一個FASS存儲服務,如FRctl、RGctl等,可自動根據IO負載情況,靈活爲不同服務分配不同的CPU核心,確保每個服務的運行都可以獲取到足夠的計算資源,保證在海量IO吞吐下,每個服務都能高速應用。
爲防止極端情況下內存資源不足的問題,FASS會預存足夠的公共內存區,以避免在CPU核心專屬內存不足時,從公共區申請使用。FASS的虛擬內存管理器可以維護不同尺寸的頁表粒度,靈活保證高效的內存資源分配,並避免page swap的情況發生。
定位與對比
1、傳統分佈式存儲
隨着全閃存時代的逐漸來臨,傳統分佈式存儲產品也在逐漸轉型,採用少量SSD來實現緩存加速成爲當前主流。但由於受限於底層架構的設計,很多分佈式存儲無法實現對NVMe、RDMA等技術的有效支持,也未能針對閃存進了有效的軟件優化,因而即使採用全閃存配置,也無法發揮硬件真正的性能。
2、全閃存陣列
與傳統存儲陣列與分佈式存儲相比,全閃存陣列仍然屬於存儲陣列範疇,採用控制器架構並集成存儲管理軟件,以scale up爲主要擴展方式(中高端產品可以支持有限的scale out擴展)。全閃存陣列AFA針對全閃存設計,有效的優化了SSD的垃圾回收、顆粒壽命、協議支持等問題,可以實現遠高於傳統存儲陣列的性能。
但云計算日益普及,軟件定義數據中心的背景下,AFA仍然有其成本高昂、靈活性差、擴展性低的不足。隨着閃存單盤性能突破100萬IOPS,控制器是最大的性能瓶頸,scale up對於閃存性能是一種極大的浪費。
3、分佈式全閃存儲
閃存技術日益成熟,全閃存儲將成爲未來數據存儲的主要形態,從存儲架構的演變來看,軟件定義的分佈式存儲代替傳統控制器架構存儲已成爲行業共識。在雲計算時代,軟件定義的彈性基礎設施纔是數據中心的IT建設的主流趨勢,因此定位於分佈式全閃存儲系統的FASS,無疑代表了下一代軟件定義存儲(SDS)的主要發向。
12顆NVMe SSD硬盤即可耗盡一顆Intel CPU的全部lane,控制器或存儲節點的計算能力,成爲了全閃存儲的最大瓶頸,Scale out是全閃存儲的必然選擇。隨着高速網絡、RDMA技術的成熟應用,us級的外部網絡的延時使得跨節點擴展已經不再是全閃存儲的瓶頸。分佈式全閃存儲系統在標準硬件基礎上,通過優秀的軟件核心對硬件性能的極致壓榨與疊加,可以更好實現高性能的SDS存儲系統。
對比分析
|
傳統分佈式存儲 |
全閃存陣列陣列(AFA) |
FASS分佈式全閃存儲 |
SSD應用 |
SSD緩存加速爲主 |
由全SATA SSD正在逐步在向全NVMe SSD過渡 |
全NVMe SSD |
網絡 |
10Gb以太網爲主 |
光纖SAN爲主 |
100Gb以太網、Infiniband |
擴展性 |
強,海量擴展 |
弱,scale up爲主 |
強,海量擴展 |
可靠性 |
強,節點級冗餘 |
弱,主要依靠RAID保護 |
強,節點級冗餘 |
成本 |
低,標準硬件,配置要求相對低 |
高,FC SAN,專用硬件 |
中,標準硬件,有一定的配置要求 |
性能 |
十萬級IOPS |
百萬級IOPS |
千萬級IOPS |
應用場景 |
海量文件存儲 |
數據庫、高性能企業級應用、科研測試 |
數據庫、大規模實時交易,雲計算基礎設施、科研測試、4K/8K非編 |
總結展望
以軟件定義、超融合、閃存爲代表的創新存儲領域呈現着明顯高速增長的趨勢。IDC預測,未來5年中國企業級存儲市場仍將保持近10%的年複合增長率,中國企業級存儲整體市場已經呈現出了良好的發展勢頭,從而也將帶動國產創新存儲廠商的長遠發展。
中國的企業級應用市場十分巨大,而全閃存存儲的應用卻始終落後於北美等國外市場。究其原因,除了全閃存存儲價格高昂之外,最大的應用瓶頸在於中國用戶對於全閃存存儲的分佈式部署有着明顯的需求。全閃存不只是SSD的堆疊,還需要從根本上去解決中國用戶應用全閃存的痛點。高性能、高可用、高擴展、易管理,這些存儲需求無法通過傳統煙囪式模式以及簡單的Scale-up縱向擴展來很好地解決。從全閃陣列到分佈式,從分佈式到全閃,這是殊途同歸的,終極目標是分佈式全閃系統,兼取閃存和分佈式的長板,根本上解決雲計算、大數據、人工智能等應用場景下面臨的存儲新挑戰。
NVMe作爲一種遠超傳統AHCI的高性能協議,可預見其會進擴大在存儲行業的應用範圍,並推動企業業務整合,幫助企業在整個IT 基礎架構中支持更多的應用、工作負載和用例。2019年全閃存存儲市場需求保持快速增長,重要企業工作負載都在全閃存轉移。全閃存儲也給大數據、人工智能、IoT等新工作負載提供了新的業務價值。軟件定義一切的雲計算時代,NVMe的超高性能表現註定要以類雲的內部部署模型,就可以轉變整個雲和數據中心存儲基礎架構的資本支出和運營支出。
(TaoCloud團隊原創)