容器連接存儲 vs.軟件定義存儲:選擇哪一種?
譯文【51CTO.com快譯】硬件抽象涉及編程層的創建,該層允許計算機操作系統在通用級別而不是特定級別與硬件設備進行交互。該層涉及將硬件用于任何軟件程序的邏輯代碼實現。而存儲設備的抽象為用戶訪問共享存儲提供了統一的接口,從而對操作系統隱藏了硬件的實現。這允許在用戶機器上運行的軟件從存儲設備獲得盡可能高的性能。它還允許采用獨立于設備的程序,因為存儲硬件抽象使設備驅動程序能夠直接訪問每個存儲設備。
Kubernetes本質上與基礎設施無關,因為它依賴于插件和卷抽象來將存儲硬件與應用程序和服務進行分離。另一方面,容器是短暫的,當它們終止時會立即丟失數據。Kubernetes使用卷和持久卷將容器化應用程序創建和處理的數據保存在物理存儲設備上。這些抽象通過各種類型的硬件抽象層(HAL)實現連接到存儲硬件。Kubernetes集群的兩種常用硬件抽象層(HAL)的存儲實現是容器附加存儲(CAS)和軟件定義存儲(SDS)。
本文深入探討了容器附加存儲(CAS)和軟件定義存儲(SDS)的根本區別、各自的優勢以及典型硬件抽象層(HAL)存儲實現的典型用例。
容器附加存儲vs.軟件定義存儲
Kubernetes采用抽象存儲來實現可遷移、高可用和分布式存儲。Kubernetes API支持通過CSI接口連接的各種容器附加存儲和軟件定義存儲的解決方案。以下了解一下抽象模型的功能以及每個模型在Kubernetes集群中解決存儲的目的。
1.容器附加存儲
容器附加存儲引入了一種為Kubernetes集群中的有狀態工作負載以持久保存數據的新方法。使用容器附加存儲,存儲控制器作為Kubernetes集群的一部分在容器中進行管理和運行。這保證了存儲的可遷移性,因此這些控制器可以在任何Kubernetes平臺上運行,無論是在個人電腦、內部部署數據中心還是公共云上。由于容器附加存儲利用微服務架構,存儲解決方案與綁定到物理存儲設備的應用程序保持密切關聯,從而減少了I/O時間。
(1)容器附加存儲的架構
容器附加存儲利用Kubernetes環境來實現集群數據的持久性,使得存儲解決方案在容器中運行存儲目標。這些目標是可以復制以進行獨立擴展和管理的微服務。為了增強自主性和敏捷性,這些基于微服務的存儲目標可以使用像Kubernetes這樣的平臺進行編排。
容器附加存儲集群使用控制平臺層進行存儲管理,而數據平臺層可以運行存儲目標/工作負載。控制平臺中的存儲控制器提供卷、啟動存儲目標副本,并執行其他管理相關任務。數據平臺組件執行來自控制平臺元素的存儲策略和指令。這些指令通常包括文件路徑、存儲和訪問方法。數據平面還包含存儲引擎,負責實現文件存儲的實際輸入輸出路徑。

(2)容器附加存儲的好處
容器附加存儲為有狀態的容器化應用程序提供靈活的存儲。這是因為它遵循基于微服務的模式,允許無縫升級存儲控制器和目標副本。存儲軟件的容器化意味著管理團隊可以為每個卷動態分配和更新存儲策略。對于容器附加存儲,其低級存儲資源使用Kubernetes自定義資源定義表示。這允許存儲和云原生工具之間的無縫集成,從而實現更輕松的管理和監控。容器附加存儲還確保存儲與供應商無關,因為有狀態的工作負載可以從一個Kubernetes部署環境移動到另一個環境,而不會中斷服務。
(3)容器附加存儲的用例
容器附加存儲使用存儲目標復制來保證高可用性,避免傳統分布式存儲架構的一些限制。這使得容器附加存儲成為云原生應用程序的首選存儲選擇。容器附加存儲也適用于希望在多個云平臺中協調存儲的組織。這是因為容器附加存儲可以部署在任何Kubernetes平臺上。
容器附加存儲支持簡單的存儲備份和復制,非常適合需要橫向擴展存儲的應用程序。它也非常適合希望改善持續集成(CI)和持續交付(CD)管道的讀寫時間的開發團隊。
Kubernetes的主要容器附加存儲解決方案提供商包括:
- OpenEBS
- StorageOS
- Portworx
- Longhorn
2.軟件定義存儲
軟件定義存儲架構依靠數據程序將運行的應用程序與存儲硬件解耦。這通過將存儲設備抽象為虛擬分區來簡化存儲設備的管理,然后在承載命令和控制功能的數據管理接口(DMI)上啟用管理。
(1)軟件定義存儲的特點
采用軟件定義存儲,數據/服務管理界面托管在主服務器上,主服務器控制由共享存儲池組成的存儲層。這使得存儲的配置和分配變得簡單而靈活。以下是軟件定義存儲的一些主要功能:
- 設備抽象。無論底層硬件如何,數據I/O服務都應該統一交付給用戶。通過軟件定義存儲,存儲抽象結構(例如存儲庫、文件共享、卷和邏輯單元號)用于在數據存儲的物理硬件和邏輯方面之間創建明確的界限。
- 自動化。軟件定義存儲解決方案實施的工作流程和算法可以減少管理員執行的工作量。為了實現高效的自動化,軟件定義存儲系統適應不同的性能和數據需求,幾乎不需要人工干預。
- 分解的池化存儲。物理存儲設備是共享工具的一部分,軟件可以從中為服務和應用程序開辟存儲空間。這允許軟件定義存儲在需要時有效地使用可用存儲,從而實現資源的最佳使用。
(2)軟件定義存儲的好處
使用軟件定義存儲的一些好處包括:
- 增強的可擴展性。解耦硬件資源允許管理員根據工作負載動態分配物理存儲。軟件定義存儲支持的池化、分解存儲允許物理卷的垂直和水平擴展,支持更大的容量和更高的性能。
- 改進的I/O性能。軟件定義存儲支持輸入-輸出并行性,以跨多個CPU動態處理主機請求。軟件定義存儲還支持高達8TB的大緩存內存,同時支持自動數據分層。這允許更快的輸入-輸出操作以實現更快的數據處理。
- 互操作性。軟件定義存儲使用數據管理接口作為轉換器,允許在不同平臺上運行的存儲解決方案相互交互。它還將物理隔離的存儲硬件分組到邏輯池中,允許組織托管來自不同供應商的共享存儲。
- 降低成本。軟件定義存儲解決方案通常在現有商品硬件上運行,同時優化存儲消耗。軟件定義存儲還支持自動化,從而減少管理存儲基礎設施所需的管理員數量。這些因素導致管理工作負載的前期和運營費用降低。
(3)何時使用軟件定義存儲
軟件定義存儲為希望以更低的成本提高存儲靈活性的團隊提供了多種好處。軟件定義存儲的一些常見用例包括:
- 數據中心基礎設施現代化。
- 為移動和具有挑戰性的環境創建強大的系統。
- 創建要在同一平臺上管理的混合云實施。
- 利用現有的遠程和分支機構基礎設施。
容器附加存儲與軟件定義存儲的比較
(1)相同之處
容器附加存儲和軟件定義存儲都支持物理存儲硬件和正在運行的應用程序之間的解耦。在這樣做的同時,這兩種技術都從數據存儲資源中抽象了數據管理。這兩個硬件抽象層(HAL)實現共享一些共同的功能,其中包括:
- 供應商不可知。容器附加存儲和軟件定義存儲架構都允許在單臺主機上運行多個工作負載。這允許管理員利用存儲設備和訪問軟件之間的分離。因此,無論是誰開發或管理工具,組織都可以選擇容器附加存儲和軟件定義存儲來實施可在任何平臺上運行的存儲解決方案。
- 允許動態存儲分配。選擇容器附加存儲和軟件定義存儲允許動態連接和分離存儲工具,從而為高可用性應用程序自動提供數據備份和副本。選擇容器附加存儲和軟件定義存儲都允許自動部署存儲基礎設施,從而實現存儲技術的多樣性和異構性。
- 允許有效的基礎設施擴展。選擇容器附加存儲和軟件定義存儲允許橫向和縱向基礎設施擴展以自動化數據工作流。這兩種硬件抽象層(HAL)方法支持創建可組合的分解基礎設施,從而增強多功能分布式環境的創建。
(2)不同之處
軟件定義存儲支持分布式存儲管理并減少硬件依賴性,而容器附加存儲允許使用任何容器編排平臺運行的分解存儲。這就帶來了軟件定義存儲和容器附加存儲之間的各種差異,包括:
- 軟件定義存儲依賴于傳統共享軟件,在擴展方面具有一些限制,而容器附加存儲允許存儲軟件的復制,允許獨立管理和擴展。
- 容器附加存儲允許擴展/橫向擴展存儲和卷性能,而軟件定義存儲允許擴展存儲節點以提高存儲容量。
- 軟件定義存儲支持超融合基礎設施,而容器附加存儲支持高度分解的存儲基礎設施。
容器附加存儲和軟件定義存儲都允許集群管理員利用硬件抽象的優勢為Kubernetes中的有狀態應用程序持久化存儲數據。容器附加存儲允許使用Kubernetes進行基于微服務的存儲編排,從而實現對存儲控制器的靈活管理。另一方面,軟件定義存儲允許使用可編程數據控制平面抽象存儲硬件。
容器附加存儲具有典型軟件定義存儲提供的所有功能,盡管是為容器工作負載量身定制的,并使用最新的軟件和硬件原語構建。
原文標題:Container Attached Storage (CAS) vs. Software-Defined Storage - Which One to Choose?,作者:Sudip Sengupta
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】