容器定义存储(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容器定义存储是基于应用需求