【File Storage 学习系列】对象存储、文件存储、块存储的区别

认识存储

像我一样的童鞋,认知最多的是对象存储,认知的点是可以通过 HTTP 等 Restful 接口进行使用,指定 key 查到对应的内容,类似键值对的方式使用。这便是最开始的认知。

还记得我最开始在比特大陆时,做过一个事情,是将 HDFS 的图片,都转存到 AWS 的 S3 上,但当时并没有认知到,为什么需要转存上去,为什么要用 S3,只是人云亦云的说 S3 能够更快等。

后来在字节,我知道图片、文章、视频等,都是存储在对象存储上的。这个时候,我知道对象存储的使用场景便是如此了。写少读多,为互联网而生。当时也接触了 HDFS,在数据开发中常用,也没有更深入的了解。

再来了阿里云,才真正开始了解存储。

存储:存下内容提供各种写方式、读方式。并根据读写方式、时延的不同,出现了各个场景的划分。分化出了对象存储、文件存储、快存储、数据库存储等各种存储方式。所以学习存储,先需要了解他们的区别与特点,场景具体有什么不同。

对象存储

  1. Restful API:支持通过 Restful API 的方式进行上传、查看、管理数据
  2. 对象:数据以对象的形式存储在Bucket 中,表明数据是以非结构化的方式进行存储
  3. 不支持增量修改:只支持重新完全覆盖写操作

文件存储

  1. 提供给计算节点使用
  2. Posix 接口、NFS / SMB 协议,适配操作系统
  3. 多计算节点共享存储
  4. 以文件系统层次化结构,提供完整文件系统语意

块存储

  1. 块级别存储
  2. 提供块设备,类似 PC 中的磁盘
  3. 标准虚拟块设备协议接口或 NVMe 协议接口
  4. 共享性较差:NVMe 支持一定程度的多计算节点共享
  5. 很多时候无法直接使用,需要进行格式化建立文件系统使用

总结

  1. 对象存储:在互联网提供在在线读取业务场景有着很强的优势,针对写少读多场景,比如图片、短视频等
  2. 文件存储:在吞吐、共享上有很强的优势,主打高性能计算、容器场景以及传统使用 NAS 业务上云
  3. 块存储:在时延上有很强优势,主打通用业务场景

块存储的用户是可以读写块设备的软件系统,例如传统的文件系统、数据库;文件存储的用户是自然人;对象存储的用户则是其它计算机软件。

摘录自 https://www.zhihu.com/question/21536660。这段是从组织形式来阐述的,但根据其各自的特点衍生出了不同的用法形式。