对象存储、块存储、文件系统存储概念与区别

一、概念及区别

针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。这三者的主要区别在于它们的存储接口:

1.  对象存储:

  也就是通常意义的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展,如七牛、又拍,Swift,S3

2. 块存储:

  这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)

3. 文件存储:

  通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。

二、IO特点

按照这三种接口和其应用场景,很容易了解这三种类型的IO特点,括号里代表了它在非分布式情况下的对应:
1. 对象存储(键值数据库):

  接口简单,一个对象我们可以看成一个文件,只能全写全读,通常以大文件为主,要求足够的IO带宽。

2. 块存储(硬盘):

  它的IO特点与传统的硬盘是一致的,一个硬盘应该是能面向通用需求的,即能应付大文件读写,也能处理好小文件读写。但是硬盘的特点是容量大,热点明显。因此块存储主要可以应付热点问题。另外,块存储要求的延迟是最低的。

3. 文件存储(文件系统):

  支持文件存储的接口的系统设计跟传统本地文件系统如Ext4这种的特点和难点是一致的,它比块存储具有更丰富的接口,需要考虑目录、文件属性等支持,实现一个支持并行化的文件存储应该是最困难的。但像HDFS、GFS这种自己定义标准的系统,可以通过根据实现来定义接口,会容易一点。

  因此,这三种接口分别以非分布式情况下的键值数据库、硬盘和文件系统的IO特点来对应即可。至于冷热、快慢、大小文件而言更接近于业务。但是因为存储系统是通用化实现,通常来说,需要尽量满足各种需求,而接口定义已经一定意义上就砍去了一些需求,如对象存储会以冷存储更多,大文件为主。

三、Ceph的对象存储、块存储、文件系统存储

  Ceph同时支持这三种存储,方法就是通过支持不同的接口来支持不同的存储。下面是Ceph的基本架构图,可以看到通过兼容AWS的S3和OpenStack的Swift接口来支持对象存储,通过librbd库提供块存储的接口,通过libcephfs库的文件系统接口或标准posix接口来支持文件系统存储。

(全文完)

参考:

1. 王豪迈的回答:有关分布式存储的三个基本问题

2.《Ceph源码分析》

时间: 2024-10-13 09:35:21

对象存储、块存储、文件系统存储概念与区别的相关文章

[转载] 对象存储(2):OpenStack Swift——概念、架构与规模部署

原文: http://www.testlab.com.cn/Index/article/id/1085.html#rd?sukey=fc78a68049a14bb228cb2742bdec2b9498806815fcb59399eee501874bb9e9086bce3050baf1438179330d72d2508871 摘要:开源的最大魅力,是能够满足人们的探索欲和求知欲,让我们可以很深入地了解一个系统,如果我们发现它的设计或者实现中有任何不合理的或者错误的地方,我们可以提出自己的想法并且实

C# CLR via 对象内存中堆的存储【类型对象指针、同步块索引】

最近在看书,看到了对象在内存中的存储方式. 讲到了对象存储在内存堆中,分配的空间除了类型对象的成员所需的内存量,还有额外的成员(类型对象指针. 同步块索引 ),看到这个我就有点不懂了,不知道类型对象指针是什么,指向的什么? 从网上找也没有找到,最后往下看,书中有些描述.说下我的理解: 类型对象指针:指向类型对象存储的地址,假如有一个类型Person,它在堆中有一块区域存储它内部的字段和成员以及两个额外成员(类型对象指针. 同步块索引 ),类型对象的类型对象指针指向的是System.Type的地址

文件系统存储数据,与数据库系统存储数据的差别

一.文件系统与数据库系统的概念及其发展 1.文件系统  所谓的文件系统简单地说负责存取和管理文件信息的软件结构.例如电脑的硬盘C.D.E.F盘和可以动的存储设备等.文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法.也指用于存储文件的磁盘或分区,或文件系统种类.操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统.  文件系统由三部分组成:与文件管理有关软件.被管理文件以及实施文件管理所需数据结构.从系统角度来看,文件系统是对文件存储器空间

共享存储之分布式文件系统应用及MogileFS基础应用

 **什么是分布式存储:    分布式存储系统,是将数据分散存储在多台独立的设备上.传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要.分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性.可用性和存取效率,还易于扩展. 分布式文件系统设计目标: ** 访问透明** 位置透明** 并发透明** 失效透明** 硬件透明** 可扩展性** 复制

大数据存储之分布式文件系统(一)

1.Google文件系统(GFS) 使用一堆便宜的商用计算机支撑大规模数据处理. GFSClient: 应用程序的訪问接口 Master(主控server):管理节点.在逻辑上仅仅有一个(另一台"影子server",在主控server失效时提供元数据,但并非完整的热备server),保存系统的元数据,负责整个文件系统的管理. Chunk Server(数据库server):负责详细的存储工作,数据以文件的形式存储在Chunk Server上:对应GFSclient的读写请求. 总体架构

Java对象在内存中的存储

Java对象在内存中的存储分3块区域 1.对象头(Header) 2.实例数据(Instance Data) 3.对齐填充(Padding) 一.对象头 哈希码.GC分代年龄.锁状态标志.线程持有的锁.偏向线程ID.偏向时间戳 类型指针 二.实例数据 各种类型的字段(父类继承下来的.子类自身定义的) 相同宽度的字段会被分配到一起 三.对齐填充 没有特别含义,仅仅起着占位符的作用(8字节的整数倍)

深入理解计算机系统(1.3)---金字塔形的存储设备、操作系统的抽象概念

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer3.html 上一章LZ给各位展示了一下hello程序的简单执行过程,可以看出在这一过程当中,系统在数据的传输上花费了大量的时间.硬件开发商为了减少这种数据传输的时间成本,采用一种高速缓存的技术去减少这种时间成本. 高速缓存被置放于处理器当中,与处理器中的寄存器文件直接进行数据交换,这样大大减少了数据传输的时间成本,使得程序的运行速度可以得到数倍的提升.而作为一个程序猿,如果可以适当的利用高速

SDS趋势之二:对象存储将替代文件存储

首先什么是对象存储? 对象存储(Object Storage)是综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性.跨平台性以及安全的数据共享的存储体系结构. 典型应用:网盘.云存储. 上篇文章也讲到了随着科技的发展和网络技术的进步,计算机存储空间显得愈加紧张,大规模的数据增长对存储提出了新的挑战. 大家都说IDC预测,全球的数据量正面临一个爆炸性增长,到2020年即将达到44ZB.我觉得这44ZB里面有至少一半数据来自于非结构化数据,为什么这么说呢

VSAN存储结构解析;存储数据恢复的成功案例分享

今天给大家介绍一的是一款常见存储设备-Vsan的结构原理,相对而言技术性文字较多.VSAN是一种以vSphere内核作为基础开发出来的一款可以扩展使用的分布式存储架构.这款存储在vSphere集群主机中安硬盘及闪存构建出VSAN存储层,通过存储进行管理与控制,最终形成一个共享存储层.伴随着计算机网络的快速发展,vsan的存储结构也在不断的更新换代过程中,传统的存储管理机制中的底层存储不了解虚拟化和文件系统,新一代的存储管理机制将更新为基于对象存储系统.虚拟数据存储.分布式存储.下图为vsan的存