块存储 vs. 对象存储:你真正需要哪一种?

比较 Cloud Computing 中的块存储与对象存储。了解性能、定价、使用场景以及需要避免的常见错误。

Block Storage vs Object Storage

大多数人都会选错的 Cloud 选择

你正在 Cloud 中搭建一个新的应用程序。服务提供商会问:块存储还是对象存储?

但如果你并不确定,也不了解两者的区别,那你并不孤单。大多数人都会随机选择一个,或者直接使用默认选项。

这个选择的重要性比你想象的更高。选错了,要么浪费钱,要么拖垮性能。

什么是 Cloud Computing 中的块存储?

块存储的工作方式类似于连接到你电脑上的硬盘。操作系统看到的是原始数据块。它会根据位置读取并写入特定位置的数据。

你的 VM 从块存储启动,你的数据库运行在块存储上,而需要磁盘的应用程序也会使用块存储。

它速度快、延迟低、IOPS 高,非常适合任何需要快速响应的场景。

当你保存文件时,系统会直接将其写入磁盘上的特定数据块。需要修改该文件的一部分?它会立即只更新那些数据块。

块存储一次只能挂载到一台服务器上。该服务器会像使用本地磁盘一样使用它。你可以用文件系统对其进行格式化、安装操作系统并运行数据库。凡是需要磁盘级访问的场景都适用。

什么是对象存储,它与块存储有何不同?

对象存储的工作方式完全不同。没有磁盘、没有文件系统,也不会直接挂载到服务器上。

相反,你存储的是对象。每个对象都是一个文件,包含元数据以及唯一标识符。你通过 API 访问对象,而不是通过磁盘操作。

它类似于一个巨大的图书馆。每个项目都有一个 ID 编号。你通过 ID 请求项目,图书馆会找到它们并交给你。你不会直接浏览书架。

对象存储可以扩展到惊人的规模,容纳数十亿个对象,但这并不成问题,系统会处理好一切。

每个对象都可以携带元数据、标签、描述和自定义信息。这让大规模组织和查找数据变得容易得多。

Tenbyte T2 Object Storage、AWS S3、Azure Blob Storage、Google Cloud Storage 都是对象存储系统。

块存储 vs. 对象存储性能:真正重要的是什么

在事务型工作负载上,块存储在速度方面更胜一筹。数据库查询?毫秒级响应。

对象存储在处理小请求时较慢。每次操作都要经过 HTTP API。如果存在额外开销,延迟就会更高。

但在大型顺序操作中,对象存储表现出色。上传一个 10GB 视频文件?对象存储可以高效处理。下载数百万个日志文件?对象存储也能完美扩展。

对于需要快速随机访问的数据库,块存储是唯一真正的选择。对于存储媒体文件、备份或归档数据,对象存储则更合理得多。

块存储与对象存储如何处理数据变更

块存储允许你立即修改文件的一部分。数据库更新几行数据?只会重写那些特定的数据块,其他内容不会变化。

对象存储不是这样工作的。想要修改内容?你需要替换整个对象,不支持局部更新。

一个 1GB 文件只需要修改一行?对象存储会要求你重新上传一个新的 1GB 文件。而块存储只会修改相关的字节。

这对应用程序非常重要。数据库写入会持续以小块形式发生。块存储可以自然处理这种场景,而对象存储会成为灾难。

块存储 vs. 对象存储的成本差异

块存储按你预配置的容量收费。预留 500GB?无论是否使用,你都要为 500 GB 付费。性能还要额外收费。需要更多 IOPS?更高吞吐量?价格就会继续上涨。

对象存储则按你实际存储的数据量加请求次数收费。有 500GB 的配额但实际只需要 200GB?那你只需为 200 GB 付费。将海量数据集放在块存储上,成本很快就会变得昂贵。同样的数据放在对象存储上,成本会低得多。

很少访问的冷数据?对象存储还提供更便宜的分层。类似 Glacier 的归档存储可将成本压到几乎可以忽略不计。

真实使用场景

何时使用块存储:真实世界示例

- 运行 MySQL、PostgreSQL、MongoDB 的数据库服务器

- 虚拟机启动盘和系统卷

- 需要文件系统访问和文件锁定的应用程序

- 任何要求低延迟和高 IOPS 的场景

- 具有频繁读写的开发和测试环境

何时使用对象存储:真实世界示例

- 备份和灾难恢复存储

- 大规模媒体文件、视频和图像

- 日志聚合与分析

- 机器学习训练数据集

- 静态网站 Hosting 和 CDN 源站

- 用于分析的数据湖

- 长期归档存储

为什么元数据让对象存储在大规模场景下更易管理

块存储的元数据非常有限。基本上只有文件系统提供的内容,例如文件名、大小和时间戳。

对象存储将元数据视为核心能力。你可以添加自定义标签、存储描述、跟踪版本并设置访问策略,所有这些都在对象级别完成。

需要找到所有在 3 月上传并被标记为“product photos”的图片?对象存储可以做到。块存储则需要你在文件系统之上自行构建这些能力。

对于组织数百万甚至数十亿个文件而言,对象存储的元数据能力变得至关重要。

应避免的常见块存储 vs. 对象存储错误

把对象存储当作文件系统来使用。 对象存储不支持 POSIX 操作。没有文件锁定、没有随机写入,把它当作已挂载的磁盘存储来使用会带来问题。

在对象存储上运行数据库。延迟以及缺乏局部更新能力会严重拖慢性能。因此,数据库需要块存储。

在块存储上存放冷归档数据。 这是对资金的巨大浪费。这些长期闲置的数据放在块存储上的成本会远高于应有水平。

认为对象存储总是更慢。 对于大型顺序操作和大规模并行访问,对象存储实际上表现非常好。延迟只会影响小型事务型工作负载。

没有考虑访问模式。 你如何访问数据比任何事情都重要。随机小块读写?使用块存储。批量上传和下载?使用对象存储。

Tenbyte Cloud 如何同时支持块存储和对象存储

Tenbyte Cloud 作为平台的一部分,同时提供块存储和对象存储。

块存储 随 Cloud VM 提供。将卷挂载到你的虚拟机上。可按你的需求进行格式化。安装操作系统、运行数据库,并以 Cloud 规模执行标准磁盘操作。

定价清晰透明,按每 GB 每月计费。你配置所需容量,并为该容量付费。

T2 Object Storage 提供兼容 S3 的 API,以实现大规模扩展。可存储备份、媒体文件、日志和归档数据。通过标准 S3 工具和库进行访问。

对象存储同样按每 GB 计费,但对于大型冷数据集通常成本更低,因为它就是为这种使用场景优化的。

为正在运行的应用程序使用块存储。为其他所有需要持久、可扩展且低成本存储的内容使用对象存储。

块存储 vs. 对象存储:如何选择正确方案

这个决策归根结底取决于访问模式和需求。需要类似磁盘的访问方式?低延迟?频繁的小块读写?使用块存储。需要超大规模?丰富的元数据?更低的每 GB 成本?通过 API 访问?使用对象存储。

大多数 Cloud 部署都会同时使用两者。虚拟机和数据库运行在块存储上。备份、媒体和归档数据则存放在对象存储中。

不要强迫一种存储去承担另一种存储的工作。块存储并不是好的备份仓库,对象存储也不是好的数据库磁盘。

让每种存储各司其职。性能会保持在高水平,成本会保持合理,问题也会降到最低。


你的 Cloud 基础设施是否同时需要块存储和对象存储?

Tenbyte Cloud 同时包含这两种选项,具备简单透明的定价和完整集成。让你的应用程序运行在块存储上,在对象存储中大规模存放数据。

联系我们,讨论哪种存储类型最适合你的工作负载。