REX-Ray:EMC Docker生态的粘合剂

Dec 19, 2015


Docker生态近两年来发展迅速,存储卷管理组件也有像flocker的一些实现,但目前还没有形成事实的标准,EMC开源的REX-Ray项目,为其文件、对象和弹性云存储更快的融合到社区提供了粘合剂。

ruby-gems


Docker接入共享存储

当前Docker支持共享存储的3种方式:

  1. 旁路方式,通过NFS直接挂载,具体方式NetApp有个实现方法比较绕,不推荐这样做。

  2. 原生的方式,此方式实际还是本地盘的方式,即还是通过创建容器时挂载数据卷的方式:

    ruby-gems

    这种方式最大的缺点是,对容器挂卷需要先在存储创建卷,并映射给容器宿主机,并在容器宿主机上先挂载,再通过容器挂载本地磁盘的方式挂载,涉及流程较多,且需要了解主机层的操作,不同存储创卷、映射方法均不相同,此方式不适合集群化的部署。

  3. Volume-Manager插件方式,1.9版本支持此特性,允许扩展卷管理组件,实现容器卷基本的Create/remove、Attach/unattach、mount/unmount操作,屏蔽了主机层的操作。典型的实现由ClusterHQ的flocker,EMC的REX-Ray。

Flocker

Flocker出现的较早,网上的资料较多,目前不温不火,仅EMC等较少厂商支持,其屏蔽了主机层的操作,支持基础的卷管理和迁移,但其缺点是架构较重,功能定位不单是卷管理组件,还做了容器创建编排调度的操作,且需要在宿主机安装Agent,不适合用在虚拟化等单纯需要容器卷管理的场景:

ruby-gems

REX-Ray

REX-Ray是EMC 2015 6月开源的Docker卷管理的组件,12月更新到0.3版本,支持了AWS、OpenStack和自家的几个文件对象存储平台: AWS EC2 (EBS)

  • OpenStack (Cinder)
  • EMC Isilon
  • EMC ScaleIO
  • EMC VMAX
  • EMC XtremIO
  • Google Compute Engine (GCE)
  • VirtualBox
  • ..more coming

REX-Ray内部架构如下:

  • Volume Manager API 提供基础的卷管理
  • OS Adapter 负责OS层的操作,如挂载
  • OS Driver 负责具体OS操作的实现
  • Storage Adapter 负责对接存储、管理存储信息
  • Storage Driver 负责对接具体存储平台的实现,包括卷创建、映射等操作

    ruby-gems

Docker生态近两年来发展迅速,存储卷管理组件目前还没有形成事实的标准,EMC开源的REX-Ray实际为其文件、对象和弹性云存储更快的融合到社区提供了粘合剂,有关REX-Ray具体的信息可以参考: