# 块存储文件存储对象存储
### 简介
主要是从访问方式的不同来区分的,之所以会有不同的访问方式是因为用户需求不同.
对于块存储来说,数据是以块的形式来管理的,每个块都有自己的地址空间.传统的块存储如SAN(storage area network),它提供一个网络块存储服务,客户端可以通过iSCSI等协议来访问它,用户也可以在块存储服务上建文件系统.
对于文件存储来说,数据是以一个个文件来管理的.传统的文件存储如NAS(network attached storage), 它提供一个网络文件存储服务,客户端可以通过NFS, SMB等协议来访问它.
对于对象存储来说,数据就是一个个的对象,用户操作的目标就是一个个的对象.相对与文件存储和块存储来说,对象存储是一个新的存储模式.一般来说,对象存储的一个对象包含三类数据,即对象ID,元数据和对象数据.对象存储访问方式基本都是基于HTTP的RESTFUL,这是因为把对象存储发扬光大的AWS用的是这个协议,所以大家都默认用这个协议.
## 块存储
块存储将数据切分成块,每一块是一个独立的存储片段.这种存储方式几乎很少的元数据信息.
用户的每次读写都能直接有效的操作磁盘的具体位置.所以这种存储方式的优点也很明显,就是简单并且高效,简单是指访问方式很简单粗暴,固定的位置以及数据读写的长度;高效是说不会增加更多的磁盘IO操作,响应更快.缺点就是访问方式过于粗暴,完全没有结构化的信息,读写它的时候需要记住位置才能做准确的访问.
块存储的主要用户都是系统软件而非人,如Oracle\DB2这些传统软件, 又如vmware这类云计算产品.
### 传统块存储
传统块存储通常通过独立于TCP/IP外的网络访问,用RAID的方式提供数据安全保障
这种方式成本高,性能好,扩展性不好.
### 分布式块存储
分布式块存储一般以ISCSI的网络服务提供,相对于传统块存储,它具有更廉价的成本和更好的扩展性以及灵活的数据备份方式.
分布式块存储可以同时工作在多块磁盘上面,所以它的吞吐量更好.但是由于网络交互次数的关系,一次io读写会有更高的延迟.
## 文件存储
和块存储不同,文件存储更注重的数据组织和呈现.文件存储是一个完全结构化的存储方式.
无论是自然人还是软件系统,都可以非常方便有效的对文件存储进行操作.
操作一个文件可以根据单一的文件路径指向数据位置,这些操作都需要通过元数据来辅助完成.
和块存储相比,这些元数据操作影响了性能.
文件存储还有权限,锁,文件共享等其它块存储没有的功能.
分布式文件存储传统相较于文件存储和主要区别也是在于成本更低和更好的扩展性
## 对象存储
对象存储,一个结构化介于块存储和文件存储之间的新的存储模式,对象存储不像文件存储那样采用树状结构,而是采用一对一的扁平结构.
对象存储的访问接口只有对象ID本身,它没有文件存储那么负责的元数据管理,又可以基本呈现数据.它的访问性能应该基于块存储和文件存储之间.
分布式对象存储的另外一个有点是扩展性非常好,几乎不必要太多的代价就可以完成对存储系统的扩容.