云存储系统OpenStack Object Storage(Swift)介绍

openkk 12年前

OpenStack是一个美国国家航空航天局和Rackspace合作研发的开源云计算项目,并成为Apache下的一个重要开源项目,目前已经发展到了180家公司参与其中。

OpenStack Object StorageSwiftOpenStack开源云计算项目的子项目之一。Swift的目的是使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。OpenStack Object Storage 最初由 Rackspace 采用Python语言开发,并于 2010 7 月贡献给 OpenStack ,作为该开源项目的一部分。它的目的是用于托管 Rackspace Cloud Files service ,原始项目代号是 swift,所以沿用至今。

在分布式对象存储中的一个关键问题是数据该如何存放。RingSwift中最重要的组件,用于记录存储对象与物理位置间映射关系。在涉及查询accountcontainerobject信息时就需要查询集群的ring信息。

 

先来看一下Swift文档中关于Ring的描述:

       Ring用来确定数据驻留在集群中的位置。有单独对应于Account数据库、container数据库和单个objectring

       Ring中每个partition在集群中都(默认)3replica。每个partition的位置由ring来维护,并存储在映射中。

       Ring使用zone的概念来保证数据的隔离。每个partitionreplica都确保放在了不同的zone中。一个zone可以是一个硬盘,一个服务器,一个机架,一个交换机,甚至是一个数据中心............

.......

 

在上述Ring的特性描述中提到了Ring使用zonedevicepartitionreplica等等来维护数据和磁盘间的映射信息。那么在Ring的背后采用什么算法,使用了什么机制来保证数据的安全、高效和可扩展呢?这些概念对于数据存储带来了什么好处?本文逐步深入探讨了Swift如何通过Ring组件来实现冗余的、可扩展的目的。

项目主页:http://www.open-open.com/lib/view/home/1340337150862

</span></span></span></span>