什么是对象存储(OSS/S3)?它与服务器本地挂载的块存储有什么区别?

发布时间:2026/6/27 6:41:27

什么是对象存储(OSS/S3)?它与服务器本地挂载的块存储有什么区别? 买服务器时你会看到两种存储选项一种是服务器自带的系统盘和数据盘另一种是单独购买的对象存储阿里云叫 OSS、AWS 叫 S3、腾讯云叫 COS。它们都能存数据但底层原理完全不同适用的场景也截然不同。选错了要么花冤枉钱要么性能跟不上。这篇文章把块存储和对象存储的本质讲清楚再告诉你什么数据该放哪里。一、块存储服务器的本地硬盘什么是块存储块存储就是你服务器操作系统看到的那个磁盘——/dev/sda、C:\、D:\。它的工作方式和你的电脑硬盘一样操作系统把磁盘划分成固定大小的块通常是 512 字节或 4KB每个块有一个地址。文件系统ext4、XFS、NTFS负责管理这些块决定哪个文件存在哪些块上。当你执行 echo “hello” test.txt 时操作系统会在文件系统中找到一个空闲的 inode文件元数据分配若干个数据块来存储文件内容把hello写入这些数据块更新目录项把文件名和 inode 关联起来整个过程对你来说是透明的你只需要知道文件存在 /data/test.txt。块存储的特点优点低延迟读写延迟通常在 0.1-1ms 级别适合高频随机读写高 IOPSSSD 块存储可以达到数万甚至数十万 IOPS兼容性好操作系统原生支持所有应用都能直接用不需要改代码支持文件系统特性权限控制、硬链接、软链接、ACL 等都能用缺点容量有限单块云盘通常最大 32TB超过这个限制需要挂载多块盘扩展性差容量不够了需要扩容或加盘不能像对象存储那样无限扩展共享困难一块云盘通常只能挂载到一台服务器部分云支持多挂载但有限制成本较高高性能 SSD 云盘的价格明显高于对象存储‍块存储的常见形态二、对象存储为海量数据而生的存储什么是对象存储对象存储把数据当作一个个对象来管理。每个对象包含三部分数据本身文件内容元数据自定义的键值对比如 author张三、content-typeimage/jpeg全局唯一的 ID通常是一个 URL你上传一个文件到对象存储会得到一个类似这样的 URL这个 URL 就是文件的访问地址可以直接通过 HTTP/HTTPS 访问。对象存储的核心设计对象存储和块存储的根本区别在于数据组织方式块存储扁平的块地址空间文件系统管理层级结构目录/子目录对象存储扁平的命名空间Bucket所有对象都在同一层用键Key来标识对象存储没有真正的目录概念。当你看到 images/2024/photo.jpg 这样的路径时它其实只是一个键名images/2024/ 并不是真正的目录只是键名的一部分。控制台显示的目录结构是为了方便浏览而模拟出来的。对象存储的特点优点容量无限理论上没有容量上限存多少算多少成本低存储单价通常是块存储的 1/5 到 1/10高可靠性数据自动多副本冗余可靠性通常达到 99.9999999999%12 个 9易于共享通过 URL 直接访问天然适合互联网分发生命周期管理可以设置规则自动将冷数据转储到低频或归档存储缺点延迟高读写延迟通常在 10-100ms 级别不适合高频随机读写不支持随机修改对象存储是写一次、读多次的模式要修改文件只能整体覆盖不支持文件系统接口不能挂载为本地磁盘部分工具可以模拟但性能差请求计费除了存储费用还要按 API 调用次数和流量付费对象存储的存储类型三、核心对比七个维度拆清楚四、性能对比延迟、吞吐量、IOPS延迟块存储的延迟远低于对象存储。这是因为块存储数据就在服务器本地或同可用区的存储集群网络跳数少协议简单iSCSI、NVMe-oF对象存储数据分布在分布式集群中每次请求都要经过 API 网关、鉴权、路由、数据读取、返回等多个环节实际测试数据以阿里云为例ESSD 云盘平均延迟 0.2msP99 延迟 0.5msOSS 标准存储平均延迟 20-50msP99 延迟 100-200ms吞吐量块存储和对象存储都能提供高吞吐量但场景不同块存储适合小块随机读写比如数据库的 8KB 页读写单盘吞吐量通常在 500MB/s-2GB/s对象存储适合大块顺序读写比如上传一个 1GB 的视频文件单连接吞吐量可以达到 100MB/s-500MB/s多连接并发可以更高IOPSIOPS每秒 IO 操作数是块存储的核心指标对象存储不强调这个指标ESSD 云盘最高可达 100 万 IOPS取决于容量和性能等级对象存储没有 IOPS 概念按 QPS每秒请求数计单个 Bucket 默认支持数千 QPS可以申请提升五、成本对比不只是存储单价选择存储时不能只看每 GB 的存储单价还要考虑请求费用、流量费用、运维成本。存储单价参考值实际以云厂商官网为准对象存储的存储单价大约是 SSD 云盘的 1/5 到 1/10。请求费用对象存储除了存储费用还要按 API 调用次数收费PUT 请求上传约 0.01 元/万次GET 请求下载约 0.01 元/万次如果你的业务有海量小文件的高频访问比如每秒数万次 GET 请求请求费用可能会超过存储费用本身。流量费用对象存储的外网下载流量通常按 0.5 元/GB 收费。如果你的业务有大量外网流量这笔费用不容忽视。内网流量通常免费。块存储没有流量费用因为数据访问走的是内网。总成本对比以一个典型场景为例存储 10TB 数据每月 100 万次 GET 请求每月 5TB 外网流量。在这个场景下对象存储的总成本约为块存储的 74%。但如果流量更大比如每月 20TB 外网流量对象存储的流量费用会达到 10000 元总成本反而更高。结论对象存储在存储成本和冷数据场景下有优势但高频访问和大流量场景下总成本可能并不低。六、什么数据该放哪里必须用块存储的场景数据库MySQL、PostgreSQL、MongoDB 等数据库的数据文件和日志文件必须放在块存储上。数据库的高频随机读写、事务日志的顺序写入都需要块存储的低延迟和高 IOPS。系统盘操作系统必须安装在块存储上因为内核启动、文件系统挂载等操作需要块设备接口。高频读写的应用数据比如 Redis 的 RDB/AOF 文件、Elasticsearch 的索引文件、Kafka 的消息日志这些应用对延迟敏感必须用块存储。需要文件系统特性的场景比如需要 POSIX 权限控制、硬链接、文件锁等只能用块存储。适合对象存储的场景图片和视频用户上传的头像、商品图片、视频文件天然适合对象存储。通过 URL 直接访问还能配合 CDN 加速。备份和归档数据库备份、日志归档、合规数据留存访问频率低但需要长期保存对象存储的低成本和生命周期管理非常合适。静态资源分发网站的 CSS、JS、字体文件小程序的素材包游戏的资源包放在对象存储 CDN 上成本低、分发快。大数据分析的原始数据数据湖、数据仓库的原始数据CSV、Parquet、JSON数据量大但访问频率不高适合放在对象存储上。日志存储应用日志、访问日志、审计日志写入后很少修改主要用于事后分析适合对象存储。两者都可以的场景有些场景两者都能用取决于具体的访问模式文档存储如果是企业网盘、文档管理系统用户上传后频繁编辑用块存储配合 NAS 或文件存储更合适如果是上传后只读的场景比如合同归档用对象存储更划算。AI 训练数据训练数据集如果已经预处理好、只读不写放在对象存储上成本低如果训练过程中需要频繁读取小文件比如图片分类任务放在块存储上 IOPS 更高训练速度更快。七、实际架构中的组合使用大多数业务不会只用一种存储而是块存储 对象存储组合使用。典型 Web 应用架构视频上传 → 对象存储原始文件 ↓ 转码服务从对象存储读取转码后写回对象存储 ↓ CDN 分发从对象存储拉取缓存到边缘节点 ↓ 用户播放从 CDN 或对象存储获取应用服务器系统盘和应用代码放在块存储上保证启动速度和运行性能数据库数据文件和日志放在高性能 SSD 块存储上保证读写性能用户上传的文件直接上传到对象存储不经过应用服务器的磁盘数据库备份定期备份到对象存储利用生命周期管理自动转储到低频或归档存储视频平台架构视频上传 → 对象存储原始文件 ↓ 转码服务从对象存储读取转码后写回对象存储 ↓ CDN 分发从对象存储拉取缓存到边缘节点 ↓ 用户播放从 CDN 或对象存储获取视频文件大、访问频率相对低、需要全球分发对象存储 CDN 是最优解。如果用块存储存视频成本高、扩展性差、还不方便 CDN 拉取。数据湖架构业务数据 → 数据接入Kafka/Flink ↓ 对象存储原始数据层Raw Data ↓ 数据清洗Spark/EMR从对象存储读取处理后写回 ↓ 对象存储清洗后的数据Processed Data ↓ 数据分析Presto/Hive直接查询对象存储上的数据数据湖的数据量大PB 级别、访问频率低、主要用于分析查询对象存储是标准选择。部分分析引擎如 Presto针对对象存储做了优化查询性能可以接受。八、几个常见的误区误区一“对象存储可以完全替代块存储”对象存储和块存储是互补关系不是替代关系。数据库、系统盘、高频读写的应用数据必须用块存储。对象存储适合的是大文件、低频率、互联网访问的场景。误区二“对象存储便宜所有数据都往里塞”对象存储的存储单价确实低但请求费用和流量费用不容忽视。如果你的业务有海量小文件的高频访问比如每秒数万次 GET请求费用可能比存储费用还高。这种情况下用块存储或缓存层Redis更划算。误区三“对象存储不能当磁盘用”有些工具如 ossfs、s3fs、goofys可以把对象存储挂载为本地文件系统看起来像一块磁盘。但这种挂载的性能很差——延迟高、不支持随机修改、并发性能有限。只适合轻量级的文件浏览和备份不适合跑数据库或高频读写的应用。误区四“块存储的数据不安全需要额外备份”云盘本身就有高可靠性通常 99.9999999%9 个 9单盘故障的概率极低。但块存储不能防止人为误删——如果你不小心 rm -rf 了数据云盘也救不了你。关键数据仍然需要备份到对象存储或其他地方。误区五“对象存储的可靠性比块存储高”对象存储的可靠性12 个 9确实高于块存储9 个 9但这并不意味着对象存储的数据绝对不会丢。12 个 9 意味着每 10000 个对象每年可能丢失 0.000001 个。对于海量数据比如 10 亿个对象每年可能丢失 0.1 个对象。关键数据仍然需要多副本、跨区域备份等额外保护。九、选型决策清单最后用五个问题帮你快速判断你的数据需要被数据库或应用高频读写吗 是 → 块存储否 → 看下一条。你的数据需要作为操作系统的一部分系统盘、应用安装目录吗 是 → 块存储否 → 看下一条。你的数据主要是图片、视频、文档、备份这类大文件、低频率的吗 是 → 对象存储否 → 看下一条。你的数据需要通过 URL 直接在互联网上访问吗 是 → 对象存储否 → 看下一条。你的数据量很大TB 级别以上但访问频率不高吗 是 → 对象存储否 → 块存储或对象存储都可以看成本。十、写在最后块存储和对象存储没有绝对的好坏只有适不适合。块存储是高性能、低延迟的代名词适合数据库、系统盘、高频读写的应用数据。对象存储是大容量、低成本、互联网访问的代名词适合图片视频、备份归档、静态资源分发。理解它们的本质区别根据业务场景选择合适的存储类型才能在性能和成本之间找到最佳平衡点。如果你的业务还在评估阶段不妨先在恒创科技的云服务器上搭配对象存储试用——块存储保证核心业务的性能对象存储承载海量非结构化数据两者配合才能发挥最大价值。

相关新闻