直接回答:三者区别在于数据组织方式和访问协议。块存储(如云盘 EBS、云硬盘)把存储暴露为原始块设备,由操作系统格式化成文件系统,低延迟、可随机读写,典型挂载到单台云主机做系统盘或数据库数据盘。文件存储(如 NAS、EFS、CFS)提供 POSIX 语义的目录树,通过 NFS/SMB 协议访问,天然支持多机共享挂载。对象存储(如 S3、OSS、COS)以"桶+对象"的扁平命名空间组织数据,通过 HTTP REST API 读写,对象不可原地修改(覆盖即整体重写),但提供近乎无限的容量、多副本高可靠和极低的单位成本。

选型要点:需要毫秒级延迟和随机 IO(数据库、磁盘密集型应用)选块存储;多台机器要共享同一份文件(CMS 素材、渲染农场、共享配置)选文件存储;海量静态资源、备份归档、日志和数据湖选对象存储,配合 CDN 分发。注意对象存储是最终一致性语义(现主流厂商已提供强一致读),不能当文件系统用,网盘类"挂载对象存储"的方案在重命名、追加写场景性能和语义都有坑。

成本上通常对象存储 < 文件存储 < 块存储,但请求次数、流量、取回(冷存储)都可能计费,评估时要看完整计费模型。

追问方向:对象存储的生命周期管理和分层存储怎么用?为什么数据库不能直接跑在对象存储上?S3 的一致性模型经历了什么变化?

(约 580 字)