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

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