分布式存储

[separator headline=”h3″ title=”OpenStack 存储项目”]

[hr style=”4″ margin=”10px 0px 10px 0px”]

OpenStack 其实有三个与存储相关的组件,这三个组件被人熟知的程度和组件本身出现时间的早晚是相符的,按熟悉程度排列如下:

  • Swift—提供对象存储(Object Storage),在概念上类似于 Amazon S3 服务,不过 swift 具有很强的扩展性、冗余和持久性,也兼容 S3 API。对象存储支持多种应用,比如复制和存档数据、图像或视频服务,存储次级静态数据,开发数据存储整合的新应用,存储容量难以估计的数据,为 Web 应用创建基于云的弹性存储。
  • Glance—提供虚机镜像(Image)存储和管理,它能够以三种形式加以配置:利用 OpenStack 对象存储机制来存储镜像;利用 Amazon 的简单存储解决方案(简称 S3)直接存储信息;或者将 S3 存储与对象存储结合起来,作为 S3 访问的连接器。OpenStack 镜像服务支持多种虚拟机镜像格式,包括 VMware(VMDK)、Amazon 镜像(AKI、ARI、AMI)以及 VirtualBox 所支持的各种磁盘格式。镜像元数据的容器格式包括 Amazon 的 AKI、ARI 以及 AMI 信息,标准 OVF 格式以及二进制大型数据。
  • Cinder–提供块存储(Block Storage),类似于 Amazon 的 EBS 块存储服务,OpenStack 中的实例是不能持久化的,需要挂载 volume,在 volume 中实现持久化。Cinder 就是提供对 volume 实际需要的存储块单元的实现管理功能。
  • Amazon 一直是 OpenStack 设计之初的假想对手和挑战对象,所以基本上关键的功能模块都有对应项目。除了上面提到的三个组件,对于 AWS 中的重要的 EC2 服务,OpenStack 中是 Nova 来对应,并且保持和 EC2 API 的兼容性,有不同的方法可以实现。

三个组件中,Glance 主要是虚机镜像的管理,所以相对简单;Swift 作为对象存储已经很成熟,连 CloudStack 也支持它。Cinder 是比较新出现的块存储,设计理念不错,并且和商业存储有结合的机会,所以厂商比较积极。

[toggle title=”OpenStack 对象存储(Swift)” open=”false” icon=”star”]

OpenStack Object Storage(Swift)是 OpenStack 开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、冗余和持久性。 Swift 并不是文件系统或者实时的数据存储系统,它称为对象存储,用于永久类型的静态数据的长期存储,这些数据可以检索、调整,必要时进行更新。Swift 前身是 Rackspace Cloud Files 项目,随着 Rackspace 加入到 OpenStack 社区,于 2010 年 7 月贡献给 OpenStack,作为该开源项目的一部分。

[/toggle]

[toggle title=”OpenStack 镜像存储(Glance)” open=”false” icon=”star”]

Glance 项目提供虚拟机镜像的发现、注册、取得服务。Glance 提供 REST API 可以查询虚拟机镜像的 metadata,并且可以获得镜像。通过 Glance,虚拟机镜像可以被存储到多种存储上,比如简单的文件存储或者对象存储(比如 OpenStack 中 swift 项目),Havana 版本中 Glance 新增特性如下:

  • Multiple-Image-Location:支持镜像存储到多种不同类型的存储池。
  • More-Drivers:加入了 Sheepdog 支持,并且 Cinder 也可以作为后端存储驱动之一。

Glance 被设计为可以使用多种后端存储。前端通过 API Server 向多个 Client 提供服务。Glance 目前提供的参考实现中 Registry Server 仅是使用 Sql 数据库存储 metadata,Glance 支持 S3、Swift,简单的文件存储及只读的 HTTPS 存储。也支持其他后端,如分布式存储系统(SheepDog 或 Ceph)。

[/toggle]

[toggle title=”OpenStack 块存储(Cinder)” open=”false” icon=”star”]

OpenStack 到 Folsom 版本有比较大的改变,其中之一就是将之前在 Nova 中的部分持久性块存储功能(Nova-Volume)分离了出来,独立为新的组件 Cinder。主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动支持以与 OpenStack 进行整合。在CinderSupportMatrix中可以看到众多存储厂商如 NetAPP、IBM、SolidFire、EMC 和众多开源块存储系统对 Cinder 的支持。Havana 版本中 Cinder 新增特性如下:

  • Volume-Resize:在可用情况下调整卷大小。
  • Volume-Backup-To-Ceph:现在卷可以备份到 Ceph 集群中。
  • Volume-Migration:现在不同用户间可以透明地转移和交换卷。
  • QoS:增加限速相关的元信息供 Nova 和其 Hypervisor 使用。
  • More-Drivers:更多的存储厂商加入和完善了自己的 Cinder 驱动,如 Huawei、Vmware、Zadara。

[/toggle]