对象存储概述:它到底是什么?

说实话,我第一次接触对象存储时也被搞蒙了。以前做传统IT运维,天天跟SCSI命令、LUN、文件系统路径打交道,突然冒出来一个“对象”,我脑子里全是问号。但它本质上就是另一种存东西的方式——而且现在云上几乎所有非结构化数据都在用它。

从物理磁盘到逻辑存储的三条路

数据存到磁盘上,总得有个组织方式。这么多年下来,业界主要就仨方案:块存储、文件存储、对象存储。我画了张图帮你理解它们之间的关系。

三种存储模式与对象存储核心概念 块存储 文件存储 对象存储 • 裸磁盘/卷 • 按扇区/块寻址 • 典型:SAN、EBS • 需要格式化文件系统 • 目录树 + 文件名 • 按路径寻址 • 典型:NFS、SMB • 锁、属性在目录元数据 • 扁平命名空间 • 对象 + 元数据 + ID • 典型:S3、OSS、COS • RESTful API访问 对象存储的核心三要素 Bucket (桶) Object (对象) MetaData (元数据) 对象 = 数据本身 + 自描述元数据 + 全局唯一ID,通过HTTP API直接访问。

块存储?文件存储?它们有什么不一样

我用一个表格帮你快速对比三种存储的核心差异。这个表我每次给团队培训都会拿出来讲,简单粗暴。

维度块存储文件存储对象存储
数据组织块/扇区文件+目录树对象+桶
访问接口SCSI、iSCSINFS、SMBHTTP RESTful
典型产品SAN、EBSNAS、EFS、Azure FilesS3、OSS、COS、GCS
扩展性受限于控制器/网络目录树瓶颈近乎无限(扁平)
元数据能力极弱(只有块地址)文件名、时间、权限丰富自定义元数据
适用场景数据库、VM磁盘共享文档、代码库备份、影音、日志、AI训练

举个例子,你公司如果跑着大型Oracle RAC,底层大概率是块存储——因为需要低延迟、SCSI命令直通。但如果要共享几百个Word文档给销售团队,文件存储(NAS)更合适。而一旦碰到海量图片、视频、日志文件,块存储和文件存储都会卡在高额扩容成本和目录树上限上。这时候对象存储就登场了。

对象存储的工作原理——说白了就是“存东西+贴标签”

每个对象存为一个独立的实体。它包含三个部分:变长的二进制数据(比如一张1MB的宠物照片)、一堆自描述的元数据(拍摄时间、作者、GPS坐标、自定义标签),以及一个全局唯一的对象ID(通常是一个HTTP URL)。

对象存储采用扁平命名空间,没有目录层级。所有对象都扔进一个个“桶”(Bucket)里。你可以把桶理解为一个巨大的容器,里面可以放任意数量的对象。访问对象时直接通过HTTP GET https://bucket.example.com/object-id 就行。

我刚开始用S3时,总觉得没有文件夹好别扭。后来发现,你完全可以通过对象Key模仿目录结构,比如 images/2025/04/photo.jpg,本质上只是一个字符串,并不是真正的目录。这种扁平设计让对象存储的扩展性几乎没有上限——我曾帮一个视频平台管理过PB级数据,每秒数千个请求,用传统NAS根本扛不住。

对象存储的典型应用场景

几乎你听说过的云原生应用,底层都离不开对象存储。我列几个常见的,你看看是不是都有影子。

  • 静态网站托管:把HTML/CSS/JS直接放进桶里,配个静态网站托管功能,不用Web服务器就能跑。
  • 备份与归档:重要数据定期备份到对象存储,支持生命周期管理,自动迁到低成本的冷存储或冰川层,我见过不少公司用这个替换磁带。
  • 大数据与AI训练:训练集、数据集直接以对象形式存储,Spark和TensorFlow都可以通过S3协议高效读取。
  • 多媒体内容分发:图片、视频上传后在CDN层加速,对象存储作为源站,配合签名URL做防盗链。
  • 日志和物联网数据:海量设备上报日志直接写入对象存储,再用分析引擎查询,成本极低。

一个真实案例:我之前服务的一家在线教育公司,每天产生约5TB的录播视频。之前用CIFS共享文件存储,一年后目录数上千万,ls命令都要十几秒。迁移到对象存储后,问题全消失了。而且我们给每个视频对象挂了自定义元数据(教师ID、课程ID、时长),检索效率翻了好几倍。

小经验:做对象存储选型时,记得关注S3 API兼容性。现在AWS S3是事实标准,市面上大部分对象存储(包括开源MinIO、Ceph RGW、阿里云OSS)都兼容S3 API。我建议优先选API兼容度高的,避免后面被绑定。

避坑提醒:曾经有个项目把数据库binlog直接全量写到对象存储,忽略了桶内对象版本控制。一次误删除把旧备份全吞了。后来我养成了习惯——所有生产桶默认开启版本控制,并且配上跨区域复制。数据安全怎么做都不过分。

总结一下这一章的核心

对象存储用扁平空间、元数据驱动、HTTP API访问的模式,完美解决了海量非结构化数据的存储难题。它和块存储、文件存储是互补关系,不是替代关系。理解它们的区别,能帮你后续在做架构设计时选对合适的存储底座。

嗯,这一章先聊到这。内容不复杂,但都是地基。后面我们会一步步带大家手把手实现SSE-KMS加密,那才是真正的重头戏。