写点什么

SwiftStack CEO 谈存储系统的演变与新存储方案的挑战

  • 2013-09-27
  • 本文字数:4006 字

    阅读完需:约 13 分钟

作为 OpenStack 项目在对象存储方面的核心项目,Swift 在这几年的发展十分迅速。SwfitStack 是一家提供 Swift 部署与管理服务的硅谷初创企业,在 OpenStack 开发者社区非常活跃。

在 2013 年 9 月的 Cloud Connect China 大会上,SwiftStack 的 CEO Joe Arnold 在现场跟同事一起主持了一场动手实验室,通过他们的在线服务快速搭建一个 Swift 环境。InfoQ 编辑在现场跟 Joe Arnold 进行了一些交流,聊了一些有关存储会如何演变、新存储方案的挑战等话题。

InfoQ:存储分为三种:块存储,对象存储,文件存储。你认为这种分类会发生变化吗?

Joe:对于我们来说,我们服务的是数据中心。想想我们服务的应用是什么样的,我们的客户是做什么的——比如刚刚加入的新客户迪士尼,他们是做什么的?游戏。他们构建应用。他们的数据不在笔记本电脑上也不在手机上,而是在云端,比如数据中心之类的地方。我们提供的存储平台主要用于在云端存放视频、照片、文档等类型的数据。

对于迪士尼而言,他们的游戏是用户产生内容的,我们就需要为很多用户提供数据存储和读取的服务。我们擅长的是在很大的数据中心处理非常多的数据,面向非常多的用户。因为这样的需求,才产生了新的存储系统。

你提到的三种存储类型,就我们的情况而言,文件存储基本上不太用。以前文件存储主要是要求高性能,因为数据库需要处理一些交易工作,它需要对文件上锁,然后去对数据库做更新。

我们现在需要另一种存储,针对非结构化的数据。在这种使用情景下,我们不需要像传统的文件系统那样去做文件锁什么的,你只要保存很多份就行了。数据保存了就永久在那儿了,不需要去删它或者改它,当然这意味着我们必须要把存储做的很便宜。所以在数据中心里面,文件存储逐渐在被替换掉。

InfoQ:像是 Swift、Ceph 和 Gluster 这样的云存储,跟传统的 POSIX 文件系统相比,最根本的区别在哪里?新的存储系统主要是为了解决什么问题?

Joe:正如上面所说,传统的模式面向单一应用、小数量用户的情景,比如企业架设一台邮件服务器或者内网统计系统,都是比较小规模的环境。新的用户案例是大型应用,这包括用户网络的应用,以及企业级的 SaaS。Web 应用和移动应用的用户量都非常大,在这种场景下,POSIX 系统不可能满足如此巨大的扩展需求,它们构建的系统只会变成一个一个数据孤岛:这里建一个存储系统,那里再建一个存储系统,不同地区的用户访问不同的系统——我们把这个策略叫做分片。建造系统不仅浪费时间,从运维管理的角度这也带来了太多复杂性。

所以,我们需要的下一代存储系统是一个统一的存储系统——无论有多少设备组成,它都是在一个存储系统下面。这样对应用开发者而言更容易开发,对运维而言更容易维护和扩容。添加节点,系统自动进行负载平衡,开发者也不需要变更任何代码,也不需要将新版本的应用手动推送给所有的用户,整个环境变得大大简单了。

InfoQ:也就是说,个人设备仍然会用老的 POSIX 文件系统,只不过数据中心需要新的方案。

Joe:没错。比较典型的大型用户场景有照片分享,游戏,通讯工具等。从公司业务的角度,我们看到游戏对于这种新型存储的需求非常大。另外还有企业文档共享的使用情景。还有视频音频。大家不再用磁带了。我们把数据丢到存储系统里,它们就可以通过 HTTP 被服务出去。

对于视频、图片、文档而言,通过 HTTP 传输的好处就是方便。你在你的移动设备或者浏览器上,你不是通过 POSIX 接口从互联网上拉数据下来的,也不是 ISCSI,不是光纤通道。你用 HTTP。在数据中心提供天然支持 HTTP 的对象存储,意味着应用可以立刻访问到这些数据。

InfoQ:Swift 采用 Ring 机制来记录每一块数据都保存在集群的什么地方。这种方案的运行状态如何?最近有哪些进展?

Joe:正好,我们最近刚刚对 Ring 引入了非常棒的一些新特性。

Ring 的工作原理是一个分布式哈希表,它做的是将一个存储 URL 对应到物理存储位置上。这是一个抽象映射,中间有一个环节叫做分区空间(partition space)。也就是说,Ring 是分区空间的哈希表。我们将所有的分区分散的分布到整个存储系统里面。

这种方式非常有效,查询的速度非常快,一致性强,每一个组件都是分布式系统中的一部分,没有单点。

这个用户体验是比较好的,我们有一个客户,做的是账务报告类的应用。比如你出去旅游,拿到票据,你就对票据拍照,将照片上传。这可以用于报税、补助之类的场景。他们做的就是建立了一个跨两个地区的集群。默认情况下,用户从离他最近的数据中心获取数据。如果其中一个地方出了问题,所有人会被路由到那个好的数据中心,访问不受到影响。

InfoQ:你提到跨两个地区的一个集群,而不是两个集群。这一个集群可以有多大?

Joe:可以到几百 PB。今天早上我刚听到一个说法:“我们建设的不是数据中心,而是数据城市”,因为数据中心实在太大了。

我们在 Ring 上做的另一个酷功能是创建存储策略的特性。存储策略可以用来指定地域,比如客户可以选择离他们的客户近的几个地方的数据中心。存储策略还可以用于区分重要的数据和不重要的数据,比如有些数据我们把它放在比较快的硬盘上,有些数据放在慢一点的硬盘上也无妨。

我想说的最后一点是抹除码( erasure coding )。抹除码是相对于复制而言的。使用复制的情况,我们对一个文件做几个副本,放在不同的地方,再去管理它们。

抹除码的思路,简单来说,是将文件转换成一个碎片集合,每一个碎片很小,碎片被打散分布到一组服务器资源池里。只要存留的碎片数量足够,就可以合成为原本的文件。这可以在保持原本的数据健壮性的基础上大大减少需要的存储空间。我们希望能在下一个四月大版本上引入这一批特性。

InfoQ:之前,你提到 SwiftStack 带来了更多的便捷性、可控性和成本降低。你提到了部署、运维、扩容操作的简化。能否举例说明部署这样一个存储集群到底如何方便吗?

Joe:SwiftStack 是 Swift 项目的头号贡献者之一,这个项目的首席技术和很多核心贡献者都来自我们团队。当然,上述提到的特性并不是我们自己在做的,也有其他公司的贡献,包括 Intel 等。

大型分布式系统的部署、管理、运维、扩容都是非常复杂的,我们希望通过软件降低这个复杂性。所以我们将扩容做了自动化,我们为不同的环境提供了集成方案,以便于快速建立一个集群。

举个例子吧。我们有个客户是做体育节目直播的。部署的时候,我们派了五个运维过去给他们做培训。所有的服务器、布线都弄好了,培训也做好了之后,安装只用了一天时间。

正常你要自己部署一套 Swift 环境,用三个月做评估和测试是很正常的,因为安装过程中的可选项太多了。开源提供自由选择,但是自由过了头,你面对成千上万个选项,很容易在里面浪费很多时间。

InfoQ:这个意思是说,原本我部署一套 Swift 需要评估上千个属性怎么设置,但是使用 SwiftStack 安装的话,可能就三五个选项?

Joe:差不多,我们将整个部署过程简化为一个安装流程,跑完这个流程是很快的。当然,我们也给客户做培训,教他们自己调优一些配置。事实上,我们专门写了一本书介绍如何进行配置调优。只不过,很多人做了这些练习,了解到这些配置之后,最终还是决定不要自己折腾,交给我们提供服务更加简单一些。

我们的服务模式是,提供一个管理控制器的在线服务,而客户的数据还是保存在自己的数据中心里面,我们通过管理控制器帮他们做管理。我们在美国的管理控制器负责支持美国的客户。对中国客户,我们在上海建立了一个新的管理控制器,可能几个月之后就会开始正式面向中国客户运营。到时候大家可以通过我们的合作伙伴 99Cloud 获取这个服务。

InfoQ:对于存储服务而言,降低成本的常用方式是什么?各个方案的成熟度如何?

Joe:最常用的方式自然是用便宜的硬件。我们更关注机箱里面的组件,而不关注整机品牌。我们有一些推荐的组件品牌,比如 LSI、希捷、Intel 等。不同组件的配置比例则取决于用户的场景,我们自己采用了 Open Compute 建议的配置比例。此外,Quanta、Supermicro 和 Dell 也有跟我们兼容的设备。服务器就是 IBM 和 HP。

客户自己选择硬件,而且经常选择不同的品牌混在一起用。可能这六个月用这家的,后面六个月用另一家的,不同品牌的组件可以放在一起组成一个系统。我们希望将存储从底层硬件当中抽象出来,这样我们对设备类型的依赖会更小,成本就会下来。

抹除码可以减少储存文件副本需要的存储空间。复制的方式很适合需要快速读取数据的情景,比如文件共享类应用,一个用户刚刚上传一个文件,这时候很多其他的用户会需要去获取这个文件,这种情况比较适合复制的方式。

如果你有一些老数据要做备份,基本没什么人要去访问它们了,这时候你可以采用抹除码的方式对它们进行存储。用户访问的速度可能慢了个半秒钟或者一秒钟,但数据的健壮性是不受影响的。对于这种情况,抹除码意味着可以节省一些硬件费用。

InfoQ:是的,我看你之前说能够节省到 50% 的成本。

Joe:这是有可能的,但这数字不是绝对。从数据足迹的角度,数据足迹是降低了 50%,不过因为你需要另外购买强大的硬件来实现抹除码的操作,成本的降低并不一定有这么多。

InfoQ:使用抹除码会造成更多 CPU 和网络的消耗,更多电力消耗,这个平衡要如何实现?

Joe:这个问题很好,因为它没有明确的答案。

你去对数据做抹除码的时候,往往是在一个数据中心内做,而不会跨数据中心做,因为跨数据中心的网络延时和成本太高。在一个数据中心内,数据转移的成本是相对更低的,10Gb 以太网也不会特别贵。

抹除码主要牺牲的是请求延时,因为你需要从多个服务器获取碎片,每台服务器都需要到硬盘上找到你要的那一块,然后把它们组合成原本的文件,这个过程又需要比较多的 CPU。所以你需要做的是权衡,你的应用和用户是否能够接受这个条件。

嘉宾简介:

Joe Arnold,SwiftStack CEO,创始人。Swift 是第一个由 Rackspace 之外发起的 OpenStack 子项目。目前,Joe 的工作重心在于开发用于部署和管理 OpenStack Swift 的工具上。

注:本采访由 InfoQ 编辑跟 CSDN 编辑一起进行,采访内容双方共享。

2013-09-27 00:211541

评论

发布
暂无评论
发现更多内容

【JVM故障问题排查心得】「GC内存诊断」一文教你如何打印及分析JVM的GC日志(实战分析上篇)

洛神灬殇

JVM GC 4月日更 GC日志

《嗨,城市猎人》首播,揭秘猎头行业职场真实状态

Geek_2d6073

深入了解 WebAssembly —— 一种新的 Web 可执行文件格式

NGINX开源社区

nginx webassembly

CloudQuery 社区版回归直播即将开启

BinTools图尔兹

直播 社区版

浪潮海岳低代码平台inBuilder开源社区版正式发布

inBuilder低代码平台

开源 低代码平台

3DCAT实时云渲染助力广府庙会元宇宙焕新亮相,开启线上奇趣之旅!

3DCAT实时渲染

元宇宙 实时渲染云 3D实时云渲染

华为,找寻科技秋天里的春光

脑极体

通信 算力

软件测试/测试开发丨接口测试配置的数据驱动

测试人

软件测试 自动化测试 测试开发

测试用例该如何编写?

测吧(北京)科技有限公司

测试

如何使用 Linux find 命令查找文件?

wljslmz

三周年连更

算法题每日一练---组合总和

知心宝贝

数据结构 算法 前端 后端 三周年连更

Linux内核中的C语言宏:常见用法和最佳实践

Linux内核拾遗

Linux C语言

易观千帆 | 2023年3月银行APP月活跃用户规模盘点

易观分析

金融 经济 手机银行

数据生产压力突增23倍,平台“可观测性”如何帮这家制造集团排忧解难? | 奇点云技术分享

奇点云

数据中台 可观测性 制造业 奇点云

CSA GCR大会正式发布全球首个云渗透测试认证专家课程,腾讯安全获评“特别贡献单位”

腾讯安全云鼎实验室

云安全

TikTok视频怎么无水印保存到相册?这有啥难的,跟我学轻松变大神~

frank

TikTok

【Python 实战】Python 采集二手车数据——超详细讲解

BROKEN

三周年连更

ShareSDK Android SDK API

MobTech袤博科技

国家工信安全中心权威认证!

百度开发者中心

工业互联网 百度飞桨 文心一言

Vue3 内置组件

程序员海军

Vue 3 三周年连更

一文初探 Go reflect 反射包

陈明勇

Go golang 反射 三周年连更

Groovy as关键字性能测试

FunTester

火爆的低代码开发具有哪些技术特点?

力软低代码开发平台

ChatGPT:改变未来沟通方式的人工智能语言模型

wisonzhu

selenium源码通读·8 |webdriver/common/keys.py-Keys类分析

Python 自动化测试 测试框架 源码剖析 selenium

玩转AIGC,5分钟 Serverless 部署 Stable Diffustion 服务

Serverless Devs

Serverless AIGC Stable Diffustion

OMG!这个Ins快拍保存到相册的办法绝了!还在犹豫什么,都给我冲!

frank

Instagram

devops如何使用chatgpt提高工作效率

wisonzhu

DevOps

图数据库 NebulaGraph 的 Java 数据解析实践与指导

NebulaGraph

Java 数据库

SwiftStack CEO谈存储系统的演变与新存储方案的挑战_服务革新_sai_InfoQ精选文章