三种存储类型比较-文件、块、对象存储


 

  • 对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、又拍、Swift、S3
  • 块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)
  • 文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。

 

首先,我说下块存储。块存储可以看作为是裸盘,最明显的特征是不能被操作系统直接访问。可以通过划分逻辑卷、做RAID、LVM(逻辑卷)等方式将它格式化,可以格式化为你所指定的文件系统(Ext3,Ext4,NTFS,FAT32等),然后才可以被操作系统访问。常见的DAS、FC-SAN、IP-SAN都是块存储。

优点:读写速度快(带宽和IOPS);缺点:太过于底层,不利于扩展,不能被共享;

其次,与块存储对应的是文件存储。文件存储可以分为本地文件存储和网络文件存储。

  • 本地文件存储:ext3,ext4,NTFS,FAT32
  • 网络文件存储(NAS存储):CIFS,NFS

文件存储最明显的特征是支持POSIX的文件访问接口:open、read、write、seek、close等;

优点:便于扩展&共享;缺点:读写速度慢;

对象存储,相对来说是比较新的一种存储。有一种说法是这样的,对象存储一定是分布式存储,因为分布式文件存储可能是分布式存储,而未必是对象存储。常见的对象存储的开源实现有Ceph的RADOS、Openstack的swift、AWS s3等;常见分布式文件系统有lustre、glusterfs、HDFS等;

表面区别:对象存储支持的访问接口基本是restful接口,而分布式文件存储提供的是POSIX兼容的文件操作接口;

本质区别:分布式文件存储文件组织方式为目录树,对象存储采用的是扁平的组织方式;对象存储不支持随机读取和写入,put和get都是针对整个文件。

 

各有优劣势,不能说谁更好,各自适应的场景不同。对象存储主要运用在文件归档,云服务,备份,视频应用等;块存储主要应用在数据库、中间件、云桌面等;文件存储主要应用在文件共享,影视非编等。元核云三种存储方式都支持。

https://zhidao.baidu.com/question/333934222583814485.html

 

SDS趋势之二:对象存储将替代文件存储

https://cloud.tencent.com/developer/article/1411403

说了这么多还有一个不得不说的话题,那就是文件存储是不是没用武之地了?

答案是适合自己的才是最好的,用最适合于自己场景的存储才是好存储。假如你是互联网应用、流媒体、CDN、海量数据,那么采用对象存储再合适不过了;假如你是想弄个文件共享服务,那么还是NAS合适。所以说本文并不是说文件存储没了用武之地,而是说对象存储取代了一部分原来并不适用于文件存储的业务场景。

 

阿里oss对象存储