分布式存储选型

使用场景

云计算

云计算场景中, 通常使用对象存储系统来做保存文件, 例如用户上传的图片, 视频, 文档等, 或是虚拟镜像, iso镜像的内部数据. 公有云厂商通常还会基于对象存储提供SDN服务, 用来加速用户数据的访问. 而块存储则作为一种补充, 提供独立于虚拟机的(虚拟机删除数据不丢失), 方便扩展的存储设备.

对象存储由于是通过网络API提供服务的, 所以可以跨集群访问.

集群内文件共享

集群内文件共享的方案非常多, windows上的共享磁盘, linux 上的samba, nfs 等项目都提供这样的功能. 集群文件系统通常会和NAS进行对比, 以体现其在成本方面的优势. 但是, 由于传统的基于共享磁盘的集群文件系统在可扩展性方面比较弱, 有催生的分布式的集群文件系统, moosefs 就是典型的分布式集群文件系统.

集群文件系统也可以用来存储虚拟机镜像, 已达到存储节点和计算节点的分离.

直观上看, 对象存储系统与业务系统是平行关系, 而集群文件系统则通常是业务系统的一个组成部分.

选型标准

分布式存储目前主要分两大类: 块存储(文件系统, 裸设备), 对象存储. 像 NFS 这样只提供, 只提供简单磁盘共享, 缺乏扩展能力的项目, 只能叫集群存储, 而不能算分布式存储.

考虑到未来分布式存储的可能有多种应用场景, 所以我们更关注各个方案的功能是否完备. 以下是本次选型的标准.

  1. 支持对象存储, 支持主流编程语言
  2. 支持 HTTP API
  3. 支持块存储
  4. 社区成熟, 文档完善

方案对比

总览

- Ceph Taobao TFS Openstack Swift MooseFS
对象存储 YES NO YES NO
块存储 YES YES NO YES
实现语言 C++ C Python C
HTTP API YES NO[1] YES NO
语言支持 丰富 JAVA, C++ 丰富 -[2]
文档 丰富 丰富 丰富
  1. TFS 体系中有一个nginx-tfs的组件提供 Restful API 支持, 但是这个项目不知道什么原因目前已经无法访问.
  2. 直接挂载使用, 无需 SDK 或者 API 支持.

架构相关

|-|Ceph |Taobao TFS |Openstack Swift |MooseFS |
|----|----|----|----|----|----|
|MetaData冗余[1] |YES[选举] |YES[主从] |NO[3] |YES[主从]
|数据冗余[2] |YES |YES |YES |YES

  1. 元数据的安全性对于分布式存储的稳定至关重要, 元数据的丢失将导致整个集群数据的丢失.
  2. 分布式存储系统通常会将数据存储多份, 从而避免使用Raid 来保证数据安全. 一方面可以保证数据安全(可以随意重启服务器), 另一方面可以一定程度上提高读性能.
  3. Swift 使用一致性 hash 计算来确定数据存储的位置, 减少了 MetaData 的量, 但是依然有一些集群的配置信息需要存储, 这些数据被存储在 ring 中(作为 proxy server 的一部分), ring 在整个集群中只有一份, 需要手动备份. 如果ring里的信息全部丢失, 将导致集群中的数据全部失效.

对象存储相关

- Ceph Taobao TFS Openstack Swift MooseFS
用户管理 YES NO[2] YES -
配额管理 容量, 对象数 NO 容量, 对象数 -
SDK YES[1] YES YES -
S3 API YES NO NO -
Swift API YES NO YES -
对象自动过期 NO NO YES -
  1. Ceph 不提供专门的SDK, 但是可以使用Amazon S3 或者 Openstack Swift 兼容客户端.
  2. TFS 体系中有一个rcserver组件, 可以为不同的应用(用户)返回不同的 TFS 集群信息, 实际上是通过多集群部署的方式实现多用户隔离.

块存储相关

- Ceph Taobao TFS Openstack Swift MooseFS
配额管理 容量, 文件数 - - 容量, 文件数
快照 YES - - YES

由于块存储是直接挂载到操作系统上使用的, 除了使用软件本身的配额管理工具, 还可以使用操作系统的配个管理工具来实现基于用户的容量配额管理.

总结

  1. MooseFS作为老牌的分布式文件系统, 应用广泛, 文档丰富. 如果只是希望在集群内共享数据, 其实非常适合.
  2. Taobao TFS 是大厂的开源产品, 在 taobao 内部大规模使用. 官网上代码在持续更新, 但是文档的最后更新时间都停留在2011年9月, 文档极度匮乏, 很多重要功能都没有文档支持. 功能上, HTTP API 支持不完善, 目前仅有 Java 或 C++ SDK可用, 这也是生态比较差的具体表现.
  3. Swift, openstack 的核心组件. 但是只支持对象存储. 除了Swift, Openstack 体系中还有 Cinder 组件, 用来提供块存储(云硬盘)支持. 还有 Glance 用来提供虚拟机镜像管理的API, 后端使用Swift. 如果要部署Openstack, 那么 Swift 是存储系统的不二之选.
  4. Ceph, 作为独立的存储基础设施解决方案, Ceph 是一个比较理想的方案. 它同时提供对象存储, 块存储功能;API, SDK 丰富, 文档完善; 可以作为 Openstack 的存储组件使用, 代替 Openstack 中的 Swift 和 Cinder.

根据前述选项标准, 这里推荐部署Ceph系统.

参考链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 第一章 OpenStack基础 OpenStack管理的资源及提供的服务OpenStack做为一个操作系统,...
    sgt_tiger阅读 12,863评论 4 72
  • ceph简介 Ceph是一个分布式存储系统,诞生于2004年,是最早致力于开发下一代高性能分布式文件系统的项目。随...
    爱吃土豆的程序猿阅读 6,011评论 0 21
  • 本文遵循「知识共享许可协议 CC-BY-NC-SA 4.0 International」,未经作者书面许可,不允许...
    laiwei阅读 11,754评论 1 24
  • 原因:2017年4月14日 星期五 学习记录。说明:整理ceph资料。我的博客 : http://minichao...
    nicocoi阅读 8,187评论 1 9
  • 一、概述 Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目。随着云计...
    魏镇坪阅读 49,403评论 3 54