三种形态的本质
块存储把介质切成固定大小的逻辑块交付,主机拿到的是卷或 LUN,必须先建文件系统才能使用;文件存储对外暴露目录树,多台主机通过网络挂载同一份命名空间;对象存储把数据连同自定义元数据打包成对象,用全局唯一的键寻址,客户端通过 HTTP/S3 类接口读写,不需要文件系统参与。三者的分界线不是「盘放在哪里」,而是「谁管理命名空间」:块存储把命名空间交给主机,文件存储由存储系统管理目录树,对象存储由服务端维护键值索引与元数据。
基本信息
| 访问单位 | 块:逻辑块与 LUN;文件:文件与目录;对象:整个对象(键值) |
|---|---|
| 典型协议 | 块:iSCSI、FC、NVMe-oF;文件:NFS、SMB/CIFS;对象:S3、Swift、HTTP |
| 共享能力 | 块需集群文件系统或集群软件才能多主机共享;文件天然多客户端共享;对象天然面向海量并发 |
| 扩展方式 | 块靠扩卷与卷迁移;文件与对象可按节点横向扩展 |
| 常见落点 | 块:数据库与虚拟化;文件:办公共享、代码、剪辑;对象:备份归档、图片视频、日志 |
三形态对照
| 维度 | 块存储 | 文件存储 | 对象存储 |
|---|---|---|---|
| 访问粒度 | 逻辑块 | 文件与目录 | 整个对象 |
| 命名空间归属 | 主机侧(卷内) | 存储侧(目录树) | 服务侧(平铺键值) |
| 随机改写 | 支持原地改写 | 支持原地改写 | 对象整体覆盖,不支持部分改写 |
| 典型时延 | 最低,微秒到毫秒 | 毫秒级,含协议开销 | 毫秒到百毫秒 |
| 规模上限 | 受阵列与卷规格约束 | 受文件系统与集群规模约束 | 按桶横向扩展,近乎无上限 |
典型使用场景
- 数据库与虚拟机:需要低时延随机读写、由主机自己管理文件系统,用块存储
- 多台机器读写同一份文件:办公文档、设计素材、容器 ReadWriteMany 卷、构建缓存,用文件存储
- 海量非结构化数据:图片视频、备份归档、日志汇集与大数据原始层,用对象存储
- 云原生环境:块存储做单节点读写卷、文件存储做共享卷、对象存储做无状态服务后端
- 分层组合:热数据放块、共享数据放文件、冷数据沉到对象,是同一机房最常见的搭配
对象本身不支持部分改写。需要频繁修改大文件(数据库文件、虚拟机镜像)时要选块或文件存储;对象存储的通用做法是写新键再删旧键,或把大文件切成多个小对象分别维护。
协议决定能力上限:iSCSI 与 FC 只提供块语义,NFS/SMB 只提供文件语义,S3 只提供对象语义。用第三方工具把对象存储挂成盘会损失一致性与随机写性能,只适合归档读取类场景。