容器附加存儲(chǔ) (CAS) 與軟件定義存儲(chǔ)(SDS) ,如何選擇
譯文【51CTO.com快譯】硬件抽象涉及創(chuàng)建一個(gè)編程層,該層允許計(jì)算機(jī)操作系統(tǒng)在一般而不是詳細(xì)級(jí)別與硬件設(shè)備進(jìn)行交互。該層用于實(shí)現(xiàn)將硬件用于任何軟件程序的邏輯代碼。對(duì)于存儲(chǔ)設(shè)備,抽象層為用戶訪問(wèn)共享存儲(chǔ)提供了一個(gè)統(tǒng)一的接口,對(duì)操作系統(tǒng)實(shí)現(xiàn)了對(duì)硬件設(shè)備的隱藏功能。這就允許在用戶機(jī)器上運(yùn)行的軟件從存儲(chǔ)設(shè)備獲得盡可能高的性能。另外,它還允許獨(dú)立于設(shè)備的程序,因?yàn)榇鎯?chǔ)硬件抽象層使設(shè)備驅(qū)動(dòng)程序能夠直接訪問(wèn)每個(gè)存儲(chǔ)設(shè)備。
Kubernetes 本質(zhì)上與基礎(chǔ)設(shè)施無(wú)關(guān),因?yàn)樗蕾囉诓寮统橄缶韥?lái)將存儲(chǔ)硬件與應(yīng)用程序和服務(wù)分離。另一方面,當(dāng)用戶終止容器時(shí),數(shù)據(jù)就會(huì)立即丟失。Kubernetes 使用卷和持久卷將容器化應(yīng)用程序創(chuàng)建和處理的數(shù)據(jù)保存在物理存儲(chǔ)設(shè)備上。這些抽象通過(guò)各種類型的硬件抽象層 (HAL)實(shí)現(xiàn)連接到存儲(chǔ)硬件 。Kubernetes 集群用兩種常用 HAL 存儲(chǔ)實(shí)現(xiàn) 容器附加存儲(chǔ) (CAS)和 軟件設(shè)計(jì)存儲(chǔ) (SDS)。
本博客,將深入探討了 CAS 和 SDS 的根本區(qū)別、各自的優(yōu)勢(shì)以及典型 HAL 存儲(chǔ)實(shí)現(xiàn)的最合適應(yīng)用。
容器附加存儲(chǔ)與軟件定義存儲(chǔ)
Kubernetes 采用抽象存儲(chǔ)來(lái)實(shí)現(xiàn)可移植、高可用和分布式存儲(chǔ)。Kubernetes API 支持通過(guò) CSI 接口連接各種 CAS 和 SDS 存儲(chǔ)解決方案。那么,先讓我們仔細(xì)研究抽象模型的功能以及每個(gè)模型在 Kubernetes 集群中解決存儲(chǔ)的目的。
容器附加存儲(chǔ)
容器附加存儲(chǔ) (CAS)引入了一種為 Kubernetes 集群中有狀態(tài)工作負(fù)載持久保存數(shù)據(jù)的新方法。使用 CAS,存儲(chǔ)控制器作為 Kubernetes 集群的一部分在容器中進(jìn)行管理和運(yùn)行。由于這些控制器可以在任何 Kubernetes 平臺(tái)上運(yùn)行,無(wú)論是在個(gè)人機(jī)器、本地?cái)?shù)據(jù)中心還是公有云產(chǎn)品上,這就允許存儲(chǔ)的可移植性。由于 CAS 利用微服務(wù)架構(gòu),存儲(chǔ)解決方案與綁定到物理存儲(chǔ)設(shè)備的應(yīng)用程序保持密切關(guān)聯(lián),從而減少了 I/O 時(shí)間。
容器附加存儲(chǔ)架構(gòu)
CAS 利用 Kubernetes 環(huán)境來(lái)實(shí)現(xiàn)集群數(shù)據(jù)的持久性。存儲(chǔ)解決方案在容器中運(yùn)行存儲(chǔ)目標(biāo)。這些 目標(biāo)是可以復(fù)制以進(jìn)行獨(dú)立擴(kuò)展和管理的微服務(wù)。為了增強(qiáng)自主性和敏捷性,這些基于微服務(wù)的 存儲(chǔ)目標(biāo)可以使用像 Kubernetes 這樣的平臺(tái)進(jìn)行編排。
CAS 集群使用控制平面層 進(jìn)行存儲(chǔ)管理,而數(shù)據(jù)平面層 用于運(yùn)行存儲(chǔ)目標(biāo)/工作負(fù)載。控制平面中的存儲(chǔ)控制器提供卷、啟動(dòng)存儲(chǔ)目標(biāo)副本并執(zhí)行其他管理相關(guān)任務(wù)。數(shù)據(jù)平面組件執(zhí)行來(lái)自控制平面元素的存儲(chǔ)策略和指令。這些指令通常包括文件路徑、存儲(chǔ)和訪問(wèn)方法。數(shù)據(jù)平面還包含存儲(chǔ)引擎 ,負(fù)責(zé)實(shí)現(xiàn)文件存儲(chǔ)的實(shí)際輸入輸出路徑。
容器附加存儲(chǔ)的好處
Container Attached Storage 為有狀態(tài)的容器化應(yīng)用程序提供了敏捷存儲(chǔ)。這是因?yàn)樗裱谖⒎?wù)的模式,允許無(wú)縫升級(jí)存儲(chǔ)控制器和目標(biāo)副本。存儲(chǔ)軟件的容器化意味著管理團(tuán)隊(duì)可以為每個(gè)卷動(dòng)態(tài)分配和更新存儲(chǔ)策略。對(duì)于 CAS,低級(jí)存儲(chǔ)資源使用 Kubernetes 自定義資源表示定義。這允許存儲(chǔ)和云原生工具之間的無(wú)縫集成,從而實(shí)現(xiàn)更輕松的管理和監(jiān)控。CAS 還確保存儲(chǔ)與供應(yīng)商無(wú)任何關(guān)聯(lián),因?yàn)橛袪顟B(tài)的工作負(fù)載可以從一個(gè) Kubernetes 部署環(huán)境移動(dòng)到另一個(gè),而不會(huì)中斷服務(wù)。
容器附加存儲(chǔ)應(yīng)用
CAS使用存儲(chǔ)目標(biāo)復(fù)制來(lái)保證高可用,避免傳統(tǒng)分布式存儲(chǔ)架構(gòu)的爆炸半徑限制。這使得 CAS 成為云原生應(yīng)用程序的首選存儲(chǔ)選擇。CAS 也適用于希望在多個(gè)云中協(xié)調(diào)存儲(chǔ)的企業(yè)。這是因?yàn)?CAS 可以部署在任何 Kubernetes 平臺(tái)上。Container Attached Storage 支持簡(jiǎn)單的存儲(chǔ)備份和復(fù)制,非常適合需要橫向擴(kuò)展存儲(chǔ)的應(yīng)用程序。當(dāng)然,它也非常適合希望改善持續(xù)集成和開(kāi)發(fā) (CI/CD) 管道的讀寫時(shí)間的開(kāi)發(fā)團(tuán)隊(duì)。
Kubernetes 的流行 CAS 解決方案提供商包括:
1)OpenEBS
2)StorageOS
3)Portworx
4)Longhorn
軟件定義存儲(chǔ)
軟件定義存儲(chǔ)架構(gòu)依靠數(shù)據(jù)程序?qū)⑦\(yùn)行的應(yīng)用程序與存儲(chǔ)硬件分離。通過(guò)將存儲(chǔ)設(shè)備抽象為虛擬分區(qū)來(lái)簡(jiǎn)化存儲(chǔ)設(shè)備的管理,然后在承載命令和控制功能的數(shù)據(jù)管理接口 (DMI)上啟用管理。
軟件定義存儲(chǔ)的特點(diǎn)
借助軟件定義存儲(chǔ),數(shù)據(jù)/服務(wù)管理界面托管在控制由共享存儲(chǔ)池組成的存儲(chǔ)層的主服務(wù)器上。這使得存儲(chǔ)的配置和分配變得簡(jiǎn)單而靈活。以下是軟件定義存儲(chǔ)的一些主要功能:
設(shè)備抽象 - 無(wú)論底層硬件如何,數(shù)據(jù) I/O 服務(wù)都應(yīng)該統(tǒng)一交付給用戶。通過(guò) SDS,存儲(chǔ)抽象結(jié)構(gòu)(例如存儲(chǔ)庫(kù)、文件共享、卷和邏輯單元號(hào) (LUN))用于在數(shù)據(jù)存儲(chǔ)的物理硬件和邏輯方面之間創(chuàng)建清晰的劃分。
自動(dòng)化 - SDS 解決方案實(shí)施的工作流程和算法可減少管理員執(zhí)行的手動(dòng)工作量。為了實(shí)現(xiàn)高效的自動(dòng)化,SDS 存儲(chǔ)系統(tǒng)可以適應(yīng)幾乎不需要人工干預(yù)的不同性能和數(shù)據(jù)需求。
分解的池化存儲(chǔ) - 物理存儲(chǔ)設(shè)備是共享工具的一部分,軟件可以從中為服務(wù)和應(yīng)用程序開(kāi)辟存儲(chǔ)空間。這允許 SDS 在需要時(shí)有效地使用可用存儲(chǔ),從而實(shí)現(xiàn)資源的最佳使用。
軟件定義存儲(chǔ)的優(yōu)勢(shì)
使用 SDS 的一些好處包括:
增強(qiáng)的可擴(kuò)展性 - 解耦硬件資源允許管理員根據(jù)工作負(fù)載動(dòng)態(tài)分配物理存儲(chǔ)。SDS 支持的池化、分解存儲(chǔ)允許物理卷的垂直和水平擴(kuò)展,支持更大的容量和更高的性能。
改進(jìn)的 I/O 性能 - SDS 支持 輸入-輸出并行性,以跨多個(gè) CPU 動(dòng)態(tài)處理主機(jī)請(qǐng)求。SDS 還支持高達(dá) 8TB 的大緩存內(nèi)存,同時(shí)支持自動(dòng)數(shù)據(jù)分層。這允許更快的輸入-輸出操作以更快的數(shù)據(jù)處理。
互操作性 - SDS 使用數(shù)據(jù)管理接口作為轉(zhuǎn)換器,允許在不同平臺(tái)上運(yùn)行的存儲(chǔ)解決方案相互交互。它還將物理隔離的存儲(chǔ)硬件分組到邏輯池中,允許組織托管來(lái)自不同供應(yīng)商的共享存儲(chǔ)。
降低成本 - SDS 存儲(chǔ)解決方案通常在現(xiàn)有商品硬件上運(yùn)行,同時(shí)優(yōu)化存儲(chǔ)消耗。SDS 還支持自動(dòng)化,從而減少管理存儲(chǔ)基礎(chǔ)架構(gòu)所需的管理員數(shù)量。這些因素導(dǎo)致管理工作負(fù)載的前期和運(yùn)營(yíng)費(fèi)用降低。
何時(shí)使用軟件定義存儲(chǔ)
SDS 為希望以更低的成本提高存儲(chǔ)靈活性的團(tuán)隊(duì)提供了多種好處。SDS 的一些常見(jiàn)用例包括:
數(shù)據(jù)中心基礎(chǔ)設(shè)施現(xiàn)代化
為移動(dòng)和具有挑戰(zhàn)性的環(huán)境創(chuàng)建強(qiáng)大的系統(tǒng)
創(chuàng)建要在同一平臺(tái)上管理的混合云實(shí)施
利用現(xiàn)有的遠(yuǎn)程和分支機(jī)構(gòu)基礎(chǔ)設(shè)施
容器附加存儲(chǔ)與軟件定義存儲(chǔ)的比較
相似之處:
CAS 和 SDS 都支持物理存儲(chǔ)硬件和正在運(yùn)行的應(yīng)用程序之間的隔離。在這樣做的同時(shí),這兩種技術(shù)都從數(shù)據(jù)存儲(chǔ)資源中抽象了數(shù)據(jù)管理。這兩個(gè) HAL 實(shí)現(xiàn)共享幾個(gè)共同的功能,包括:
供應(yīng)商不可知
CAS 和 SDS 架構(gòu)都允許在單個(gè)主機(jī)上運(yùn)行多個(gè)工作負(fù)載。這允許管理員利用存儲(chǔ)設(shè)備和訪問(wèn)軟件之間的分離。因此,無(wú)論是誰(shuí)開(kāi)發(fā)或管理工具,組織都可以選擇 CAS 或 SDS 來(lái)實(shí)施可在任何平臺(tái)上運(yùn)行的存儲(chǔ)解決方案。
允許動(dòng)態(tài)存儲(chǔ)分配
SDS 和 CAS 允許動(dòng)態(tài)連接和分離存儲(chǔ)工具,從而為高可用性應(yīng)用程序自動(dòng)提供數(shù)據(jù)備份和副本。SDS 和 CAS 都允許自動(dòng)部署存儲(chǔ)基礎(chǔ)設(shè)施,從而實(shí)現(xiàn)存儲(chǔ)技術(shù)的多樣性和異構(gòu)性。
允許有效的基礎(chǔ)設(shè)施擴(kuò)展
CAS 和 SDS 允許橫向和縱向基礎(chǔ)設(shè)施擴(kuò)展以自動(dòng)化數(shù)據(jù)工作流。這兩種 HAL 方法支持創(chuàng)建可組合的分解基礎(chǔ)架構(gòu),從而增強(qiáng)多功能分布式環(huán)境的創(chuàng)建。
CAS和SDS的差異
SDS 支持分布式存儲(chǔ)管理并減少硬件依賴性,而 CAS 允許使用任何容器編排平臺(tái)運(yùn)行的分解存儲(chǔ)。因此 CAS 和 SDS 之間的各種差異,包括:
軟件定義存儲(chǔ)依賴于傳統(tǒng)共享軟件,具有爆炸半徑的限制,而容器附加存儲(chǔ) (CAS) 允許存儲(chǔ)軟件的復(fù)制,允許獨(dú)立管理和擴(kuò)展。
CAS 允許擴(kuò)展/橫向擴(kuò)展存儲(chǔ)和卷性能,而 SDS 允許擴(kuò)展存儲(chǔ)節(jié)點(diǎn)以提高存儲(chǔ)容量。
SDS 支持超融合基礎(chǔ)架構(gòu) (HCI),而 CAS 支持高度分解的存儲(chǔ)基礎(chǔ)架構(gòu)。
容器附加存儲(chǔ)和軟件定義存儲(chǔ)都允許集群管理員利用硬件抽象的優(yōu)勢(shì)為 Kubernetes 中的有狀態(tài)應(yīng)用程序持久化數(shù)據(jù)。CAS 允許使用 Kubernetes 進(jìn)行基于微服務(wù)的存儲(chǔ)編排,從而實(shí)現(xiàn)對(duì)存儲(chǔ)控制器的靈活管理。另一方面,軟件定義存儲(chǔ)允許使用可編程數(shù)據(jù)控制平面抽象存儲(chǔ)硬件。
CAS 具有典型 SDS 提供的所有功能,盡管是為容器工作負(fù)載量身定制的,但仍然是使用最新的軟件和硬件進(jìn)行構(gòu)建。
原文標(biāo)題:Container Attached Storage (CAS) vs. Software-Defined Storage - Which One to Choose?
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】