搜故事,从300万个故事到海量知识百科的华丽转变!

从网络文件系统到对象存储 聊聊对象存储的前世今生

时间:2020-01-14

网络文件系统的产生有几十年的历史了,但是由于在互联网盛行的当下无法满足某些需求,于是对象存储产生了

提示:本文共有 2162 个字,阅读大概需要 5 分钟。

每种技术的产生都有其原因,也有其渊源。网络文件系统的产生有几十年的历史了,但是由于在互联网盛行的当下无法满足某些需求,于是对象存储产生了。今天我们就从

从网络文件系统说起

早些时候的企业级架构普遍采用网络文件系统,这其中最为著名的就是Sum的NFS了。微软也有类似的网络文件系统,也就是SMB。网络文件系统的原理很简单,其目的就是将存储系统上的文件系统映射到计算节点(比如Web服务器)。这样可以实现存储资源的共享,提高存储资源的利用率。具体映射方式如下所示。

但是文件系统有个天然的缺点。由于文件系统空间组织的特点,导致对文件访问的时候需要比较多次的磁盘访问。

以Ext4文件系统为例,文件系统将磁盘空间分为两个主要的区域,一个是元数据区,用于存储文件inode等信息;另外一个是数据区,用于存储文件的数据,也就是用户数据,具体如下图所示。

这样,当我们访问一个文件的时候,首先需要找到文件对应的inode,然后根据inode信息找到数据的位置,并读取数据。这个过程可能要涉及到2-3次的磁盘访问。对于互联网应用来说,多次磁盘访问会显著降低性能,影响用户的体验。

当然,除此之外还有其它一些问题,比如横向扩展能力等。其实本质上来说,文件系统的目的是一个通用的存储形态,其目的是为了适用大多数的应用场景(比如文件锁,扩展属性,ACL等等)。而网络文件系统为了保证与文件系统语义的一致性,也需要实现这些特性,这就导致网络文件系统比较臃肿。

对象存储解决的问题

由于上述缺点,传统的网络文件系统是完全无法满足互联网领域应用的。我们举一个例子,以FaceBook为例,其每秒钟都有几十万次的照片检索请求。其存储的照片总量每天新增3.5亿张,对应的存储增量大概在300TB左右。如果对应物理设备,每天大概需要新增上百块硬盘。

这种问题在任何互联网公司都会遇到的问题。比如国内的头条,淘宝或者京东等等,在它们的平台上每天也要产生海量的图片访问。传统存储很难满足其性能和扩展性的要求。

虽然互联网应用对性能和容量的要求极高,但是对其它特性却没什么特别的要求。甚至可以说它对其它特性基本上没有太多要求。由于其存储的主要是图片,而且对图片的存储是一次存储,多次访问,没有修改。

为了解决上述问题,对象存储应运而生。可以看出对象存储解决的问题很集中,如何保证横向扩展能力、降低访问延时。而不需要实现文件系统的其它额外特性(后面我们会介绍对象存储还有一些高级特性)。下面是维基百科对对象存储的定义。

Object storage (also known as object-based storage) is a computer data storage architecture that manages data as objects

从定义可以看出,对象存储在数据处理层面的特点是将待处理的数据看作一个整体,这也就是为什么把它称为对象,而不是文件了。

其实对象存储也并非全部如此简单,很多对象存储也实现了比较复杂的功能特性。比如S3对象存储可以支持大数据处理、扩展属性和二次处理(比如照片的转换,水印等)等特性。

对象存储的常见架构

为了让大家对对象存储有更加深刻地理解,我们介绍一下常见对象存储的架构。虽然亚马逊的S3非常出名,但是并没有公开太多技术信息,其架构也无从了解。今天本文将介绍一下比较流行的其它对象存储的架构。

Swift对象存储

首先介绍一下开源对象存储Swift的架构。Swift是OpenStack的一个子项目,是非常流行的开源对象存储软件。Swift在OpenStack中主要用作虚拟机镜像,其特点也是存储大对象。对于小对象则想多弱势。

Swift最主要的是实现横向扩展能力,其前端有一个Proxy组件,该组件实现了数据的分发服务。该组件可以具备多个实例,每个实例可以安装在一台物理服务器。由于Proxy可以横向扩展,因此不会成为性能瓶颈。

在Proxy中最核心的算法是进行数据放置的一致性哈希算法。该算法实现了将一个对象映射到物理设备的过程。为了保证整个系统的可靠性和可用性,Swift将设备划分为若干等级,比如Zone,Host和Disk。通过不同设备的分发,实现故障域的隔离。

如上图哈希算法,首先将物理设备映射到哈希环上;当有对象访问的时候根据对象名称计算出哈希值,然后将对象映射到具体的物理设备上。

Haystack对象存储

Facebook这对其照片应用开发了Haystack对象存储。Haystack与前面Switf的差异是其存储的是小对象。因为图片通常在10MB以下,大部分在KB级别。因此Haystack除了保证系统的横向扩展能力外,其最主要的是实现对小文件的处理。

前面我们说过,对于小文件的性能问题,普通文件系统的问题在于多次读盘操作。而Haystack正式解决了该问题。

Haystack的做法非常简单,它将多个小文件作为一个大文件的局部数据,这个局部数据称为needle。同时Haystack构建了一个描述needle在大文件中位置的索引文件。由于索引文件比较小,因此可以一次性的加载到内存当中。

通过这种方式,当客户端需要访问数据的时候,在存储节点可以直接从内存中得到数据的位置,并一次从磁盘上读取数据。这样访问存储的性能得到大幅的提升。

看到此处说明本文对你还是有帮助的,关于“从网络文件系统到对象存储 聊聊对象存储的前世今生”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
我与鸡蛋的前世今生  带你了解不一样的鸡蛋故事

我与鸡蛋的前世今生 带你了解不一样的鸡蛋故事

喂鸡,平台,时候,气味,鸡蛋,那个时候,常在,想家,网易,东西,二氧化硫,内容,图片,年代,姐姐,场景,母鸡,见证,用户,过程,视频,食物,服务,以为自己,你应该,到这里,信息存储,包括在内,才知道,是一种享受

2020-06-08 #经典故事

Agrade睿达带你全面了解SD卡的前世今生

Agrade睿达带你全面了解SD卡的前世今生

速度,标准,脚位,信号,容量,写入速度,最高标准,产品,传输速率,等级,读写速度,存储卡,单排,尺寸,总线,界面,理论,设备,设计,不同形状,标准尺寸,模式理论,东芝公司,和美,日本松下公司,主机,主力,全称,全双工,历程

2019-01-09 #长篇故事

前世今生:前世爱情执着 今生放下

前世今生:前世爱情执着 今生放下

爱情,执着,前世今生,公主,佛法,爱情故事,高僧,大唐盛世,个案,一生,众生,字数,图片,前段时间,小妖,心意,终身,对公,一个美丽,他的心,就这样,美丽的公主,那一世,这个故事,在给,在庙,爱上了,讲述了,结束了,表明了

2020-07-18 #长篇故事

前世今生前世今生影评

前世今生前世今生影评

故事,露西,纪录片,案例,地方,孩子,家庭,祖父,概率,父母,记忆,影响,家人,客观性,女孩,客观,小孩,小女孩,肺动脉,讲话,问题,这个故事,谁知道,得多,才让,在河边,心理学家,好的,家和,亲人

2020-07-17 #经典故事

前世与今生关于前世今生的看法 可以探讨前世今生 三生石上刻姻缘 爱问知识人

前世与今生关于前世今生的看法 可以探讨前世今生 三生石上刻姻缘 爱问知识人

一世,就会有,某一个人,中因,好感,亲人,因果,人生,人生路,恩恩怨怨,恶果,过程,相续,阿弥陀佛,就学,生活,一次又一次,这种感觉,清楚明白,这一世,还不错,不知不觉,生生世世

2020-07-17 #经典故事

前世今生来世的句子 求一些关于“前世今生来世”爱情的句子

前世今生来世的句子 求一些关于“前世今生来世”爱情的句子

句子,爱情,时间,命运,前世今生,个人,习惯,夜风,圆圈,地方,时光,日子,故事,梦想,生命,目光,网友,缘分,里数,责任,美的,脚步,个人在,中继续,些什么,寂静的夜,只是一种,如果没有,我不能,就在这

2009-07-09 #故事阅读

佛说:前世今生爱情故事 前世的劫 今生的缘

佛说:前世今生爱情故事 前世的劫 今生的缘

女孩,百家号,书生,佛祖,百态,作者,未婚妻,男人,石桥,苦海,僧人,故事,才能,用心,忆君,丈夫,人间,冰雪,爱情故事,大树,女尸,家人,容颜,少女,护栏,搜狐,文章,海滩,衣服,长衫

2020-07-17 #短篇故事

佛说:前世今生爱情故事 前世的劫 今生的缘

佛说:前世今生爱情故事 前世的劫 今生的缘

女孩,百家号,书生,佛祖,百态,作者,未婚妻,男人,石桥,苦海,僧人,故事,才能,用心,忆君,丈夫,人间,冰雪,爱情故事,大树,女尸,家人,容颜,少女,护栏,搜狐,文章,海滩,衣服,长衫

2020-07-18 #长篇故事