容器定义存储(CDS)—春江水暖”Portworx”先知

 

方圆 – 九州方圆

在上篇中,我们已经介绍了容器如何改变应用部署方式、为什么要通过CDS实现数据中心”轻量化”,具体请参看文章容器定义存储(CDS)—存储技术的”瘦身”革命。那今天我们就来分析一下基于容器的Portworx存储、一个基于数据和控制面的容器定义存储技术和产品。

Portworx是一家美国存储初创公司,它研发了业界第一个容器定义存储系统Portworx。Portworx提供了全新的、统一的Scale out存储栈,其核心架构是共享的、松耦合的、分布式、基于元数据的块存储层(卷、块设备、全局共享卷和文件访问等)。portworx本身作为容器服务的方式部署,在每个集群节点呈现为PX的容器。

Portworx架构和原理

每个PX容器来识别服务器节点的硬件、检测磁盘类型、容量和整体服务能力和类型。系统根据每个节点的能力匹配业务对存储需求,进行调度和IO分发。

每个PX容器根据授权和集群ID发现其他节点。通过这种方式,每一个PX节点就可以感知整个存储系统的拓扑结构和参与集群的节点(支持数据中心内部和跨数据中心部署)。通过整体拓扑就可以感知整个集群的Region、机架部署情况,当然,也可以感知集群内不同节点的能力。

20160910082747

集群节点信息同步采用Gossip协议(类似留言蜚语,节点状态的变化,通过一传十,十传百的方式传递,而不是有某几个节点逐一传递),通过效率比较高的协议确保整个集群状态的一致性,而且不会存在扩展性或性能瓶颈。

20160910082755

存储控制面

存储的供给方式是通过容调度器来实现,存储资源通过编排网络分配给具体的容器实例,PX已经支持与多种容器调度、编排工具集成,如主流的Kubernetes、Swarm、Mesosphere、Spark等,PX通过控制面协议创建合适的存储卷给上层容器实例使用,基于应用容器的IO等SLA要求,PX可以自动分配满足要求的存储卷。在Kubernetes调度器中,存储卷是以Kubernetes POD的方式提供给应用容器。

卷是以Thin的方式来分配的,可以做到按需灵活伸缩。每个卷的容量是打散在集群节点上的,所有增值特性如,快照、块大小等都可以容器卷的原则来分配。

20160910082803

数据面访问

Portworx提供数据访问路径和位置,一旦把卷配置给正在运行的应用容器后,PX就处在数据路径的位置;并根据上层容器应用对应的储类型(卷、块设备或全局共享卷等)连接到上层容器上。

20160910082820

当上层应用容器写入数据时,数据块和对应的元数据会根据算法分布到不同的节点上增强可靠性。这些卷是容器可寻址卷,可以基于容器寻址,所以具备内容寻址存储的优势。

生命周期管理

每个PX容器维护着应用容器卷的生命周期管理,这些卷可以被克隆、分级存储、或移动到S3公有云上。PX同时维护着每个卷的IO活动历史记录,并向上提供CLI和PXctl命令接口和GUI界面,方便运营维护和系统管理。

Portworx应用场景

Portworx由于在存储容器层针对企业应用做了优化和增强,所以,可以满足主流应用要求,如Hadoop、Spark大数据存储,提供弹性Scale out能力;对内容管理WordPress,可以提供Scale out 文件能力和基于容器的备份;也支持一些如Cassandra、Postgres等非关系数据库;另外,对流计算、视频应用场景也支持PB级的扩展能力。

Portworx提供了业界第一个存储解决方案专为容器。不像传统存储,Portworx容器定义存储是基于应用需求规模实现弹性伸缩。面向容器化应用的软件定义存储,强调Container Defined Storage,实现了从控制面到数据面完整的解决方案,Portworx提出“容器定义的存储”,相比VM存储提出更细SLA要求、容器粒度的企业存储特性要求,容器应用对存储的新要求需要进一步分析。

Portworx其在Docker Hub中有OpenStorage开源项目;另外,提供了开发者和企业级两个版本,开发者版本只包含基于容器的Scale out快存储、分布式的文件访问、基于容器粒度的控制和CLI命令行界面;企业版增加了多集群管理、单一文件命名空间、容量预测和管理、GUI管理界面。

20160910082831

Portworx可运行于服务器或EC2、容器等基础设施,并且支持分离部署和超融合部署,Portworx的主要亮点简单总结如下:

  • 性能无损: 存储运行性能可以和裸金属部署媲美。
  • 存储持久能力: 对容器应用提供了持久数据存储能力。
  • 容器粒度管理: 实现了基于每个应用容器的存储管理服务。
  • 容器粒度增值特性: 基于容器粒度实现远程复制、快照等数据保护功能
  • 节约硬件资源: 相对于虚拟机,削减了存储70%硬件和资源成本。
  • 资源自动化供给: 能应对容器应用突发需求,如容量供给、自动调度等,基于容器I/O进行优先级排队,基于SLA自动供给。

Portworx容器定义存储本身很简单,采用基本的分布式方法和商业X86硬件作为融合存储节点,并能实现节点快速伸缩。最主要的就是可以与任何一个Docker调度集成,自动实现存储资源按需供给。

20160910082842

Portworx从控制面和数据面完整地为容器提供存储,数据面供给能力更高、更快、更强;控制面可以广泛对接Docker、Kubernetes、Mesos等计算与集群管理系统。如vSAN/vVol/Cinder,这种比较开放的架构,可以通过PWX CDS 控制器构建面向容器控制面生态。

在文章最后,来总结一线Portworx容器定义存储的核心思想,或容器定义存储应具备这些能力,个人观点,可能不是太全面。

容器定义存储应该分控制面和数据面实现。控制面基于 Kubernetes、Swarm、Mesosphere、Spark等 容器调度、编排工具自动实现存储分配,满足应用容器的SLA要求;数据面提供更高、更快、更强的存储供给能力,并可以实现基于应用容器寻址的能力。

应用容器卷的分配、管理应该是以容器为单位。 所有增值特性如,快照、远程复制等都基于容器的原则来实现。

容器定义存储应该是高度自愈、轻量高效、应用容器感知的系统。自愈、高效等特性,我觉得传统存储都已经具备;但是轻量、容器感知还需要加强。Portworx采用容器实现分布式Scale out容器定义存储,可以提供裸金属性能、启动快和资源占用率低等特点。

分享到:更多 ()