1. 块存储:服务器
定义:这种接口一般以QEMU Driver或者Kernel Module的方式存在,这种接口须要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)分布式
典型设备:磁盘阵列,硬盘,虚拟硬盘优化
操做对象:二进制数据,物理存储位置是硬盘 (经过逻辑目录 找到对应分区,而后找到对应存储块存储。)ui
分层:块存储就是在物理层这个层面对外提供服务,使用它的系统,有用本身的文件系统格式化。这样一旦被一个系统使用,就独占了。阿里云
访问协议:块存储,主要操做对象是磁盘。以 SCSI 为例,主要接口有 Read/Write/Read Capacity/Inquiry 等等。FC,iSCSI,也是块存储协议。和文件存储相比,没有文件和目录树的概念,通常协议也不会定义磁盘的建立和删除操做。协议更注重传输控制。对象
2. 文件存储:接口
定义:一般意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口)ci
典型设备:FTP、NFS服务器,SamBapdo
操做对象:目录和文件,物理存储位置 是由 文件服务器对应的文件系统来决定的(比块存储多一个过程:判断参数文件 应该存储到哪一个逻辑目录上。)权限控制
分层:在文件系统一层对外提供服务,系统只用访问文件系统一级就能够,各个系统均可以根据接口取访问。
访问协议:主要操做对象是文件和文件夹。以 NFS 为例,文件相关的接口包括:LOOKUP/ACCESS/READ/WRITE/CREATE/REMOVE/RENAME 等等,文件夹相关的接口包括:MKDIR/RMDIR/READDIR 等等。同时也会有 FSSTAT/FSINFO 等接口用于提供文件系统级别的信息。POSIX,SAMBA 等也是文件存储协议。协议更注重接口的灵活,以及访问权限控制。
3. 对象存储:
定义:也就是一般意义的键值存储,其接口就是简单的GET、PUT、DEL和其余扩展,如七牛、又拍、Swift、S3
典型设备:内置大容量硬盘的分布式服务器,hdfs,gfs
操做对象:对象,存储位置是大型分布式服务器.
分层:文件系统一级提供服务,只是优化了目前的文件系统,采用扁平化方式,弃用了目录树结构,便于共享,高速访问。
访问协议:主要操做对象是对象(Object)。以 S3 为例,主要接口有 PUT/GET/DELETE 等。和文件和对象存储相比,没有随机读写的接口。和文件存储相比,没有目录树的概念。协议更注重简洁。