成都科汇科技有限公司

Kehui Technology Co., Ltd.

成都科汇科技有限公司
拥有15年 数据存储  专业经验 的私有云 解决方案商
产品中心
新闻中心
存储的三种类型 块存储 文件存储 对象存储 区别
来源: | 作者:pmo0996ba | 发布时间: 2017-09-02 | 2082 次浏览 | 分享到:
存储类型 大致有三种:块存储 文件存储 新出现的 对象存储

批个比方来说, 块存储,就像跑车,性能卓越,
                     文件存储,就像货车,能拉多一点,速度中规中矩。
                     对象存储:像货轮,能装,且海量。

块存储:
blocked storage 
顾名思议,是以块为单位,实际是指以扇区为基础,一个或多个连续的扇区组成一个块,也叫物理块。块存储实际上是 管理到数据块一级,相当于直接管理硬盘的数据块。物理块与文件系统之间的关系图:映射关系:扇区→物理块→逻辑块→文件系统

具体操作就是,把裸设备(硬盘)组成的逻辑盘,按LUN来处理。通过映射的方式,交付主机管理。主机的文件系统,无法知道是管理的具体物理盘,还是逻辑盘。因为其都要分区,格式化,才能使用。跟普通PC 新装系统差不多。




文件存储

简单说,就是文件系统存储,文件系统是操作系统概念的一部份,就是如何存放,访问文件的架构方法,换句话说,可以说是NAS存储
或者说是 文件管理系统与硬件融合的一体机。数据的访问,交给集成在一起的文件系统,而不是由主机来访问了,有了接口,就可以接驳不同的操作系统,如AIX,IOS,安卓,windows ,linux ,等等 ,这就给分享带来的极大的便利。

成本:成本低,无需SAN一样的专用设备。任何一台PC装上文件系统,就可以实现文件存储。
管理:易管理,易维护
特点:易分享
缺点:因采用上层协议, 因此开销大, 延时肯定比块存储高。速率低,通过以太网传输,稳定性稍差。




对象存储
英文 OSS  object storage service  
其诞生的缘由,就是块存储与文件存储的 优点结合 。即兼顾访问速度又便于分享。
将所有的存储的目标看作一个对象,在外面封装一层,这个很好理解。
可以简化理解为 云存储,对象的由来,不是直接打开,编辑文件。大致是因为其访问方式是通过API的方式,其存放方式,按云架构的,分布式 解耦合式,存储
你只需理解其在云端或“桶”中,无需具体关心数据在哪个服务器,或哪块盘。

对象存储优点:其实就是云的特点:
1高可用性,且无需像raid 一样,破坏后重建需几小时或几天来重建。
2、易管理性: 全托管服务,除了容量及性能的扩展以外,还提供安全、容灾的能力。 因为基本就是无需管理。3.弹性扩展,scale out 模式,无需考虑架构,需要多大容量都方便获得。
应用的特点是,各APP 存放,管理,数据。便地进行横向扩展以适应大量用户高并发访问的互联网产品场景。
商用产品:七牛 阿里云的开放存储服务OSS
接口:RESTful API



对于大多数文件系统来说,尤其是POSIX兼容的文件系统,提供open、close、read、write和lseek等接口。

而对象存储的接口是REST风格的,通常是基于HTTP协议的RESTful Web API,通过HTTP请求中的PUT和GET等操作进行文件的上传即写入和下载即读取,通过DELETE操作删除文件。

(图片内容来自SwiftStack)

对象存储和文件系统在接口上的本质区别是对象存储不支持和fread和fwrite类似的随机位置读写操作,即一个文件PUT到对象存储里以后,如果要读取,只能GET整个文件,如果要修改一个对象,只能重新PUT一个新的到对象存储里,覆盖之前的对象或者形成一个新的版本。

如果结合平时使用云盘的经验,就不难理解这个特点了,用户会上传文件到云盘或者从云盘下载文件。如果要修改一个文件,会把文件下载下来,修改以后重新上传,替换之前的版本。实际上几乎所有的互联网应用,都是用这种存储方式读写数据的,比如微信,在朋友圈里发照片是上传图像、收取别人发的照片是下载图像,也可以从朋友圈中删除以前发送的内容;微博也是如此,通过微博API我们可以了解到,微博客户端的每一张图片都是通过REST风格的HTTP请求从服务端获取的,而我们要发微博的话,也是通过HTTP请求将数据包括图片传上去的。在没有对象存储以前,开发者需要自己为客户端提供HTTP的数据读写接口,并通过程序代码转换为对文件系统的读写操作。



对比文件系统,对象存储的第二个特点是没有嵌套的文件夹,而是采用扁平的数据组织结构,往往是两层或者三层,例如AWS S3和华为的UDS,每个用户可以把它的存储空间划分为“容器”(Bucket),然后往每个容器里放对象,对象不能直接放到租户的根存储空间里,必须放到某个容器下面,而不能嵌套,也就是说,容器下面不能再放一层容器,只能放对象。OpenStack Swift也类似

这就是所谓“扁平数据组织结构”,因为它和文件夹可以一级一级嵌套不同,层次关系是固定的,而且只有两到三级,是扁平的。每一级的每个元素,例如S3中的某个容器或者某个对象,在系统中都有唯一的标识,用户通过这个标识来访问容器或者对象,所以,对象存储提供的是一种K/V的访问方式。

(图片内容来自华为)

采用扁平的数据组织结构抛弃了嵌套的文件夹,避免维护庞大的目录树。随着大数据和互联网的发展,如今的存储系统中,动辄数百万、千万甚至上亿个文件/对象,单位时间内的访问次数和并发访问量也达到了前所未有的量级,在这种情况下,目录树会给存储系统带来很大的开销和诸多问题,成为系统的瓶颈。反观目录结构的初衷——数据管理,如今作用非常有限,我们已经很难通过目录的划分对文件进行归类和管理了,因为一个文件最终只能放到一个文件夹下,作为目录树的叶子节点存在,而文件的属性是多维度的。目前各类应用中广泛采用元数据检索的方式进行数据的管理,通过对元数据的匹配得到一个Index或者Key,再根据这个Index或者Key找到并读取数据,所以,对象存储的扁平数据组织形式和K/V访问方式更能满足数据管理的需求。

不难看出,对象存储有着鲜明的互联网和大数据时代的特点,随着“互联网+”的推进,互联网技术正在渗透到各行各业,数据量也在成指数倍数增长,对象存储将发挥越来越大的作用。



从接口的角度来分享不同:
它们就是不同的接口。块存储就是最接近存储介质的接口,也就是包装最薄的,或者说没有包装。
文件都是对块存储的包装。简包。
可以简单认为对象存储就是不分层次的文件存储。或者把文件看作对象存储的进一步包装。
大礼包。
对象存储和我们经常接触到的硬盘和文件系统等存储形态不同,它提供Key-Value(简称K/V)方式的RESTful数据读写接口,并且常以网络服务的形式提供数据的访问。但经过多年的发展,我们现在通常认为AWS S3或者Swift才是对象存储。

我们也可以从提供服务的角度来看待他们的不同:

对象存储提供的服务类似于hashmap这种数据结构,将对象数据作为一个逻辑单元存储起来,通过key来获取。更多的操作是获取,删除。更新操作频率比较低。相应的,对象存储比较适合于存放静态数据或者更新频率比较低的大容量数据。比如一些多媒体数据,数据备份等。

块存储通常提供的原始块设备,就是裸磁盘空间,比如将逻辑盘映射给主机使用。分布式环境中,一些对实时性要求比较高的存储我们就得用块存储了,比如数据库。

文件存储就比较好理解了,FTP,NFS等。