块存储

---

块存储是一种低级别的数据存储方式,它将数据分成固定大小的块,每个块都有独立的地址。块存储通常用于需要快速读写数据的场景,如数据库、虚拟机磁盘和操作系统磁盘。

如图所示,如果我们通过 web01 服务器往存储设备里面写入数据,写入存储设备的数据会先通过 web01 的缓冲区。

如果数据存储在 web01 缓冲区的这个时间段,web02 服务器需要访问 web01 写入的数据,这个时候 web02 服务器的本地缓存、本地硬盘和存储设备的硬盘都没有 web01 写入的数据,这就会出现数据不一致的问题。

特点

+ 提供类似硬盘的存储结构,应用程序可以直接读取和写入存储块。 + 高性能,适用于需要快速访问数据的应用。 + 块级存储系统允许多种文件系统(如EXT4、NTFS等)来管理数据。 + 一般通过网络或专用存储硬件提供(如iSCSI、Fibre Channel等)。

应用场景

+ 数据库存储(高性能要求的数据库)。 + 虚拟化环境中虚拟机的磁盘。 + 文件系统级别的存储需求。

文件存储

---

文件存储是基于传统文件系统的存储方式,它将数据存储为文件,并通过目录结构进行组织。用户可以通过文件路径来访问数据。常见的文件存储系统包括网络附加存储(NAS)和本地文件系统。

在存储设备划分出一个硬盘,将划分出的硬盘制作成文件系统,将文件系统挂载到/code 目录下,客户端在使用的时候,直接关联的时存储设备的/code 目录。不同于块存储的方式,存储设备的检索过程是在存储设备里面完成的。

特点

+ 以文件为单位进行存储,文件有路径、名称等属性。 + 支持文件夹和目录结构,适用于传统的文件管理。 + 适合需要共享和多用户访问的场景。 + 文件存储通常通过NFS、SMB等协议进行访问。

应用场景

+ 文件共享和协作办公。 + 多用户文件访问。 + 企业内部的文档存储和管理。

对象存储

---

对象存储是一种基于对象的数据存储方式,它将数据封装成对象,每个对象包括数据本身、元数据和唯一的标识符。对象存储系统通常用于存储大量非结构化数据,如图片、视频、备份数据和日志。

对象存储没有文件系统的概念,不会随着客户端数量的增多而造成压力的成倍增长。数据的存储分为元数据 +实际数据,类似 key:value 形式。

客户端访问存储设备是通过 url 地址进行访问的。

特点

+ 数据存储为对象而不是文件或块,每个对象有唯一的ID进行访问。 + 高度扩展性,能够存储大量数据,适合大规模存储需求。 + 对象存储通常不需要特定的文件系统支持,数据存储在分布式系统中。 + 通过HTTP API进行访问,如AWS S3、Azure Blob Storage等。

应用场景

+ 云存储和备份。 + 媒体文件存储(如图片、视频、音频)。 + 日志和大数据分析。