块存储、文件存储、对象存储这三者的本质差别是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了块存储、文件存储、对象存储这三者的本质差别是啥?相关的知识,希望对你有一定的参考价值。
块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了。例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘。)接着块存储会采用映射的方式将这几个逻辑盘映射给主机,主机上面的操作系统会识别到有5块硬盘,但是操作系统是区分不出到底是逻辑还是物理的,它一概就认为只是5块裸的物理硬盘而已,跟直接拿一块物理硬盘挂载到操作系统没有区别的,至少操作系统感知上没有区别。此种方式下,操作系统还需要对挂载的裸硬盘进行分区、格式化后,才能使用,与平常主机内置硬盘的方式完全无异。优点:这种方式的好处当然是因为通过了Raid与LVM等手段,对数据提供了保护。另外也可以将多块廉价的硬盘组合起来,成为一个大容量的逻辑盘对外提供服务,提高了容量。写入数据的时候,由于是多块磁盘组合出来的逻辑盘,所以几块磁盘可以并行写入的,提升了读写效率。很多时候块存储采用SAN架构组网,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。
参考技术A较底层的块存储不同, 上升到了应用层, 一般指的就是 NAS ,一套网络储存设备, 通过TCP/IP进行访问, 协议为NFSv3/v4由于通过网络, 且采用上层协议, 因此开销大, 延时肯定比块存储高一般用于多个云服务器共享数据, 如服务器日志集中管理, 办公文件共享对象存储具备块存储的高速以及文件存储的共享等特性, 较为智能, 有自己的CPU, 内存, 网络和磁盘, 比块存储和文件存储更上层, 云服务商一般提供用户文件上传下载读取的Rest API, 方便应用集成此类服务总结块存储: 是和主机打交道的, 如插一块硬盘文件存储: NAS, 网络存储, 用于多主机共享数据对象存储: 跟你自己开发的应用程序打交道, 如网盘他们的层级是越来越高的。
参考技术B一、概念及区别
针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。这三者的主要区别在于它们的存储接口:
1. 对象存储:
也就是通常意义的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展,
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特点来对应即可。至于冷热、快慢、大小文件而言更接近于业务。但是因为存储系统是通用化实现,通常来说,需要尽量满足各种需求,而接口定义已经一定意义上就砍去了一些需求,如对象存储会以冷存储更多,大文件为主。
参考技术C首先我们先来了解一下,什么叫做块级?什么叫文件级?块级概念:块级是指以扇区为基础,一个或多个连续的扇区组成一个块,也叫物理块。它是在文件系统与块设备(例如:磁盘驱动器)之间。文件级概念:文件级是指文件系统,单个文件可能由于一个或多个逻辑块组成,且逻辑块之间是不连续分布。逻辑块大于或等于物理块整数倍,物理块与文件系统之间的关系图:映射关系:扇区→物理块→逻辑块→文件系统文件级备份:文件级备份是指在指定某些文件进行备份时,首先会查找每个文件逻辑块,其次物理块,由于逻辑块是分散在物理块上,而物理块也是分散在不同扇区上。需要一层一 层往下查找,最后才完成整个文件复制。文件级备份时比较费时间,效率不高,实时性不强,备份时间长,且增量备份时,单文件某一小部份修改,不会只备份修改部份,而整个文件都备份。块级备份:块级备份是指物理块复制,效率高,实时性强,备份时间短,且增量备份时,只备份修改过的物理块。目前文件级备份工具:Symantec NBU/BE 备份软件、Commvault、CA、Networker目前块级备份工具:飞康CDP、Recoverpoint、杭州信核CDP、Novell CDP备份时间点保留周期:传统备份软件(文件级备份),可以保留备份时间点多,恢复颗粒度大CDP备份(块级备份),可以保留备份时间点少,恢复颗粒度小。
参考技术D 文件存储是什么?• 文件存储也称为文件级存储或基于文件的存储,数据会以单条信息的形式存储在文件夹中,正如您将几张纸放入一个文件夹中一样。当您需要访问该数据时,您的计算机需要知道相应的查找路径。(注意,这可能会是一条蜿蜒冗长的路径。)
• 存储在文件中的数据会根据数量有限的元数据来进行整理和检索,这些元数据会告诉计算机文件所在的确切位置。它就像是数据文件的目录。
• 请试想一下塞满文件柜的储藏室。每个文档都会按照某种类型的逻辑层次结构来排放——按文件柜、抽屉、文件夹,然后再是纸张。“分层存储”这个术语就是这么来的,而这就是文件存储。它是适用于DAS和NAS系统的最古老且运用最为广泛的一种数据存储系统;而且,这种系统您可能已经用了数十年。只要您访问保存在个人计算机上的文件中的文档,您就是在使用文件存储。文件存储具有丰富多样的功能,几乎可以存储任何内容。它非常适合用来存储一系列复杂文件,并且有助于用户快速导航。
• 问题是,就像文件柜一样,虚拟抽屉只能打开到一定的程度。基于文件的存储系统必须通过添置更多系统来进行横向扩展,而不是通过增添更多容量来进行纵向扩展。
文件存储特点(NAS,Parallel Filesystem)
• 对外暴露的是个共享的“文件夹”,语义复杂POSIX
• 数据可以被多个客户端分享,数据可以被修改,随机访问
• 访问协议:NFS,CIFS,私有客户端
• 应用场景:高性能计算,人工智能,办公文件分享
块存储是什么?
• 块存储会将数据拆分成块,并单独存储各个块。每个数据块都有一个唯一标识符,所以存储系统能将较小的数据存放在最方便的位置。这意味着有些数据可以存储在Linux环境中,有些则可以存储在Windows单元中。
• 块存储通常会被配置为将数据与用户环境分离,并会将数据分布到可以更好地为其提供服务的多个环境中。当用户请求数据时,底层存储软件会重新组装这些环境的数据块,并将它们呈现给用户。它通常会部署在存储区域网络(SAN)环境中,而且必须绑定到正常运行的服务器。
• 由于块存储不依赖于单条数据路径,因此可以实现快速检索。每个块都独立存在,且可进行分区,因此可以通过不同的操作系统进行访问,这使得用户可以完全自由地配置数据。它是一种高效可靠的数据存储方式,且易于使用和管理。它适用于要执行大型事务的企业和部署了大型数据库的企业。
• 但是,块存储有一些缺点。块存储的成本高昂。它处理元数据的能力有限;
块存储特点(SAN,ServerSAN,DAS)
• 对外暴露是个块设备“盘”或者“逻辑盘”,语义简单
• 一个“盘”块设备不能够被多个客户端同时共享
• 访问协议:iSCSI,FC,NBD等
• 应用场景:数据库(结构化数据),虚拟机后端存储
对象存储是什么?
• 对象存储,也称为基于对象的存储,是一种扁平结构,其中的文件被拆分成多个部分并散布在多个硬件间。在对象存储中,数据会被分解为称为“对象”的离散单元,并保存在单个存储库中,而不是作为文件夹中的文件或服务器上的块来保存。
• 对象存储卷会作为模块化单元来工作:每个卷都是一个自包含式存储库,均含有数据、允许在分布式系统上找到对象的唯一标识符以及描述数据的元数据。元数据很重要,对象存储元数据可以非常详细,并且能够存储与视频拍摄地点、所用相机和各个帧中特写的演员有关的信息。为了检索数据,存储操作系统会使用元数据和标识符,这样可以更好地分配负载,并允许管理员应用策略来 执行更强大的搜索。
• 对象存储需要一个HTTP应用编程接口 (API),以供大多数客户端(各种语言)使用。对象存储经济高效,可以轻松扩展,因而是公共云存储的理想之选。它是一个非常适用于静态数据的存储系统,其灵活性和扁平性意味着它可以通过扩展来存储极大量的数据。对象具有足够的信息供应用快速查找数 据,并且擅长存储非结构化数据。
• 当然,它也存在缺点。无法修改对象 — 您必须一次性完整地写入对象。对象存储也不能很好地与传统数据库搭配使用,因为编写对象是一个缓慢的过程,编写应用以使用对象存储API并不像使用文件存储那么简单。
文件系统,对象系统,块设备三者之间的关系是什么?
• 文件系统,对象系统底层是由块设备,比如盘,SSD支撑的。
• 对象系统可以是块存储和文件系统的底层基础,逻辑块设备和文件系统的文件都可以用底层的对象来描述。比如文件的数据块由不大于4M的一组对象描述。
• 逻辑块设备底层可以是个文件或者对象模拟的。比如VMFS上的vmdk或VNX里的ThinLUN是UFS上的一个文件。
概念澄清
文件系统vs.文件存储
• 文件系统不一定是文件存储系统
• 广义文件系统只要是能解决名字空间或者地址空间的都叫文件系统,但是并不一定对外提供文件共享服务。比如VMWare的VMFS,或者RBD
对象系统vs.对象存储系统
• 对象系统是很多文件系统和块存储系统的底层基础,但是并不一定对外提供对象数据共享因此不一定是对象存储系统,比如Lustre OST
块设备vs.块存储系统
• 基础的块设备HDD/SSD是所有存储设备的基础
• 块存储系统底层可能是用对象或者文件来模拟的虚拟/逻辑块设备,比如Ceph RBD的底 层是RADOS对象系统,ZVOL底层的DMU是个对象系统
块存储文件存储对象存储的总结
块存储、文件存储、对象存储的理解
? 在给公司的的项目做调研时,涉及到了块存储、文件存储、对象存储,这几类存储方式,对这些概念理解的十分模糊,准备写博客记录下这三个概念的理解与区别,也为以后遗忘时方便捡起来。
? 去各大博客查找有关这三个存储的资料,网上大部分介绍这三个概念的资料都是同出一源,资料雷同太多,为了加深理解,写下这篇博客。
1. 三种存储的对比:
存储方式 | 技术实现 | 优势 | 劣势 | 代表作 |
---|---|---|---|---|
块存储 | 裸盘上划分逻辑卷,逻辑卷格式化成任意文件系统 | 支持多种文件系统,传输速度快,提供硬件容错机制 | 无法实现网络共享 | FC-SAN,iSCSI |
文件存储 | 在格式化的磁盘上存储文件 | 提供网络共享 | 网络传输速度制约读写速度,分层目录结构限制可扩展性 | NFS,FAT,EXT3 |
对象存储 | 以灵活可定制的对象为存储单元,元数据服务器提供快速并发寻址 | 读写速度较快的同时支持网络共享,对象灵活定义 | 管理软件的购买、使用和运维成本高 | Swift |
术语:
对象存储中,OSD(Object-based Storage Device)是对象存储设备,MDS(Metadata Server)是元数据服务器。
2. 块存储
典型设备: 磁盘阵列,硬盘
? 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。
? 接着块存储会采用映射的方式将这几个逻辑盘映射给主机,主机上面的操作系统会识别到有5块硬盘,但是操作系统是区分不出到底是逻辑还是物理的,它一概就认为只是5块裸的物理硬盘而已,跟直接拿一块物理硬盘挂载到操作系统没有区别的,至少操作系统感知上没有区别。
? 此种方式下,操作系统还需要对挂载的裸硬盘进行分区、格式化后,才能使用,与平常主机内置硬盘的方式完全无异。
2.1 优点
1、 这种方式的好处当然是因为通过了Raid与LVM等手段,对数据提供了保护。
2、 另外也可以将多块廉价的硬盘组合起来,成为一个大容量的逻辑盘对外提供服务,提高了容量。
3、 写入数据的时候,由于是多块磁盘组合出来的逻辑盘,所以几块磁盘可以并行写入的,提升了读写效率。
4、 很多时候块存储采用SAN架构组网,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。
2.2 缺点
1、采用SAN架构组网时,需要额外为主机购买光纤通道卡,还要买光纤交换机,造价成本高。
2、主机之间的数据无法共享,在服务器不做集群的情况下,块存储裸盘映射给主机,再格式化使用后,对于主机来说相当于本地盘,那么主机A的本地盘根本不能给主机B去使用,无法共享数据。
3、不利于不同操作系统主机间的数据共享:另外一个原因是因为操作系统使用不同的文件系统,格式化完之后,不同文件系统间的数据是共享不了的。例如一台装了WIN7/XP,文件系统是FAT32/NTFS,而Linux是EXT4,EXT4是无法识别NTFS的文件系统的。就像一只NTFS格式的U盘,插进Linux的笔记本,根本无法识别出来。所以不利于文件共享。
3. 文件存储
典型设备:FTP、NFS服务器
? 为了克服块存储中文件服务共享的问题,所以有了文件存储。
? 文件存储也有软硬一体化的设备,但是其实普通拿一台服务器/笔记本,只要装上合适的操作系统与软件,就可以架设FTP与NFS服务了,架上该类服务之后的服务器,就是文件存储的一种了。
? 主机A可以直接对文件存储进行文件的上传下载,与块存储不同,主机A是不需要再对文件存储进行格式化的,因为文件管理功能已经由文件存储自己搞定了。
3.1 优点
1、造价交低:随便一台机器就可以了,另外普通以太网就可以,根本不需要专用的SAN网络,所以造价低。
2、 方便文件共享:针对块存储中文件无法共享问题,使用文件存储,第三方进行中转。
3.2 缺点
? 读写速率低,传输速率慢:以太网,上传下载速度较慢,另外所有读写都要1台服务器里面的硬盘来承担,相比起磁盘阵列动不动就几十上百块硬盘同时读写,速率慢了许多。
4. 对象存储
典型设备:内置大容量硬盘的分布式服务器
? 对象存储最常用的方案,就是多台服务器内置大容量硬盘,再装上对象存储软件,然后搞几台服务器作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。
? 之所以出现对象存储,是为了克服块存储与文件存储各自的缺点。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否搞一个读写快,利于共享的出来呢?于是有了对象存储。
对象存储的原理
? 首先,一个文件包含了属性(术语叫metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(以下简称数据)
? 以往像FAT32这种文件系统,是直接将一份文件的数据与metadata一起存储的,存储过程先将文件按照文件系统的最小块大小来打散(如4M的文件,假设文件系统要求一个块4K,那么就将文件打散成1000个小块),再写进硬盘里面,过程中没有区分数据/metadata的。而每个块最后会告知你下一个要读取的块的地址,然后一直这样顺序地按图索骥,最后完成整份文件的所有块的读取。
? 这种情况下读写速度很慢,因为就算你呦100个机械手臂在读写,但是由于你只有读取到第一块,才能知道下一个在哪里,其实相当于只能有一个机械手臂在实际工作。
? 对象存储将元数据独立出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。
? 这时候由于是3台OSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越大,通过这种方式,实现了读写快的目的。
? 另一方面,对象存储软件是有专门的文件系统的,所以OSD对象又相当于文件服务器,那么就不存在文件共享方面的困难了,也就解决了文件共享方面的问题。
? 所以对象存储的出现,很好地结合了块存储与文件存储的优点。
总结:
? 块存储可以认为是裸盘,最多包一层逻辑卷(LVM);常见的DAS、FC-SAN、IP-SAN都是块存储,块存储最明显的特征就是不能被操作系统直接读写,需要格式化为指定的文件系统(Ext3、Ext4、NTFS)后才可以访问。优点:读写快(带宽&IOPS);缺点:因为太底层了,不利于扩展。
? 文件存储:指的是在文件系统上的存储,也就是主机操作系统中的文件系统。
? 对象存储,对象存储肯定是分布式存储,但分布式存储可能是分布式文件系统,不一定是对象存储;常见的对象存储开源实现有 Ceph 的RADOS、openstack的swift、AWS s3等,常见分布式文件系统,lustre、glusterfs、HDFS等;对象存储和分布式文件系统的表面区别:对象存储支持的访问接口基本都是restful接口、而分布式文件系统提供的POSIX兼容的文件操作接口;
分布式文件系统和对象存储最本质的区别:
? 分布式文件系统文件组织方式为目录树、对象存储采用的则是扁平的组织方式;对象存储不支持随机读取和写入,put和get操作都是针对的整个文件。
以上是关于块存储、文件存储、对象存储这三者的本质差别是啥?的主要内容,如果未能解决你的问题,请参考以下文章