Swift云存储特性研究 – 牛皮糖NewPtone – 博客园

0.What is swift?

OpenStack Object Storage (Swift) 是用来创建冗余的、可扩展对象存储(引擎)的开源软件。 swift使用标准化的服务器存储 PB 级的访问数据。它并不是文件系统或者实时的数据存储系统 ,而是一个用于存储永久类型的静态数据的长期存储系统 ,这些数据可以检索调整必要时进行更新。适合存储的数据类型的首要例子是虚拟机镜像,图片存储,邮件存储,存档备份。因为没有中心单元或者主控结点swift提供了更强的扩展性、冗余和持久性。

1.When did the swift start? 

OpenStack Object Storage 最初由 Rackspace 开发,并于 2010 年 7 月贡献给 OpenStack ,作为该开源项目的一部分它的目的是用于托管 Rackspace的 Cloud Files service ,原始项目代号 swift,所以沿用至今

2.Whats the Advantages of swift?

Swift vs MogileFS

MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,主要由Tracker and Database Storage NodesClient 组成,其中系统的元数据都存储在单一的数据库中,写操作只能在单个的master上,因此无法水平扩展数据库的写能力,这影响了的可扩展性。此外,在大并发访问下,数据库将成为瓶颈,所有的服务器和用户都会受此影响。Swift的早期原型基于MogileFS-style,由于元数据数据库无法扩展,该方案最终废弃。

 

 

 

 

特性

 

 

优点

 

 

 

 

通过编程语言封装的API来存储和管理文件

 

 

使资源的管理和提取自动化

 

 

 

 

可以创建公共或私有的容器

 

 

更好的控制性。既允许数据共享也可以设为私有

 

 

 

 

使用商用硬件

 

 

没有锁定,每GB更低廉的价格

 

 

 

 

硬盘驱动器/结点不可预知的失效

 

 

具有自我修复的可靠性,数据冗余性来保护失效的影响

 

 

 

 

无限制的存储

 

 

巨大且扁平的名称空间,高度可伸缩的读写访问能力,直接从存储系统提供内容服务

 

 

 

 

多维可伸缩性(向外扩展的结构)

允许垂直和水平分布地调整存储

 

 

以线性的性能来备份/存档大量数据

 

 

 

 

帐号/容器/对象 没有嵌套,不是传统的文件系统

 

 

规模优化,允许百万个PB级别的对象

 

 

 

 

内建复制

(帐号、容器、对象的N份拷贝)

3x+的数据冗余性与RAID2x的对比

 

 

高可靠性

 

 

 

 

不同于RAID的大小调整,非常简单的容量增减

 

 

简单的弹性的数据调整

 

 

 

 

没有中央数据库

 

 

更高的性能,没有瓶颈

 

 

 

 

不需要RAID

 

 

允许更有效地处理大量小型、随机的读写

 

 

 

 

内建Mgmt.工具

 

 

帐号管理:创建,增加,验证,删除用户

容器管理:上传,下载,验证

监测:容量、主机、网络、日子筛选、集群健康情况

 

 

 

 

驱动器检查

 

 

允许检测驱动器失效,尽早知悉数据受损

 

 

 

 

通过web浏览器使用VNC代理

 

 

快速、简单的命令行管理

 

 

 

 

4.Whatgood use cases for Swift?

· 存储媒体库(照片、音乐、视频等

· 视频监控文件的存档

· 电话呼叫音频记录的存档

· 压缩日志文件的存档

· 备份存档(每个对象<5GB) 

· 存储和加载系统的镜像文件等

· 存储数量不断增加基数庞大的文件

· 存储小型文件 (<50 KB). OpenStack Object Storage擅长于此

· 存储数以亿计的文件

· 存储PB级别的数据

5.Whats limitations of Swift?

不是文件系统

Swift使用REST API,因此不能使典型的POSIX 文件系统的语法如open(), read(), write(), seek()close()

没有目录结构

可以创建任意数量的容器,但是不支持嵌套

在文件中没有写入字节偏移量

The only way to update a file is to essentially overwrite it. The system creates a new version of an object each time you upload one with the same name.

上传一个文件的唯一方式本质上就是重写这个文件。当你上传一个相同名字的对象时,系统就创建这个对象的新版本。

不是数据库

不支持服务器上的数据查询和处理。值可以列出指定容器内的对象,但是不能基于对象的元数据进行查询。

不要尝试频繁地更新大对象

所有的更新将会产生对象的新版本,因为对象是不可变的。

不要在每个容器内存储超过无限的对象

adrian otto 发现当容器的对象数超过100万个对象时,将会影响性能。

来源URL:http://www.cnblogs.com/yuxc/archive/2012/05/11/2495267.html