块存储、文件存储、对象存储意义及差异

关于块存储、文件存储、对象存储方面的知识在知乎上看到了个很好的解答:https://www.zhihu.com/question/21536660

通俗易懂,查了些资料做了详细的补充。

块存储

典型设备:磁盘阵列、硬盘
块存储主要是将裸磁盘空间整个映射给主机使用的。
就是说例如:磁盘阵列里面有5块硬盘,然后可以通过划逻辑盘、做Raid、或者LVM等方式逻辑划分出N个逻辑的硬盘。但是逻辑盘和物理盘是两个完全不同的概念。假设每个硬盘100G,共有5个硬盘,划分为逻辑盘也为5个,每个100G,但是这5个逻辑盘和原来的5个物理盘意义完全不同了。例如第一个逻辑盘第一个20G可能来自物理盘1,第二个20G来自物理盘2,所以逻辑盘是多个物理盘逻辑虚构出来的硬盘。
接着块存储会采用映射的方式将这几个逻辑盘映射给主机,主机上面的操作系统会识别到有5块硬盘,但是操作系统是无法区分到底是物理盘还是逻辑盘,它一概就认为只是5块裸的物理硬盘而已,跟直接拿一块物理硬盘挂载到操作系统没区别,至少操作系统感知上没有区别的。
在此方式下,操作系统还需要对挂载的裸硬盘进行分区、格式化后,才能使用,与平常主机内置的硬盘无差异。

优点

(1)这种方式的好处当然是因为通过了Raid与LVM等手段,对数据提供了保护;
(2)可以将多块廉价的硬盘组合起来,称为一个大容量的逻辑盘对外提供服务,提高了容量;
(3)写入数据时,由于是多块磁盘组合出来的逻辑盘,所以几块硬盘可以并行写入的,提升了读写效率;
(4)很多时候块存储采用SAN架构组网,传输速度以及封装协议的原因,使得传输速度和读写效率得到提升

缺点

(1)采用SAN架构组网时,需要额外为主机购买光纤通道卡,还要购买光纤交换机,造价成本高;
(2)主机之间数据无法共享,在服务器不做集群的情况下,块存储裸盘映射给主机,在格式化使用后,对于主机来说相当于本地盘,那么主机A的本地盘根本不能给主机B去使用,无法共享数据
(3)不利于不同操作系统主机间的数据共享:因为操作系统使用不同的文件系统,格式化后,不同的文件系统间的数据是共享不了的。 例如一台win7,文件系统是FAT32/NTFS,而linux是EXT4,EXT4是无法识别NTFS的文件系统的。

文件存储

 典型设备:FTP、NFS服务器
为了克服文件无法共享的问题,所以有了文件存储。
文件存储也有软硬一体化的设备,但是其实一台普通的PC机,只要装上合适的操作系统和软件,就可以假设FTP与NFS服务了,架上该类服务之后的服务器,就是文件存储的一种了。
主机A可以直接对文件存储进行文件的上传和下载,与块存储不同,主机A是不需要再对文件存储进行格式化的,因为文件管理功能已经由文件存储自己搞定了。

 优点

 (1)造价低:随便一台机器就可以,另外普通的以太网就可以,根本不需要专用的SAN网络,所以造价低
 (2)方便文件共享

 缺点

 (1)读写速率低,传输速率慢:以太网,上传下载速度较慢,另外所有读写都要1台服务器里面的硬盘来承受,相比起磁盘阵列动不动就十几上百块硬盘同时读写,速率慢了许多。

对象存储

典型设备:内置大容量硬盘的分布式服务器
对象存储最常用的方案,就是多台服务器内置大容量硬盘,再装上对象存储软件,然后再额外搞几台服务作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。
之所以出现对象存储这种东西,是为了克服块存储与文件存储各自的缺点,发扬各自的优点。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写块,利于共享的存储出来呢?于是就有了对象存储。

首先,一个文件包含了属性(术语:metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(数据)。
像FAT32这种文件系统,是直接将一份文件与metadata一起存储的,存储过程先将文件按照文件系统的最小块大小来打散(例如4M的文件,假设文件系统要求一个块4K,那么就将文件打散称为1000个小块),再写进硬盘里,过程中没有区分数据和metadata的。而每个块最后会告知你下一个要读取的块地址,然后一直这样顺序的按图索骥,最后完成整份文件的所有块的读取。
这种情况下读写速率很慢,因为就算你有100个机械臂在读写,但是由于你只有读取到第一个块,才能知道下一个块在哪里,其实相当于只能有1个机械臂在实际工作。

而对象存储则将元数据独立出来了,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息)而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪里OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。
这时候由于是3台OSD同时对外传输数据,所以传输的速度就会加快了,当OSD服务器数量越多,这种读写速度的提升就越大,通过此种方式,实现了读写快的目的。

另一方面,对象存储软件是有专门的文件系统的,所以OSD对外又相当于文件服务器,那么就不存在共享方面的困难了,也解决了文件共享方面的问题
所以对象存储的出现,很好的结合了块存储和文件存储的优点

为什么对象存储兼具块存储和文件存储的好处,还要使用块存储和文件存储呢?

(1)有一类应用是需要存储直接裸盘映射的,例如数据库。因为数据需要存储楼盘映射给自己后,再根据自己的数据库文件系统来对裸盘进行格式化的,所以是不能够采用其他已经被格式化为某种文件系统的存储的。此类应用更合适使用块存储。
(2)对象存储的成本比起普通的文件存储还要较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了做文件共享的时候,直接用文件存储的形式好了,性价比高。

下图简要的总结了三者之间的差异:

对象存储文件系统的关键技术是什么?

(1)分布元数据
(2)并发数据访问,对象存储体系结构定义了一个新的、更加智能化的磁盘接口OSD

什么是OSD?

存储局域网(SAN)和网络附加存储(NAS)是我们比较熟悉的两种主流网络存储架构,而对象存储是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备,简称:OSD

在存储对象中通过什么对象方式访问对象?

在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问对象

OSD的主要功能是什么?

(1)数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写;
(2)智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能的支持对象的预取,从而可以优化磁盘的性能
(3)每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。

原文地址:https://blog.51cto.com/2367685/2362674

时间: 2024-10-11 16:24:37

块存储、文件存储、对象存储意义及差异的相关文章

zz``块存储、文件存储、对象存储这三者的本质差别是什么?

本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景. 分布式存储的应用场景相对于其存储接口,现在流行分为三种: 对象存储: 也就是通常意义的键值存储,其接口就是简单的GET.PUT.DEL和其他扩展,如七牛.又拍.Swift.S3 块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的

对象存储与块存储、文件存储等对比

看到 一篇文档, 讲 对象存储, 好奇,搜索文章,摘抄,学习记录 ! 背景: 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设计或优化.成本过高.并非PB级的扩展.不支持永远在线.专有的一体机设备等等,非结构化数据以每年60%-80%的速率增长,从而可扩展性变成了最迫切的需求. 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设计或优化.成本过高.并非

对象存储VS块存储

在今天的IT环境中,云计算已经作为一个时代的代名词,而在云的存储基础设施中,对象存储和块存储是两个最基本的存储形式,也是各家云提供商最常提供的两种基础存储服务.那么对象存储与块存储有什么联系和区别呢,下面我将从基础层面为各位看官慢慢道来. 通常意义上来说,对象存储也就是键值存储,一般提供使用HTTP协议通过简单的PUT .GET等接口,适合在云环境中进行大规模的非结构化数据存储使用.而块存储主要指能够模拟或表现为计算机裸盘,能够被计算主机当做硬盘使用的存储形式.从这个角度看,对象存储和块存储并没

块存储、对象存储和文件系统: 它们对容器而言意味着什么?

当管理员首次开始使用Docker容器时,通常会使其感到惊讶的是, 容器本身采用的是非永久性存储.当容器被移除时, 容器的存储也被移除了. 当然,如果没有办法实现永久存储,则容器应用程序的使用将会非常受限.幸运的是,有些方法在容器化的环境中可以实现持久存储.尽管容器本身的原生存储是非持久性的,但可以将容器连接到容器外部的存储区.此操作允许持久性数据的存储,因为当容器停止时,该外部存储不会被移除. 决定如何为容器实现持久存储的第一步是确定您将使用的存储系统的基础类型.在这方面, 通常有三种主要选项:

杉岩:浅谈对象存储和块存储区别

什么是块存储 数据被存储在固定大小的块内.块内只存储数据本身:Address就是块唯一的识别信息:对于块存储,没有metadata. 当应用和数据都在本地的时候,性能会比较好:当应用和数据在地理位置上分离较远的时候,性能会较差. 适用场景: 块存储适合用于事务型数据库,可用于大部分通用业务场景下的数据存储 什么是对象存储 可以理解是一个海量的存储空间,最适合存储互联网上产生 的图片.短视频.音频等海量非结构化数据,您可以通过 API 在任何时间.任何地点访问对象存储里的数据. 每个对象包括3个部

对象存储,未来存储新潮流

大家众说纷“云”,其中,云存储已经成为业界最为火热的概念之一.大数据时代,没有存储或存储技术,一切都将成为“浮云”! 对象存储本身是一种与传统完全不同的解决方案,类似于当前正在兴起的软件定义存储趋势.客户会利用服务器——多数情况下为商用服务器——来实现存储功能,而供应商必须理解并接受这一点.因此对于硬件供应商来说,他们需要做的不再是单纯依靠存储业务部门销售阵列或者文件存储设备,而是再加深入地推动服务器业务升级.这给新兴的软件定义存储厂商留下了很大的想象空间. 事实上,对象存储与块存储.文件存储,

杉岩数据:对象存储是企业海量非结构化数据存储的最佳选择

海量数据的爆炸式增长,使存储技术近五年的发展速度远超过去n年的发展历程.C端用户一个明显的感觉就是:U盘存储容量从过去物以稀为贵的几十M迅速发展到今天几十G.甚至TB级,家用电脑硬盘容量更是TB级标配. 那么,企业级又迎来了怎样的变化? IDC数据显示,到2020年,企业数据总体将达到44ZB,其中80%的数据将会是非结构化数据(图片.视频.归档以及企业级备份等各种数据).显然,海量数据的产生正在促使企业级存储从需求到产品形态都发生了改变. "相对于NAS.SAN这种传统企业级存储解决方案,对象

HDFS的新方向:Ozone对象存储

前言 HDFS在近几年中得到了迅速的发展,作为性价比比较高的存储系统,用户.企业只需利用若干台低配廉价的节点机型,就可以构建能够承受TB甚至PB级别的大数据集群,然后在上面做各种类型任务的作业,而且在底层方面,我们完全可以依赖HDFS自身实现的容错机制来应当各种异常情况.但是在当今数据使用场景日益多元化的背景下,HDFS并不是能满足所有的应用需求.如何能够以一种更加高效,方便的方式去存储用户想要保存的数据,成为了一个急需去解决的问题.于是后面诞生出了一个企业级的存储方案:对象存储.对照存储的出现

对象存储服务与图片服务器的优缺点对比

今天再次与人探讨到网站图片存放话题,于是乎想起了经典的图片存放的虚拟应用程序.也就是IIS发布时候的"添加虚拟目录"功能.此功能如今在图片共享用途上已经逐步被对象存储服务所替代. 这个功能在传统架构里,虚拟目录功能能够实现多个网站共享同一个"图片读写路径"而大受欢迎,同时也做到了集中存储图片功能.但是随着云架构的发展,目前这种用法已经为数不多见了.取而代之的是使用"对象存储"服务集中共享存储图片等静态文件. 对象存储服务有很多提供方,阿里云提供的

010 Ceph RGW对象存储

一.对象存储 1.1 介绍 通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据 对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问,或者第三方客户端(实际上也是对API的封装) 对象存储中的对象不整理到目录树中,而是存储在扁平的命名空间中,Amazon S3将这个扁平命名空间称为bucket.而swift则将其称为容器 无论是bucket还是容器,都不能嵌套 bucket需要被授权才能访问到,一个帐户可以对多个bucket授权