存储:块存储/文件存储/对象存储

块存储

典型设备:磁盘阵列,硬盘数据库

块存储主要是将裸磁盘空间整个映射给主机使用的,例如磁盘阵列里面有5块硬盘(为方便说明,假设每一个硬盘1G),而后能够经过划逻辑盘、作Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。假设划分完的逻辑盘也是5个,每一个也是1G,可是这5个1G的逻辑盘已经与原来的5个物理硬盘意义彻底不一样了。例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,因此逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘。 接着块存储会采用映射的方式将这几个逻辑盘映射给主机,主机上面的操做系统会识别到有5块硬盘,可是操做系统是区分不出究竟是逻辑仍是物理的,它一律就认为只是5块裸的物理硬盘而已,跟直接拿一块物理硬盘挂载到操做系统没有区别的,至少操做系统感知上没有区别。而后,操做系统还须要对挂载的裸硬盘进行分区、格式化后,才能使用,与日常主机内置硬盘的方式彻底无异。安全

块存储有两种常见的形式,直接链接存储DAS(Direct Attached Storage)和存储区域网络SAN(Storage Area Network)服务器

块存储是数据存储的最古老形式,数据都存储在固定长度的块或多个块中网络

块存储是咱们最经常使用的一种存储模式。好比我的PC上的硬盘,服务器上的硬盘,外置设备经过SCSI或者FC接口直接链接到电脑上的。分布式

块存储能够经过raid的方法,经过冗余备份,提升数据的安全性性能

应用程序不能直接使用块存储,必须先进行格式化,格式化成某种文件系统,经过文件系统使用存储设备ui

文件存储

典型设备:FTP、NFS服务器操作系统

比如是一个共享文件夹,自带文件系统,所以是应用程序能够直接使用的存储,好比NFS,就是直接把文件服务器的某个目录挂载到本地的某个目录,应用程序直接操做本地的这个目录,等于操做远程服务器对应的目录.net

实现文件存储的方式有不少,其中比较经常使用的有如下的几种:ftp协议、nfs协议、samba协议等。对象

块存储和文件存储异同

  1. 数据传输方式不一样:块存储依靠SCSI或者ISCSI接口,以块方式交换数据,数据传输速度快;文件存储依靠TCP/IP协议栈进行数据传输,网络带宽是I/O的性能瓶颈
  2. 文件系统的位置:NAS和SAN最本质的区别就是文件管理系统在哪里,如图所示,SAN结构中,文件管理系统(FS)分别在每个应用服务器上面,而NAS则是每一个应用服务器经过网络共享协议,使用同一个文件管理系统。即NAS和SAN存储系统的区别就是NAS有自已的文件管理系统

  1. 使用方式不一样:块存储设备使用的时候,还须要进一步进行分区,将设备格式为某种文件系统才能够继续使用;而文件存储就至关于你多了一个共享文件夹,文件存储带着本身自己的文件系统

对象存储

对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息能够定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块做为基本的存储单位,在块存储系统中还须要始终追踪系统中每一个块的属性。对象经过与存储系统通讯维护本身的属性。在存储设备中,全部对象都有一个对象标识,经过对象标识OSD命令访问该对象。一般有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各类属性,组对象是存储设备上共享资源管理策略的对象集合等。

三者之间异同比较

对象存储相比块存储、文件存储的一个最本质的区别是无层次结构。通常的存储(好比你本身的PC的文件系统)是有一个目录树概念的,要找到一个文件须要先找到这个文件所属的目录。而对象存储是没有文件目录树这个概念的,全部的数据都在同一个层次中,仅仅经过数据的惟一地址标识来识别并查找数据。

存储类型 数据传输方式 适应场景 优势
块存储 SCSI/ISCSI接口 小型机房 速度快
文件存储 NFS/FTP等 局域网环境 可扩展性高
对象存储 http协议 互联网环境,异地存储 速度快,且扩展性高,高可用
  • 块存储: 是和主机打交道的, 如插一块硬盘,应用程序必须经过文件系统来操做
  • 文件存储: NAS, 网络存储, 用于多主机共享数据
  • 对象存储: 跟你本身开发的应用程序打交道, 如网盘,应用程序能够经过http协议进行文件的读写操做等

文件系统

  • 本地文件系统:Ext四、XFS、FAT32等
  • 分布式文件系统:GlusterFS、CephFS、HDFS等 曾经使用过ceph的RADOS(Reliable Autonomic Distributed Object Store, RADOS)
  • 集群文件系统

数据库能够管理数据;文件系统也能够管理数据。好比MySQL的InnoDB引擎就能够直接管理裸盘上的数据

数据库可使用本身文件系统,也可使用操做系统的文件系统

有一类应用是须要存储直接裸盘映射的,例如数据库。由于数据库须要存储裸盘映射给本身后,再根据本身的数据库文件系统来对裸盘进行格式化的,因此是不可以采用其余已经被格式化为某种文件系统的存储的。此类应用更适合使用块存储。固然如今的数据库也可使用文件系统,不直接使用裸盘。

主要来源:
https://blog.csdn.net/gui951753/article/details/82714065
https://www.zhihu.com/question/21536660/answer/33279921
https://zhuanlan.zhihu.com/p/68904315

相关文章
相关标签/搜索