容器连接存储 vs.软件定义存储:哪种更好?
51CTO硬件抽象涉及编程层的创建,该层允许计算机操作系统在通用级别而不是特定级别与硬件设备进行交互。该层涉及将硬件用于任何软件程序的逻辑代码实现。而存储设备的抽象为用户访问共享存储提供了统一的接口,从而对操作系统隐藏了硬件的实现。这允许在用户机器上运行的软件从存储设备获得尽可能高的性能。它还允许采用独立于设备的程序,因为存储硬件抽象使设备驱动程序能够直接访问每个存储设备。
Kubernetes本质上与基础设施无关,因为它依赖于插件和卷抽象来将存储硬件与应用程序和服务进行分离。另一方面,容器是短暂的,当它们终止时会立即丢失数据。Kubernetes使用卷和持久卷将容器化应用程序创建和处理的数据保存在物理存储设备上。这些抽象通过各种类型的硬件抽象层(HAL)实现连接到存储硬件。Kubernetes集群的两种常用硬件抽象层(HAL)的存储实现是容器附加存储(CAS)和软件定义存储(SDS)。
本文深入探讨了容器附加存储(CAS)和软件定义存储(SDS)的根本区别、各自的优势以及典型硬件抽象层(HAL)存储实现的典型用例。
Kubernetes采用抽象存储来实现可迁移、高可用和分布式存储。Kubernetes API支持通过CSI接口连接的各种容器附加存储和软件定义存储的解决方案。以下了解一下抽象模型的功能以及每个模型在Kubernetes集群中解决存储的目的。
容器附加存储引入了一种为Kubernetes集群中的有状态工作负载以持久保存数据的新方法。使用容器附加存储,存储控制器作为Kubernetes集群的一部分在容器中进行管理和运行。这保证了存储的可迁移性,因此这些控制器可以在任何Kubernetes平台上运行,无论是在个人电脑、内部部署数据中心还是公共云上。由于容器附加存储利用微服务架构,存储解决方案与绑定到物理存储设备的应用程序保持密切关联,从而减少了I/O时间。
(1)容器附加存储的架构
容器附加存储利用Kubernetes环境来实现集群数据的持久性,使得存储解决方案在容器中运行存储目标。这些目标是可以复制以进行独立扩展和管理的微服务。为了增强自主性和敏捷性,这些基于微服务的存储目标可以使用像Kubernetes这样的平台进行编排。
容器附加存储集群使用控制平台层进行存储管理,而数据平台层可以运行存储目标/工作负载。控制平台中的存储控制器提供卷、启动存储目标副本,并执行其他管理相关任务。数据平台组件执行来自控制平台元素的存储策略和指令。这些指令通常包括文件路径、存储和访问方法。数据平面还包含存储引擎,负责实现文件存储的实际输入输出路径。
(2)容器附加存储的好处
容器附加存储为有状态的容器化应用程序提供灵活的存储。这是因为它遵循基于微服务的模式,允许无缝升级存储控制器和目标副本。存储软件的容器化意味着管理团队可以为每个卷动态分配和更新存储策略。对于容器附加存储,其低级存储资源使用Kubernetes自定义资源定义表示。这允许存储和云原生工具之间的无缝集成,从而实现更轻松的管理和监控。容器附加存储还确保存储与供应商无关,因为有状态的工作负载可以从一个Kubernetes部署环境移动到另一个环境,而不会中断服务。
(3)容器附加存储的用例
容器附加存储使用存储目标复制来保证高可用性,避免传统分布式存储架构的一些限制。这使得容器附加存储成为云原生应用程序的首选存储选择。容器附加存储也适用于希望在多个云平台中协调存储的组织。这是因为容器附加存储可以部署在任何Kubernetes平台上。
容器附加存储支持简单的存储备份和复制,非常适合需要横向扩展存储的应用程序。它也非常适合希望改善持续集成(CI)和持续交付(CD)管道的读写时间的开发团队。
Kubernetes的主要容器附加存储解决方案提供商包括:
软件定义存储架构依靠数据程序将运行的应用程序与存储硬件解耦。这通过将存储设备抽象为虚拟分区来简化存储设备的管理,然后在承载命令和控制功能的数据管理接口(DMI)上启用管理。
(1)软件定义存储的特点
采用软件定义存储,数据/服务管理界面托管在主服务器上,主服务器控制由共享存储池组成的存储层。这使得存储的配置和分配变得简单而灵活。以下是软件定义存储的一些主要功能:
(2)软件定义存储的好处
使用软件定义存储的一些好处包括:
(3)何时使用软件定义存储
软件定义存储为希望以更低的成本提高存储灵活性的团队提供了多种好处。软件定义存储的一些常见用例包括:
(1)相同之处
容器附加存储和软件定义存储都支持物理存储硬件和正在运行的应用程序之间的解耦。在这样做的同时,这两种技术都从数据存储资源中抽象了数据管理。这两个硬件抽象层(HAL)实现共享一些共同的功能,其中包括:
(2)不同之处
软件定义存储支持分布式存储管理并减少硬件依赖性,而容器附加存储允许使用任何容器编排平台运行的分解存储。这就带来了软件定义存储和容器附加存储之间的各种差异,包括:
容器附加存储和软件定义存储都允许集群管理员利用硬件抽象的优势为Kubernetes中的有状态应用程序持久化存储数据。容器附加存储允许使用Kubernetes进行基于微服务的存储编排,从而实现对存储控制器的灵活管理。另一方面,软件定义存储允许使用可编程数据控制平面抽象存储硬件。
容器附加存储具有典型软件定义存储提供的所有功能,尽管是为容器工作负载量身定制的,并使用最新的软件和硬件原语构建。
原文标题:Container Attached Storage (CAS) vs. Software-Defined Storage - Which One to Choose?,作者:Sudip Sengupta
【51CTO译稿,合作站点转载请注明原文译者和出处】
来源:51CTO李睿