从使用直观感受上来看
块级存储
生活中常见的块存储设备(也叫“块设备”)比如,插在你本地电脑上的U盘、硬盘,你电脑连接的iSCSI等。
从使用上来说,块级的存储如果是第一次使用,那么必须需要进行一次格式化的操作(其实不格式化也能用,这里只是方便举例的说明),创建出一个文件系统,然后才可以使用,例如新买的U盘、硬盘、或者新发现的iSCSI设备等,首次使用的时候都需要进行一次格式化操作,创建出一个文件系统,然后才可以将你的文件拷贝到U盘、硬盘、或者新发现的iSCSI设备中。
文件级存储
文件级是最常见你的一种文件内系统我们日常对操作系使用中,基本上能够直接接触到的都就是这种,能够直接访问的C、D、E盘,电脑里的一个目录,网上邻居的空间都是文件级的存储。块级的存储设备经过格式化以及挂载(win
会自动挂载)之后,你就将一个块级的存储变成了文件级的存储。
对象级存储
对象存储一般来说并不是给我们人直接去使用的,从使用者角度来说,它更适合用用于给程序使用。平时最常见的一般就是百度网盘,其后端对接的就是对象存储。还有就网页上的图片、视频,其本身也是存储在对象存储的文件系统中的。如果你要直接使用对象级的存储,你会发现对象级的存储本身是非常的简单的(但是对人来说不方便),它只有简单的几种命令如上传、下载、删除,并且你只需要直到某个文件的编号(如:“d5t35e6tdud725dgs6u2hdsh27dh27d7”
这不是名字哦)就可以直接对它进行上传、下载、删除等操作,不需要像文件级那样,直到文件的具体的路径(如:D:\photo\1.jpg),并且他也只有这几种操作,如果你想编辑文件,那只能将文件下载下来编辑好之后在进行上传(这也是它对人来说不方便的原因之一)。
技术角度
块级、文件级对象级技术上的区别,首先要明白两个概念
第一,无论是那个级别的存储系统,其数据都是会存储在物理的存储设备上的,这些存储设备现在常见的基本上就两种机械硬盘、固态硬盘。
第二,任何数据都是由两部”数据“分组成的,一部分是"数据本身"(下文中“数据”指”数据本身“),然后就是这些“数据”的”元数据“。所谓的"元数据"就是用来描述"数据"的"数据"。包括数据所在的位置,文件的长度(大小),文件的访问权限、文件的时间戳(创建时间、修改时间…),元数据本身也是数据。
块级存储
对于块级来说如果你要通过块级来访问一段数据的话,你自己需要知道这些数据具体是存在于那个存储设备上的位置上,例如如果你要从块设备上读取一张照片,你就要高速存储设备:我要从第2块硬盘中的从A位置开始到B位置的数据,硬盘的驱动就会将这个数据给你。读取照片的过程中照片的具体位置就是元数据,也就是说块级的存储中要求程序自己保存元数据。
文件级存储
如果需要自己保存元数据的话就太麻烦了,上文也说了,元数据本身也是数据,实际上元数据也是存储在硬盘上的,那么如何访问元数据这个数据呢其实,文件级的元数据是存储在固定位置的,存储的位置和方式是大家事先约定好的,这个约定就叫做文件系统,例如EXT4、FAT32、XFS、NTFS等。借助于这些约定,我们就不用自己去维护一个表去记录每一份数据的具体存储位置了。我们只需要直到我们存储的文件的路径和名字就好了,例如我们想要
D:\1.jpg 这个文件,那么你只需要告诉文件系统 D:\1.jpg 这个位置就可以了,去硬盘的哪里找D:\1.jpg
数据的真身,就是文件系统的工作了。
对象级存储
对象级存储,文件级的元数据实际上是和数据放在一起的,就像一本书每本书都有一个目录,这个目录描述的是这本书上内容的索引,目录就是书内容的“元数据”,而对象存储,会有一本书只放目录(元数据),其他更多的书只有内容,并且内容都是被拆分好的一段一段的,就是说你会看每本书上面的内容完全是混在在一起的,这一页的前两行是书A的某句话,后面就跟的是书D的某句话,如果只放目录(元数据)那本书,你根本不知道这里写的是啥。对象及存储将一切的文件都视作对象,并且将对象按照固定的"形式"组合或拆分的存储在存储设备中,并且将数据的元数据部分完全的独立出来,进行单独的管理。
对比
从距离(io路径)上来说(这里说的是传统的存储),块级的使用者距离最底层实际存储数据的存储设备是最近的,对象级是最远的。
从使用上来说,块级需要使用者自己直到数据的真是位置,需要自己管理记录这些数据,所以使用上是最复杂的,而对象级的接口最简单,基本上只有上传、下载、删除,并且不需要自己保存元数据,也不需要直到文件的索引路径,所以使用上是最简单的。但是从方便角度来讲还是文件级最方便。
从性能上来说,综合的来讲(在特定的应用场合)性能最好的是块级,它主要用在数据库、对延时要求非常高的场景中,对象存储多用于互联网,因为扩展性好,容量可以做的非常的大。对于人类来说,如果不借助特定的客户端、APP,使用文件级存储是最友好最简单的。