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