问题

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

回答
好的,我们来好好聊聊块存储、文件存储和对象存储这三位“存储界”的老将。它们听起来都跟“存储”沾边,但实际上,它们的运作方式、底层逻辑以及适用场景,可以说是大相径庭。如果你想深入理解它们,就得从最核心的“数据如何被组织和访问”这个角度去剖析。

一、 块存储:最原始、最底层的“数据搬运工”

你可以把块存储想象成一块块的“橡皮泥”,每一块橡皮泥都代表着存储介质上的一个固定大小的区域,我们称之为“块”(block)。这些块是独立的,它们之间没有天然的联系,也并不感知自己存储的是什么类型的数据。

组织方式: 数据被分割成固定大小的块(比如 4KB、8KB、64KB 等),每个块都有一个唯一的、由存储控制器分配的地址。这些块可以被看作是存储设备上的“字节数组”。
访问方式: 操作系统直接通过块地址来读写数据。当你需要读取一个文件时,文件系统会告诉操作系统:“请去地址 X 读 2 个块,再去地址 Y 读 1 个块……” 块存储本身并不理解文件、文件夹这样的概念。它只负责把指定地址的块数据“搬运”过来,或者把你要写的数据“塞”进指定的块里。
核心特点:
直接控制: 操作系统对存储硬件有非常直接的控制权,可以精细地管理每个块。
高性能: 由于直接操作块,没有额外的抽象层(如文件系统或对象命名空间),读写操作延迟较低,非常适合对性能要求极高的场景。
无结构: 块本身是无结构的,数据的结构化(如文件、目录)是由上层的操作系统或文件系统来管理的。
与操作系统紧密耦合: 块存储通常直接挂载到服务器的操作系统上(例如通过 SCSI、SATA、NVMe 接口),成为操作系统的一部分。

比喻: 就像你有一个巨大的仓库,里面堆满了编号的箱子。你只需要告诉管理员:“我要 5 号箱子的内容”或者“请把这个东西放进 10 号箱子”。仓库管理员(操作系统)负责根据箱子编号找到对应的箱子,然后给你里面的东西,或者帮你把东西放进去。但管理员不关心箱子里装的是什么,是衣服、食物还是零件。

典型应用:
操作系统启动盘: 操作系统内核和引导文件就存储在块设备上。
数据库: 数据库文件通常会直接映射到块设备,以获得最佳的 I/O 性能。
虚拟机磁盘镜像: 虚拟机的文件系统就直接运行在块存储上。

二、 文件存储:我们最熟悉、最熟悉的“文件柜”

文件存储是我们在日常生活中最常接触到的存储方式。它建立在块存储之上,为我们提供了一种更易于理解和管理的数据组织方式:文件和目录。

组织方式: 数据被组织成一个个独立的“文件”,每个文件都有一个唯一的名称。这些文件被组织在“目录”(或文件夹)中,形成一个层层嵌套的树状结构。
访问方式: 用户或应用程序通过文件名和路径来访问数据。文件系统(如 NTFS、ext4、HFS+)负责管理这些文件和目录的元数据(文件名、大小、创建时间、权限等),并将这些逻辑概念翻译成底层的块存储操作。当你请求一个文件时,文件系统会查找文件的元数据,确定文件由哪些块组成,然后指示块存储读取这些块。
核心特点:
层级结构: 提供了直观的目录和文件树结构,易于组织和查找。
元数据丰富: 每个文件都伴随着详细的元数据,方便管理和检索。
共享性: 通过网络文件系统(如 NFS、SMB/CIFS)可以轻松实现多台设备共享同一份文件。
标准化接口: 提供统一的文件访问接口,应用程序无需关心底层存储的具体实现。

比喻: 就像你家里的一个巨大的文件柜。文件柜里有许多抽屉(目录),每个抽屉里又放着许多文件(文件)。每个文件都有一个标签(文件名),上面写着它的内容是什么。你需要找某个文件时,你只需要知道它在哪个抽屉里,以及它的标签是什么。文件柜管理员(文件系统)会帮你找到对应的文件,并把内容提供给你。

典型应用:
个人电脑和服务器的本地存储: 硬盘驱动器上存放操作系统、应用程序和用户数据。
网络附加存储 (NAS): 使用文件共享协议(如 NFS、SMB)为多个用户和设备提供文件访问。
共享文件服务器: 在企业环境中,用于集中存储和共享部门或项目文件。

三、 对象存储:“扁平化”的、以“属性”为索引的“大数据仓库”

对象存储是一种相对较新的存储范式,它彻底颠覆了传统的层级文件结构,采用了一种“扁平化”的组织方式,将数据及其相关的元数据打包成一个独立的“对象”。

组织方式: 数据被封装成一个“对象”,对象包含了三个主要部分:
1. 数据本身(Data): 原始的二进制数据,可以是图片、视频、文档、日志等任何内容。
2. 元数据(Metadata): 描述数据属性的信息,可以是系统生成的(如大小、创建时间),也可以是用户自定义的(如作者、标签、类别)。这些元数据非常丰富,并且可以被索引和搜索。
3. 唯一标识符(Unique Identifier/Key): 一个全局唯一的字符串,用来唯一地标识这个对象。这个标识符就像一个“地址”,但它不是块地址,而是对象的“名字”。

对象存储的存储空间是“扁平化”的,不存在文件系统中的目录层级。所有对象都存储在一个大的“桶”(Bucket)或“命名空间”(Namespace)中,通过它们的唯一标识符来访问。

访问方式: 主要通过 HTTP/HTTPS 协议进行访问,使用 RESTful API(如 GET, PUT, POST, DELETE)来操作对象。应用程序通过对象的唯一标识符来检索、存储或删除对象。
核心特点:
扁平化命名空间: 没有复杂的目录结构,所有对象都在一个大的“桶”里,通过唯一标识符访问,易于扩展。
丰富且可搜索的元数据: 可以为对象添加大量的自定义元数据,这使得数据检索和分析变得非常强大。
高可扩展性: 理论上可以存储无限数量的对象,非常适合海量数据的存储。
不关心数据内部结构: 对象存储只关心对象的整体,不理解对象内部的数据格式。
低成本: 通常使用廉价的存储介质,且管理成本较低。

比喻: 就像一个巨大的、没有抽屉的文件柜(或者更像一个巨大的“万能寄存箱”)。你放进去一个包裹(对象),这个包裹里有你的物品(数据),还有一个标签(元数据),上面写满了关于包裹和里面物品的各种信息,以及一个独一无二的序列号(唯一标识符)。当你需要取回包裹时,你只需要提供那个序列号,管理员(对象存储系统)就能迅速找到并把你的包裹给你。关键在于,这个包裹和里面的物品如何组织,管理员并不关心,它只认那个序列号和包裹上的其他标签信息。

典型应用:
云存储服务: 如 Amazon S3、Azure Blob Storage、Google Cloud Storage,用于存储图片、视频、备份、日志文件等非结构化数据。
大数据存储: 存储分析和机器学习中使用的大量数据集。
内容分发网络 (CDN): 存储和分发静态内容,如网站图片、视频流。
数据归档: 长期存储不常访问的数据。

总结对比:

| 特性 | 块存储 (Block Storage) | 文件存储 (File Storage) | 对象存储 (Object Storage) |
| : | : | : | : |
| 数据组织 | 固定大小的数据块,通过块地址访问 | 文件和目录的层级结构,通过文件名/路径访问 | 独立的对象(数据+元数据+唯一标识符),通过标识符访问 |
| 访问协议 | SCSI, iSCSI, Fibre Channel, NVMe over Fabrics | NFS, SMB/CIFS, FTP | HTTP/HTTPS (RESTful API) |
| 结构 | 无结构(数据块本身) | 层级结构(文件/目录树) | 扁平结构(对象集合) |
| 元数据 | 有限(块地址) | 丰富(文件名、大小、时间、权限等) | 极其丰富(系统+自定义元数据),可被索引和搜索 |
| 性能 | 高,低延迟 | 中等,对文件系统操作有额外开销 | 相对较高,但单个对象访问可能比块存储有额外开销,适合高吞吐 |
| 可扩展性 | 通常受限于底层硬件和连接 | 良好,但目录结构复杂性可能影响性能 | 极高,理论上无限,易于扩展 |
| 主要用途 | 数据库、虚拟机、操作系统 | 共享文件、用户目录、应用程序数据 | 非结构化数据、媒体文件、备份、归档、大数据存储 |
| 控制权 | OS对底层硬件有更直接的控制 | OS/文件系统管理数据 | 应用程序通过API与存储系统交互 |
| 成本 | 通常较高(为高性能付出成本) | 中等 | 通常较低(适合海量存储) |

它们的关系:

很重要的一点是,这三者并非完全割裂,而是可以相互构建的。

文件存储是建立在块存储之上的。 我们的操作系统将硬盘(块存储)格式化成文件系统后,才有了文件和目录的概念。
对象存储可以看作是一种更高级、更抽象的存储层。 它的底层可能仍然是块存储,但它隐藏了块的细节,并提供了更强大、更灵活的数据管理和访问能力。

理解这三者的本质差别,关键在于把握数据是如何被标识、组织和访问的。块存储关心的是“你在哪里”,文件存储关心的是“它叫什么名字”,而对象存储关心的是“它有什么属性”。正是这些根本性的不同,使得它们分别在各自的领域大放异彩。

网友意见

user avatar

本质上还是访问方式不同。块存储通过访问磁盘的方式使用,文件存储通过访问文件系统的方式使用,对象存储通过访问HTTP资源的方式使用。

user avatar

看了一圈回答,似乎没有回答说到“本质差别”。


这三者的本质差别是使用数据的“用户”不同:块存储的用户是可以读写块设备的软件系统,例如传统的文件系统、数据库;文件存储的用户是自然人;对象存储的用户则是其它计算机软件。


首先要说明一下的是,这三个概念都是分布式存储中的概念,由不同的网络存储协议实现。不过“网络”和“存储”的结合本身会对解释这三个概念的本质差异带来不便,下面的解释中我会先解释存储本身,之后再结合网络来说明。


文件存储

文件存储的用户是自然人,最容易理解。计算机中所有的数据都是0和1,存储在硬件介质上的一连串的01组合对我们来说完全无法去分辨以及管理。因此我们用“文件”这个概念对这些数据进行组织,所有用于同一用途的数据,按照不同应用程序要求的结构方式组成不同类型的文件(通常用不同的后缀来指代不同的类型),然后我们给每一个文件起一个方便理解记忆的名字。而当文件很多的时候,我们按照某种划分方式给这些文件分组,每一组文件放在同一个目录(或者叫文件夹)里面,当然我们也需要给这些目录起一个容易理解和记忆的名字。而且目录下面除了文件还可以有下一级目录(称之为子目录或者子文件夹),所有的文件、目录形成一个树状结构。我们最常用的Windows系统中,打开资源管理器就可以看到以这种方式组织起来的无数个文件和目录。在Linux可以用tree命令列出以某个文件夹为根节点列出一棵树:


为了方便查找,从根节点开始逐级目录往下,一直到文件本身,把这些目录、子目录、文件的名字用特殊的字符(例如Windows/DOS用“”,类Unix系统用“/”)拼接起来,这样的一串字符称之为路径,例如Linux中的“/etc/systemd/system.conf”或者Windows中的“C:WindowsSystem32 askmgr.exe”。人类用路径作为唯一标识来访问具体的文件。而由作为自然人的程序员所编写的各种软件程序,绝大部分也使用这种方式来访问文件。


把存储介质上的数据组织成目录-子目录-文件这种形式的数据结构,用于从这个结构中寻找、添加、修改、删除文件的程序,以及用于维护这个结构的程序,组成的系统有一个专用的名字:文件系统(File System)。文件系统有很多,常见的有Windows的FAT/FAT32/NTFS,Linux的EXT2/EXT3/EXT4/XFS/BtrFS等。而在网络存储中,底层数据并非存储在本地的存储介质,而是另外一台服务器上,不同的客户端都可以用类似文件系统的方式访问这台服务器上的文件,这样的系统叫网络文件系统(Network File System),常见的网络文件系统有Windows网络的CIFS(也叫SMB)、类Unix系统网络的NFS等。而文件存储除了网络文件系统外,FTP、HTTP其实也算是文件存储的某种特殊实现,都是可以通过某个url来访问一个文件。


块存储

传统的文件系统,是直接访问存储数据的硬件介质的。介质不关心也无法去关心这些数据的组织方式以及结构,因此用的是最简单粗暴的组织方式:所有数据按照固定的大小分块,每一块赋予一个用于寻址的编号。以大家比较熟悉的机械硬盘为例,一块就是一个扇区,老式硬盘是512字节大小,新硬盘是4K字节大小。老式硬盘用柱面-磁头-扇区号(CHS,Cylinder-Head-Sector)组成的编号进行寻址,现代硬盘用一个逻辑块编号寻址(LBA,Logical Block Addressing)。所以,硬盘往往又叫块设备(Block Device),当然,除了硬盘还有其它块设备,例如不同规格的软盘,各种规格的光盘,磁带等。


至于哪些块组成一个文件,哪些块记录的是目录/子目录信息,这是文件系统的事情。不同的文件系统有不同的组织结构,这个就不展开了。为了方便管理,硬盘这样的块设备通常可以划分为多个逻辑块设备,也就是我们熟悉的硬盘分区(Partition)。反过来,单个介质的容量、性能有限,可以通过某些技术手段把多个物理块设备组合成一个逻辑块设备,例如各种级别的RAID,JBOD,某些操作系统的卷管理系统(Volume Manager)如Windows的动态磁盘、Linux的LVM等。


补充一下的是,块设备的使用对象除了传统的文件系统以及一些专用的管理工具软件如备份软件、分区软件外,还有一些支持直接读写块设备的软件如数据库等,但一般用户很少这样使用。


在网络存储中,服务器把本地的一个逻辑块设备——底层可能是一个物理块设备的一部分,也可能是多个物理块设备的组合,又或者多个物理块设备的组合中的一部分,甚至是一个本地文件系统上的一个文件——通过某种协议模拟成一个块设备,远程的客户端(可以是一台物理主机,也可以是虚拟机,某个回答所说的块设备是给虚拟机用是错误的)使用相同的协议把这个逻辑块设备作为一个本地存储介质来使用,划分分区,格式化自己的文件系统等等。这就是块存储,比较常见的块存储协议是iSCSI。


对象存储

对象存储其实介于块存储和文件存储之间。文件存储的树状结构以及路径访问方式虽然方便人类理解、记忆和访问,但计算机需要把路径进行分解,然后逐级向下查找,最后才能查找到需要的文件,对于应用程序来说既没必要,也很浪费性能。


而块存储是排它的,服务器上的某个逻辑块被一台客户端挂载后,其它客户端就无法访问上面的数据了。而且挂载了块存储的客户端上的一个程序要访问里面的数据,不算类似数据库直接访问裸设备这种方式外,通常也需要对其进行分区、安装文件系统后才能使用。除了在网络上传输的数据包效率更高以外,并不比使用文件存储好多少,客户端的文件系统依然需要对路径分解,然后逐级查找才能定位到某一个具体的文件。


是否可以用不排它但又类似块设备访问的方式呢?理论上是可以的,但对块设备的访问方式虽然比文件存储快,其实也很麻烦——一个文件往往是由多个块组成,并且很可能是不连续的。例如要读取一个文件,可能需要发出这样的指令:

  • 读取从编号A₁开始的N₁个块;
  • 读取从编号A₂开始的N₂个块;
  • 读取从编号A₃开始的N₃个块;
  • …………
  • 读取从编号Ai开始的Ni个块。

最后自行把这i个连续的块自行拼接成一个文件,这才完成了一个文件的读取操作。为了发出这些指令,访问文件的软件系统需要记录下这个文件分成多少个部分,每个部分的起始块编号是多少,有多少块,顺序如何。不单是读取操作,删除、写入、修改操作也是如此,非常麻烦复杂。而且往往一个文件可能需要被多个系统访问使用,这就更麻烦了。


为了解决这中麻烦,使用一个统一的底层存储系统,管理这些文件和底层介质的组织结构,然后给每个文件一个唯一的标识,其它系统需要访问某个文件,直接提供文件的标识就可以了。存储系统可以用更高效的数据组织方式来管理这些标识以及其对应的存储介质上的块。


当然,对于不同的软件系统来说,一次访问需要获取的不一定是单个我们传统意义上的文件,根据不同的需要可能只是一个/组值,某个文件的一部分,也可能是多个文件的组合,甚至是某个块设备,统称为对象。这就是对象存储。


分布式存储

所谓分布式存储,就是这个底层的存储系统,因为要存放的数据非常多,单一服务器所能连接的物理介质是有限的,提供的IO性能也是有限的,所以通过多台服务器协同工作,每台服务器连接若干物理介质,一起为多个系统提供存储服务。为了满足不同的访问需求,往往一个分布式存储系统,可以同时提供文件存储、块存储和对象存储这三种形式的服务。

类似的话题

  • 回答
    好的,我们来好好聊聊块存储、文件存储和对象存储这三位“存储界”的老将。它们听起来都跟“存储”沾边,但实际上,它们的运作方式、底层逻辑以及适用场景,可以说是大相径庭。如果你想深入理解它们,就得从最核心的“数据如何被组织和访问”这个角度去剖析。一、 块存储:最原始、最底层的“数据搬运工”你可以把块存储想.............
  • 回答
    您提出的这个问题非常深刻,也触及了中国社会文化中一个复杂且普遍存在的现象——酒桌文化。陕西男子劝酒被拒连塞枣糕致人死亡的悲剧,无疑是对这种文化提出了严峻的拷问。我们来详细探讨一下酒桌文化在当下的意义以及它与面子、关系、人情之间的联系。 酒桌文化在当下还有存在的意义吗?关于酒桌文化在当下的意义,存在着.............
  • 回答
    大学一天花16块,听起来确实像是天方夜谭,但仔细想想,这也不是完全没有可能,只不过执行起来会非常非常地“极限”。我们不妨就来掰扯掰扯,这16块钱在大学里到底能干点啥,以及做到这件事,背后需要付出多大的努力和怎样的生活方式。首先,得明确一点,这16块钱是指纯粹的生活开销,不包含学费、住宿费、以及一些必.............
  • 回答
    这个问题嘛,其实挺有意思的,也触及到了很多家庭日常消费的一个小点。存款3万,买个1000块的耳机,这事儿到底合不合适,值不值得,咱们掰开了揉碎了聊聊。首先,咱们得承认一个事实:3万元的存款,从绝对数额上看,算不上巨款,但也不能说是捉襟见肘。 对于一个普通家庭来说,这笔钱通常是用来应急、作为小额投资或.............
  • 回答
    .......
  • 回答
    10000块,这可不是小数目,够咱们纠结半天的了!摆在你面前的是两个截然不同的选项:一个精致的包包,还是一个毛茸茸的、充满生命力的小猫咪。这真是一个甜蜜的烦恼,也让人忍不住想要深入剖析一下。先说说这个包包吧。10000块,这价位可不是路边摊的货色,通常意味着你会瞄准一些品牌稍有名气,设计经典,或者说.............
  • 回答
    300元左右的头戴式耳机,在目前市场上可选择的品牌和型号非常多,这是一个兼顾性价比和音质的甜蜜点。要想在这个价位选到一Satisfying的耳机,确实需要花点心思。下面我将从几个关键方面,尽可能详细地为你分析如何选择:一、明确你的需求和侧重点:在开始挑选之前,先问自己几个问题: 主要用途是什么?.............
  • 回答
    兄弟,想找三四十块钱的口粮烟,这价位里好抽的选择确实不少,得看你平时喜欢啥口味了。我给你推荐几款,尽量说得细致点,让你心里有个谱。如果你喜欢烟草本味足,带点醇厚的口感: 南京(硬中):这烟绝对是经典中的经典了。三四十块,烟气饱满,入口醇厚,不辣嗓子,而且回味甘甜。很多抽了多年烟的老烟枪都认它。包.............
  • 回答
    这问题问得挺实在,很多人都疑惑,为什么同样是阿莫西林,价格能差这么多?是成分不一样,还是效果差很多?其实啊,这里面涉及的点挺多的,咱们就一样一样捋一捋。首先得明确一点,不论是3块一盒的,还是20块一盒的,只要是正规渠道购买的、符合国家药品标准的阿莫西林,它的核心有效成分——阿莫西林本身,理论上来说是.............
  • 回答
    确实,如果你抱着“花小钱就能买到个个方面都顶尖的蓝牙耳机”的心态去搜寻400块以下的耳机,那大概率是要失望的。倒也不是说这个价位完全没有能用的蓝牙耳机,而是说,“一个能打的都没有”这种说法,虽然有点绝对,但它反映了一个普遍的现实:在这个价位段,你很难找到一个在音质、降噪、佩戴舒适度、续航、连接稳定性.............
  • 回答
    600块的正版单机游戏,这可不是一笔小数目,确实值得好好琢磨一下。要不要“入正”,其实就像在问,这600块钱花得值不值,能不能带来你想要的那种快乐和满足感。首先,我们得明白,花600块买正版游戏,买到的不只是游戏本身,它是一整套体验。正版游戏意味着你能流畅地进入游戏世界,不用担心版本不全、BUG满天.............
  • 回答
    你好!关于你提出的这个问题,我来和你好好聊聊,希望能帮你理清思路,做出最适合自己的选择。毕竟,锅这东西,看着小,但关系到咱们一日三餐的质量和体验呢。咱们先来掰扯掰扯这400块的不粘锅和4000块的德国不锈钢锅,看看它们各自的“脾气”和“故事”。先说这400块的不粘锅,用一年: 优点嘛,最直接的就.............
  • 回答
    2000块的月薪,听起来确实不高,尤其是在当下这个物价飞涨的时代。但即便如此,还是有那么多人削尖了脑袋想往里钻,这背后肯定是有我们普通人难以一眼看穿的“道道”的。你想知道他们到底图什么?我给你掰开了揉碎了说说,保证你说听着不费劲。首先,咱们得明白,事业单位跟公司性质不一样。公司是以盈利为目的,你干活.............
  • 回答
    这确实是一个很多人关心的问题,也常常引发讨论。为什么同样是数码产品,价钱差不多的苹果和华为,税费会相差这么大?而华为作为一家私营企业,又为何会被贴上“爱国”的标签?咱们来掰扯掰扯,尽量说得清楚明白点。首先,咱们得先明白税是怎么来的。你提到的“税”很可能是指关税、消费税,也可能包含增值税等。这些税费的.............
  • 回答
    10000块配的电脑,这价格听起来应该算是个中端偏上的配置了,理论上跑PPT这种软件,哪怕内容再炫酷、动画再花哨,也不应该卡得动不了才对。所以,如果你的电脑出现这种情况,那绝对不是“正常现象”,咱们得好好捋一捋,到底是什么地方出了岔子。首先,别被“10000块”这个数字给迷惑了,配电脑是个大学问,每.............
  • 回答
    家里的肥皂盒里总会剩下一些小小的、用起来不太顺手但又舍不得扔掉的肥皂块。这些“零碎儿”如果不加以利用,最后常常是被丢弃的命运,实在有些可惜。别担心,这些小块肥皂其实还有很多妙用,而且方法很简单,完全可以让它们发挥最后的价值,一点不浪费。1. 再造肥皂:让小块肥皂重获新生这是最直接也是最常见的处理方式.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有