本文主要总结常见的计算机存储数据的格式,并非文件的格式/后缀名。
常见的三种存储格式:文件存储,块存储,对象存储。
- 文件存储的定义
文件存储也称为文件级存储或基于文件的存储,且正如您所想:数据会以单条信息的形式存储在文件夹中。当您需要访问该数据时,您的计算机需要知道相应的查找路径。(注意,这可能会是一条蜿蜒冗长的路径。)存储在文件中的数据会根据数量有限的元数据来进行整理和检索,这些元数据会告诉计算机文件所在的确切位置。它就像是数据文件的库卡目录。
请试想一下塞满文件柜的储藏室。每个文档都会按照某种类型的逻辑层次结构来排放 ——按文件柜、抽屉、文件夹,然后再是纸张。“分层存储”这个术语就是这么来的,而这就是文件存储。它是适用于直接和网络附加存储系统的最古老且运用最为广泛的一种数据存储系统;而且,这种系统您可能已经用了数十年。只要您访问保存在个人计算机上的文件中的文档,您就是在使用文件存储。文件存储具有丰富多样的功能,几乎可以存储任何内容。它非常适合用来存储一系列复杂文件,并且有助于用户快速导航。
问题是,就像文件柜一样,虚拟抽屉只能打开到一定的程度。基于文件的存储系统必须通过添置更多系统来进行横向扩展,而不是通过增添更多容量来进行纵向扩展。
- 块存储的定义
块存储会将数据拆分成块,并单独存储各个块。每个数据块都有一个唯一标识符,所以存储系统能将较小的数据存放在最方便的位置。这意味着有些数据可以存储在 Linux 环境中,有些则可以存储在 Windows 单元中。
块存储通常会被配置为将数据与用户环境分离,并会将数据分布到可以更好地为其提供服务的多个环境中。然后,当用户请求数据时,底层存储软件会重新组装来自这些环境的数据块,并将它们呈现给用户。它通常会部署在存储区域网络 (SAN) 环境中,而且必须绑定到正常运行的服务器。
由于块存储不依赖于单条数据路径(和文件存储一样),因此可以实现快速检索。每个块都独立存在,且可进行分区,因此可以通过不同的操作系统进行访问,这使得用户可以完全自由地配置数据。它是一种高效可靠的数据存储方式,且易于使用和管理。它适用于要执行大型事务的企业和部署了大型数据库的企业。这意味着,需要存储的数据越多,就越适合使用块存储。
但是,块存储有一些缺点。块存储的成本高昂。它处理元数据的能力有限;这意味着,它需要在应用或数据库级别进行处理 — 开发人员或系统管理员又多了一件事要担忧。
- 对象存储的定义
对象存储(Object storage)是一种计算机数据存储架构,它将数据作为对象进行管理,与其他存储架构不同(如文件系统将数据作为文件层次结构进行管理,而块存储则将数据作为扇区和轨道内的块进行管理)。
每个对象通常包括数据本身、数量不等的元数据和一个全局唯一的标识符。对象存储可以在多个层面实现,包括设备层面(对象存储设备)、系统层面和接口层面。在每一种情况下,对象存储都试图实现其他存储架构所不具备的能力,如可由应用程序直接编程的接口,可跨越多个物理硬件实例的命名空间,以及数据管理功能,如数据复制和对象级粒度的数据分发。
对象存储,也称为基于对象的存储,是一种扁平结构,其中的文件被拆分成多个部分并散布在多个硬件间。在对象存储中,数据会被分解为称为“对象”的离散单元,并保存在单个存储库中,而不是作为文件夹中的文件或服务器上的块来保存。
对象存储卷会作为模块化单元来工作:每个卷都是一个自包含式存储库,均含有数据、允许在分布式系统上找到对象的唯一标识符以及描述数据的元数据。元数据很重要,其包括年龄、隐私/安全信息和访问突发事件等详细信息。对象存储元数据也可以非常详细,并且能够存储与视频拍摄地点、所用相机和各个帧中特写的演员有关的信息。为了检索数据,存储操作系统会使用元数据和标识符,这样可以更好地分配负载,并允许管理员应用策略来执行更强大的搜索。
对象存储需要一个简单的 HTTP 应用编程接口 (API),以供大多数客户端(各种语言)使用。对象存储经济高效:您只需为已用的内容付费。它可以轻松扩展,因而是公共云存储的理想之选。它是一个非常适用于静态数据的存储系统,其灵活性和扁平性意味着它可以通过扩展来存储极大量的数据。对象具有足够的信息供应用快速查找数据,并且擅长存储非结构化数据。
当然,它也存在缺点。无法修改对象 — 您必须一次性完整地写入对象。对象存储也不能很好地与传统数据库搭配使用,因为编写对象是一个缓慢的过程,编写应用以使用对象存储 API 并不像使用文件存储那么简单。
- 存储的抽象化:
对象存储系统允许保留大量的非结构化数据。对象存储的用途包括:在社交网络上存储照片,或在在线协作服务(如Dropbox)中存储文件。
对象存储的设计原则之一是将一些较低层次的存储从管理员和应用程序中抽象出来。因此,数据是作为对象而不是文件或块被暴露和管理的。对象包含额外的描述性属性,可用于更好地进行索引或管理。管理员不必执行较低层次的存储功能,如构建和管理逻辑卷以利用磁盘容量或设置RAID级别以处理磁盘故障。
对象存储还允许通过不仅仅是文件名和文件路径对单个对象进行寻址和识别。对象存储在一个桶内或整个系统中增加了一个唯一的标识符,以支持更大的命名空间并消除名称冲突。
- 总结:
对象存储相当于在智能仓库内租了一个仓位,无需自建仓库,就能实现文件存取。
对象存储也可以说成一种无客户端的通用的网盘。
补充说明:
一般的vps提供的空间扩展功能是基于块存储(常见的块存储:物理硬盘,ISCSI,SAN),即将物理硬盘的空间块划分给某个vps使用,对于vps而言识别成未格式化空间,需要自行部署文件系统才能实现访问,当vps损毁时,硬盘空间虽然未被损坏,但是新的vps的设置需要和挂载需要和原先一样,并且支持相应的密码加密,数据完全在vps管理员手中。
对象存储,是云服务商提供的存储空间,使用方无法格式化或者配置文件系统格式,但是对于读取和删除而言基于网络速度,并且云厂商的分布式存储的安全性,因此在数据不灭性上有足够的保证,数据掌握在云服务商的管理员手上,数据传输时可以采用加密解密的方式保证安全。
参考资料:
- https://zh.wikipedia.org/wiki/%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8
- https://zh.wikipedia.org/wiki/%E5%9D%97_(%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8)
- https://www.redhat.com/zh/topics/data-storage/file-block-object-storage
- https://zhuanlan.zhihu.com/p/166289089?