块存储
典型设备:磁盘阵列,硬盘
块存储主要是将裸磁盘空间整个映射给主机使用的,例如磁盘阵列里面有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的方法,通过冗余备份,提高数据的安全性
应用程序不能直接使用块存储,必须先进行格式化,格式化成某种文件系统,通过文件系统使用存储设备
文件存储
典型设备:FTP、NFS服务器
好比是一个共享文件夹,自带文件系统,因此是应用程序可以直接使用的存储,比如NFS,就是直接把文件服务器的某个目录挂载到本地的某个目录,应用程序直接操作本地的这个目录,等于操作远程服务器对应的目录
实现文件存储的方式有很多,其中比较常用的有以下的几种:ftp协议、nfs协议、samba协议等。
块存储和文件存储异同
- 数据传输方式不同:块存储依靠SCSI或者ISCSI接口,以块方式交换数据,数据传输速度快;文件存储依靠TCP/IP协议栈进行数据传输,网络带宽是I/O的性能瓶颈
- 文件系统的位置:NAS和SAN最本质的区别就是文件管理系统在哪里,如图所示,SAN结构中,文件管理系统(FS)分别在每一个应用服务器上面,而NAS则是每个应用服务器通过网络共享协议,使用同一个文件管理系统。即NAS和SAN存储系统的区别就是NAS有自已的文件管理系统
- 使用方式不同:块存储设备使用的时候,还需要进一步进行分区,将设备格式为某种文件系统才可以继续使用;而文件存储就相当于你多了一个共享文件夹,文件存储带着自己本身的文件系统
对象存储
对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性。对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。
三者之间异同比较
对象存储相比块存储、文件存储的一个最本质的区别是无层次结构。一般的存储(比如你自己的PC的文件系统)是有一个目录树概念的,要找到一个文件需要先找到这个文件所属的目录。而对象存储是没有文件目录树这个概念的,所有的数据都在同一个层次中,仅仅通过数据的唯一地址标识来识别并查找数据。
存储类型 | 数据传输方式 | 适应场景 | 优点 |
---|---|---|---|
块存储 | SCSI/ISCSI接口 | 小型机房 | 速度快 |
文件存储 | NFS/FTP等 | 局域网环境 | 可扩展性高 |
对象存储 | http协议 | 互联网环境,异地存储 | 速度快,且扩展性高,高可用 |
- 块存储: 是和主机打交道的, 如插一块硬盘,应用程序必须通过文件系统来操作
- 文件存储: NAS, 网络存储, 用于多主机共享数据
- 对象存储: 跟你自己开发的应用程序打交道, 如网盘,应用程序可以通过http协议进行文件的读写操作等
文件系统
- 本地文件系统:Ext4、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