首頁 > 科技

分解式儲存的詳細指南

2021-07-08 03:11:11

近年來,各大主流雲計算平臺都已經廣泛地採用了基礎設施分解(Infrastructure disaggregation)的方式,讓雲服務能夠提供完全獨立於現有計算例項(compute instances)的儲存系統。可以說,通過將資料中心資源裡的記憶體、計算力、以及儲存進行解耦,它能夠讓每個資源都具有獨立擴展和配置的能力。據此,雲端租戶不但可以更加有效地使用計算資源,而且能夠達到可擴展性與靈活性。

而分解式儲存(Disaggregated storage)則是一種可組合的分解式基礎架構。它通過在網路結構上連線各種物理儲存裝置,以形成邏輯上的儲存池,並最終以按需的方式提供可擴展的儲存。由於分解式儲存能夠支援動態環境的創建,因此其中的計算和儲存資源可以根據應用程式的實際負載,進行動態調配。此外,它能夠像計算例項那樣,在不干擾應用服務的可用性的前提下,靈活地實現儲存的擴展與管理。

分解式儲存架構

從概念上說,分解式儲存會通過將多個儲存裝置組合到一個邏輯池中,進而將儲存資源提供給伺服器例項,以實現儲存與計算的分離。同時,儲存裝置在連線到網路結構中之後,可以模擬出儲存區域網路 (SAN),以便靈活地擴展出應用所需的儲存資源。不過,傳統的SAN是在共享儲存資源中,將負載緊密地耦合在一起。而分解式儲存則可以提供非本地的儲存。它既為每個負載提供了直接附加儲存(Direct Attached Storage,DAS)的設計,又提高了資源的利用率、可擴展性、可管理性、以及其他非本地儲存的優勢。

目前,分解式儲存的一項突出趨勢在於:它使用了高速的NVME-oF(Non-Volatile Memory Express over Fabric)架構、以及通過NVMe over TCP,併網絡去連線儲存裝置。NVMe使用快閃記憶體來提高固態儲存裝置(SSD)的速度和效能,並使用PCI-Express匯流排將SSD連線到伺服器上。也就是說,使用了NVMe-oF的分解式儲存,將高效能的SSD與伺服器的CPU相隔離,然後通過低延遲、低抖動的協議,將它們提供給遠端的計算節點。

採用分解式儲存

如今,以機器學習、Cassandra的NoSql、以及ElasticSearch等日誌記錄為代表的應用程式,對於高效能和低延遲日益重視,DAS在許多負載中都佔據了主導地位。而鑑於上述原因,基於NVMe-oF的分解式儲存擁有更為廣泛的使用場景。例如:使用共享架構的Kubernetes通過擴展,實現了按需為每個負載分配適量的儲存和計算資源。而那種使用了分解式池化儲存的軟體平臺,更可以從優先順序較低的應用程式處,借用到儲存或CPU資源,以便讓高效能的應用程式,按照負載的變化,實現自動化的無縫擴展。

對於分解式儲存的效能要求:

分解式儲存可以為各種獨立的應用程式帶來如下效能優勢:

1. 高速的網路結構 - 分解式儲存能夠在訪問速度、以及延遲方面,滿足嚴格的服務質量(QoS)需求。此類網路通過池化的網路式儲存,以獲取高度可擴展性、高效能,並能以非擁塞的方式連線到計算伺服器上,以便多臺主機快速地訪問到儲存。

2. 快速儲存的網路協議 - 分解式儲存通過諸如:NVMe和NVMe-oF之類的高效且快速的傳輸協議,以比傳統的iSCSI協議更低延遲的方式,在SSD直連的計算節點處,實現最大的IOPS(Input Output operations Per Second,IOPS)。

3. 快速、安全、可擴展的I/O控制器 – 此類儲存控制器能夠快速、安全地在底層SSD上,執行讀/寫操作,並能根據它們所支援的負載,使用鬆散耦合的架構,來實現彈性的橫向擴展。

分解式儲存的類型

目前分解式儲存擁有如下三種類型與形式:

配置分解

這是一種非動態形式的分解。由於是在服務級別的配置期間執行儲存抽象,因此它不需要持續運行控制器的監視。儲存池可以通過重新配置,實現在部署期間、或在為不同的應用程式重建儲存架構時,處理不同的工作負載。

故障分解

作為另一種非動態形式的分解,儲存驅動器僅在應用出現故障時,被重新分配給不同的主機。雖然重新配置鮮少發生,但是此類分解進一步提高了應用程式的容錯能力。

動態彈性分解

在這種形式中,驅動器通常會被池化,並且不連線到多個I/O控制器上。因此,每個伺服器都可以一次性連線多個驅動器。隨著伺服器請求和負載數量的變化,儲存的重新配置會頻繁發生,它們每隔幾個小時就會請求不同的儲存驅動器。

由於儲存資源被預設為完全抽象的,因此在此類分解形式中,任何主機都可以通過任何I/O控制器,連線到任何儲存驅動器上。而且由於伺服器與儲存的連線,會通過重新調整,來適應每個I/O請求,因此基礎設施的重新配置也就會動態發生。例如,Kubernetes會水平擴展成為使用I/O控制器的主機,按需為負載的分解提供算力。

分解式儲存的優勢:

分解式儲存為計算和基礎設施提供瞭如下方面的改進:

1. 提高資源的利用率 - 分解式儲存能夠根據優先順序、以及應用程式的需求,動態地分配儲存資源。同時,它能夠讓使用者享用到由SSD提供的快速I/O。這就意味著租戶可以將所有可用的儲存資源都投入使用,並根據應用程式的實際要求,在裝置的I/O、容量、吞吐能力之間,按需實現最佳配置。

2. 使得SSD靈活且可擴展 - 藉助分解式儲存,使用者可以為應用程式分配任意數量的SSD,然後按照應用程式的實際要求增減其容量。

3. 簡化擴展 - 分解式儲存允許使用者創建動態可擴展的儲存架構,以滿足使用Shared-Nothing架構的資源需求變化。

4. 支援創建高效能的應用程式 - 分解式儲存允許使用者按需分配吞吐量和讀寫速度,以滿足實際的負載需求。由於應用的執行效率更高,因此使用者訪問其儲存資料的延遲也就更小。

分類儲存的發展趨勢

在新技術的加持下,分解式儲存作為DAS的替代方案,得到了開發與採用。其中,Non-Volatile Memory Express(NVMe)和Non-Volatile Memory Express Over Fabric (NVMe-oF)通過高速的I/O和網路,實現了對於SSD的更好利用。例如,Amazon的EBS和Azure的Blob Storage等公共雲的Web Scaler,都能夠構建出大量的計算例項。而這些例項通過利用優化的硬體和軟體基礎設施,為大量分散式的伺服器提供了遠端的塊儲存裝置。

Kubernetes如何啟用分解式儲存:

分解式儲存能夠完美地與Kubernetes相配合。也就是說,Kubernetes通過創建一個靈活且高度可擴展的部署環境,可以實現對負載和儲存控制器的編排和擴展。同時,Kubernetes使用Persistent Volumes和Persistent Volume Claims,根據容器儲存的需求將各種Pod附加到物理儲存的抽象之中,進而為叢集提供靈活的儲存。此外,通過容器儲存介面(Container Storage Interface,CSI),Kubernetes允許第三方儲存提供商通過擴展卷功能的方式,來創建塊和檔案儲存的解決方案。可以說,有了CSI,使用者可以虛擬地分離出計算層和儲存層,從而為應用程式啟用分解式儲存。通常,Kubernetes的CSI插件具有如下兩種類型:

1. 儲存驅動器 – 由於可以在Kubernetes叢集之外被維護,因此它允許將應用程式配置為利用儲存類(Storage Classes)和持久卷聲明(Persistent Volume Claims),去動態地使用資源。

2. 容器附加儲存 (Container Attached Storage,CAS) - 此模型通過按需將容器化的儲存控制器,分配給負載,來實現基於負載的儲存。儲存在叢集中運行,各種控制層面元素(control plane elements)位於主節點處,而資料層面的負載則運行在工作節點上。資料層面節點既可以是本地節點,也可以是由主節點中的控制器去獨立排程和擴展分解式的儲存目標。通過使用CAS模型,每個卷都有一個專用的控制器Pod和一組多個副本的Pod。

通過CSI的連線,以及擴展和編排儲存軟體的能力,Kubernetes很好地支援了分解式儲存。

由MayaData OpenEBS提供的容器附加儲存(Container Attached Storage,CAS)部署了一個數據管理層面。該層面在架構上對映到Kubernetes的應用程式管理層。OpenEBS將分解的儲存統一到Kubernetes應用層的一個元件中。而對於Kubernetes應用程式而言,在那些已部署到企業資料中心的異構硬體和軟體之上,OpenEBS創建了統一的儲存基礎架構。它不但簡化了開發人員的工作量,而且讓DevOps擁有更大的控制權,甚至為CxO們提供了完整的使用可視性。可以說,OpenEBS能夠讓使用者管理起跨企業資料中心的有狀態應用來,更加簡單、可預測、更加遊刃有餘。

最近的一項調查證實,OpenEBS是最受歡迎的CAS儲存項目之一。與其他雲原生的、適合Kubernetes的項目相似,OpenEBS在介面和功能上,避免了傳統儲存架構「共享一切」的依賴項和可擴展性。而且,OpenEBS非常易於操作和使用。

OpenEBS依靠控制層面來提供卷,並執行卷的相關操作。它包含了一個PV配置器,能夠動態地為正確節點上的卷副本Pod和目標控制器Pod,創建特定的部署要求。同時,OpenEBS資料層面也包含了一個儲存引擎,該引擎能夠實現叢集卷的實際I/O路徑。當然,它也可以在LocalPV模式下,啟用對儲存裝置的本地或分解式訪問。如下圖所示,儲存引擎可以在使用者空間中作為微服務運行,通過靈活的配置和擴展,以滿足負載的需求。

小結

分解式儲存通過將計算與儲存解耦,實現了高速、靈活、且具有高度可擴展的應用程式。藉助分解式儲存,使用者可以利用高速NVMe的SSD,受益於低延遲和增強的負載響應能力。可以說,作為一種獨特的儲存解決方案,分解式儲存的速度、靈活性和低延遲,在優化資源使用的同時,也降低了TCO。


IT145.com E-mail:sddin#qq.com