简单总结:
1. 块存储 设备一般是磁盘、暴露直接访问SCSI和网络访问FC等标准协议、支撑直接的磁盘操作,适合场景一遍是对读写有非常高的性能要求,如数据库
2. 文件存储 以文件和文件夹方式、通过IP协议、实现对同类型数据的存储、分层管理和检索的服务能力;
3. 对象存储 是一种将数据作为对象进行管理的计算机数据存储体系结构;与其他存储体系结构(例如将数据作为文件层级管理的文件系统)以及将数据作为块和扇区内的块进行管理的块存储相对。每个对象通常包括数据本身,可变数量的元数据和全局唯一标识符。
通过下图,可以一目了然看到,块存储是最基础的、直接操作裸盘(对磁盘进行分区或逻辑分区),是所有服务的基础,支持本地(如系统物理盘)、网络(如磁盘阵列)接口协议;文件系统是在构建在磁盘之上的一套数据分层组织方式,以文件和文件夹(分层)作为基础的管理维度、提供易于共享、理解和管理的数据访问形态;对象存储完全将数据作为一个对象来管理,没有文件系统的分层概念、对象之间完全相互独立,可以构建在现有的文件系统上、也可以直接构建在裸盘存储(一般不建议、需要把文件系统做的一些基础能力在重新实现);
对象存储的理念其实并不新鲜:
1. 所有数据均以对象作为管理单位,每个对象有唯一标识作为管理和检索依据(是不是很像一个目录下的文件,文件名作为唯一标识)
2. 每个对象归属一个桶、不同桶之间资源隔离(可以理解成只支持一层 对象管理)
3. 对象存储OSD能力要求(这个是和分布式文件系统的主要不同点):元数据的分布式存储偏移(OSD管理存储在其上对象的元数据)、只提供基于对象标识(ID)的数据读写、具备一定智能处理能力(数据分布、数据预取等)
实际实现了元数据管理的去中心化和对象管理扁平化,可以实现真正的存储无限扩展能力,为上层的服务提供更好的管理机制。至于智能化的能力、很多分布式系统都具备。