zz``块存储文件存储对象存储这三者的本质差别是什么?

Posted xiaodoujiaohome

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zz``块存储文件存储对象存储这三者的本质差别是什么?相关的知识,希望对你有一定的参考价值。

本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景

 

分布式存储的应用场景相对于其存储接口,现在流行分为三种:

  1. 对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、又拍、Swift、S3

  2. 块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)

  3. 文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。

 

【块存储】

典型设备:磁盘阵列,硬盘,虚拟硬盘

【文件存储】
典型设备:FTP、NFS服务器,SamBa

【对象存储】

典型设备:内置大容量硬盘的分布式服务器

 

块存储接口的操作对象是二进制数据,物理存储位置是硬盘 (通过逻辑目录 找到对应分区,然后找到对应存储块存储。

文件存储接口操作对象是目录和文件,物理存储位置 是由 文件服务器对应的文件系统来决定的(比块存储多一个过程:判断参数文件 应该存储到哪个逻辑目录上。)

对象存储接口的操作对象是对象,存储位置是大型分布式服务器. 

如果是对象是文件,使用文件服务器存储(判断参数文件 应该存储到哪个逻辑目录上),

 如果是对象,使用块存储

存储对外提供服务我觉得可以分成两层,

一层就是物理层,存储层;

另外一层就是文件系统一层。

块存储就是在物理层这个层面对外提供服务,使用它的系统,有用自己的文件系统格式化。这样一旦被一个系统使用,就独占了。

文件存储,就是在文件系统一层对外提供服务,系统只用访问文件系统一级就可以,各个系统都可以根据接口取访问。

对象存储,也是文件系统一级提供服务,只是优化了目前的文件系统,采用扁平化方式,弃用了目录树结构,便于共享,高速访问。

 

详细介绍:

 

这三种存储,分别对应了不同的访问协议,这也就决定了他们的本质差别。

先说一下文件存储,主要操作对象是文件和文件夹。以 NFS 为例,文件相关的接口包括:LOOKUP/ACCESS/READ/WRITE/CREATE/REMOVE/RENAME 等等,文件夹相关的接口包括:MKDIR/RMDIR/READDIR 等等。同时也会有 FSSTAT/FSINFO 等接口用于提供文件系统级别的信息。POSIX,SAMBA 等也是文件存储协议。协议更注重接口的灵活,以及访问权限控制

块存储,主要操作对象是磁盘。以 SCSI 为例,主要接口有 Read/Write/Read Capacity/Inquiry 等等。FC,iSCSI,也是块存储协议。和文件存储相比,没有文件和目录树的概念,一般协议也不会定义磁盘的创建和删除操作。协议更注重传输控制

对象存储,主要操作对象是对象(Object)。以 S3 为例,主要接口有 PUT/GET/DELETE 等。和文件和对象存储相比,没有随机读写的接口。和文件存储相比,没有目录树的概念。协议更注重简洁。

 

以上是关于zz``块存储文件存储对象存储这三者的本质差别是什么?的主要内容,如果未能解决你的问题,请参考以下文章

块存储、文件存储、对象存储这三者的本质差别是啥?

分布式存储的三种类型

对象存储文件存储块存储这三者之间有什么区别?

块储存对象存储文件存储的区别和联系

块存储文件存储和对象存储三者的区别

zz`linux块设备IO栈浅析