Swift云存储特性研究
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.What’s the Advantages of swift?
Swift vs MogileFS
MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,主要由Tracker and Database 、Storage Nodes和Client 组成,其中系统的元数据都存储在单一的数据库中,写操作只能在单个的master上,因此无法水平扩展数据库的写能力,这影响了的可扩展性。此外,在大并发访问下,数据库将成为瓶颈,所有的服务器和用户都会受此影响。Swift的早期原型基于MogileFS-style,由于元数据数据库无法扩展,该方案最终废弃。
特性 |
优点 |
通过编程语言封装的API来存储和管理文件 |
使资源的管理和提取自动化 |
可以创建公共或私有的容器 |
更好的控制性。既允许数据共享也可以设为私有 |
使用商用硬件 |
没有锁定,每GB更低廉的价格 |
硬盘驱动器/结点不可预知的失效 |
具有自我修复的可靠性,数据冗余性来保护失效的影响 |
无限制的存储 |
巨大且扁平的名称空间,高度可伸缩的读写访问能力,直接从存储系统提供内容服务 |
多维可伸缩性(向外扩展的结构) 允许垂直和水平分布地调整存储 |
以线性的性能来备份/存档大量数据 |
帐号/容器/对象 没有嵌套,不是传统的文件系统 |
规模优化,允许百万个PB级别的对象 |
内建复制 (帐号、容器、对象的N份拷贝) 3x+的数据冗余性与RAID的2x的对比 |
高可靠性 |
不同于RAID的大小调整,非常简单的容量增减 |
简单的弹性的数据调整 |
没有中央数据库 |
更高的性能,没有瓶颈 |
不需要RAID |
允许更有效地处理大量小型、随机的读写 |
内建Mgmt.工具 |
帐号管理:创建,增加,验证,删除用户 容器管理:上传,下载,验证 监测:容量、主机、网络、日子筛选、集群健康情况 |
驱动器检查 |
允许检测驱动器失效,尽早知悉数据受损 |
通过web浏览器使用VNC代理 |
快速、简单的命令行管理 |
4.What’s good use cases for Swift?
· 存储媒体库(照片、音乐、视频等)
· 视频监控文件的存档
· 电话呼叫音频记录的存档
· 压缩日志文件的存档
· 备份存档(每个对象<5GB)
· 存储和加载系统的镜像文件等
· 存储数量不断增加基数庞大的文件
· 存储小型文件 (<50 KB). OpenStack Object Storage擅长于此.
· 存储数以亿计的文件.
· 存储PB级别的数据.
5.What’s 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万个对象时,将会影响性能。