存储
IT系统按应用存储方式可以分为文件存储、对象存储、块存储三种类型。
- 块存储,其中块是指物理磁盘上以扇区为基础,一个或几个连续的扇区组成的一段磁盘空间,也叫物理块。块存储简单理解就是一块一块的硬盘,直接挂载在主机上,在主机上能够看到的就是一块块的硬盘以及硬盘分区。从存储架构的角度来讲,块存储分为DAS存储(Direct-Attached Storage,直连式存储)、SAN存储(Storage Area Network,存储区域网络)以及云时代的弹性块存储。
- 文件存储,用户可在虚拟机或物理机上以文件系统方式,基于POSIX/CIFS/NFS/FTP等标准协议进行数据存取。文件系统中有分区,有文件夹,子文件夹,形成一个自上而下的文件结构;文件系统中的文件,可以由应用程序进行打开、修改等操作。物理块与文件系统之间的映射关系是:扇区→物理块→逻辑块(卷)→文件系统。也就是说文件系统中存储的数据最终是写入磁盘中的,文件系统是建立在块存储之上的。从存储架构上来说文件系统分为单机文件系统、网络文件系统(NAS Network Attached Storage,网络附属存储)以及云时代的分布式文件系统。
- 对象存储,其中对象是指被封装的文件,应用程序不能直接打开修改它,只能整个文件的读取写入。而且对象存储系统没有像文件系统那样有一个很多层级的文件结构,没有多层次的目录结构,就是简单的2-3级结构。对象存储概念来源于互联网时代,所以从存储架构来讲,对象存储都是分布式的。
文件存储
- 典型代表:单机文件系统FAT,Ext4,网络文件系统NAS,分布式文件系统HDFS
- 单机文件文件系统,用于操作系统和应用程序的本地存储。应用直接访问本地文件存储;
- 网络文件系统,以太网架构,不同主机之间访问同一套文件系统,实现文件共享。但文件系统是单机的,不能分布式扩展。
- 分布式文件系统,不同主机共同访问,文件系统本身可以线性扩展。 *
- 接口协议:通常是指支持POSIX接口,即传统的文件访问接口方式。分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),GFS,HDFS这种非POSIX接口的类文件存储接口也归入文件存储类比。
- 应用场景:丰富的应用场景。
- 读写单位:文件字节
对象存储
- 典型代表:AWS S3,openstack swift;
- 接口协议:接口就是简单的GET、PUT、DEL和其他扩展。
应用场景:接口简单,一个对象可以看成一个文件,全写全读
- 互联网/移动互联网应用的静态内容(视频、图片、文件、软件安装包等)。
- 存储网站、云盘等
读写单位:对象(整个文件)
与文件系统的差异:本质区别是接口和数据组织结构的区别
- 存储接口:对象存储不支持文件存储中的fread和fwrite类似的随机位置读写操作,对象存储中一个文件PUT到对象存储里以后,如果要读取,只能GET整个文件,如果要修改一个对象,只能重新PUT一个新的到对象存储里,覆盖之前的对象或者形成一个新的版本。
- 数据结构组织:在文件存储系统中文件夹可以一级一级嵌套,对象存储层次关系是固定的,而且只有两到三级,是扁平的。每一级的每个元素,在系统中都有唯一的标识,用户通过这个标识来访问容器或者对象,所以,对象存储提供的是一种K/V的访问方式。采用扁平的数据组织结构抛弃了嵌套的文件夹,避免维护庞大的目录树。
对象存储的优化空间
- 编码的优化问题;主要是指错误数据恢复的编码优化,在恢复时候如何考虑尽可能的减少对网络开销的影响。2个研究方向:LRC(local recovery codes)编码和减少非必要的数据恢复。
- 存储中计算/存储融合,热门方向,计算的任务放到数据存储的地方进行计算。
- 特大文件或者特小文件的性能优化问题;
块存储
- 块存储是将裸磁盘空间整个映射给主机使用的,形成主机上的一个存储设备。然后通过操作系统进行管控。
典型代表:单机直连式块存储 本地硬盘或者独立DAS设备,网络块存储 磁盘阵列,弹性块存储 AWS的EBS
DAS(Direct Attach STorage) 直连式块存储:存储直接连接于主机服务,每一台主机服务器有独立的储存设备,每台主机服务器的储存设备无法互通
SAN(Storage Area Network)区域网络块存储:是一种连接外接存储设备和服务器的架构,连接到服务器的存储设备,将被操作系统视为直接连接的存储设备。
- 弹性块存储,弹性块存储为物理机或虚拟机提供块级别的分布式的、高速数据存储。
- 接口协议:接口通常以QEMU Driver或者Kernel Module的方式存在,如Sheepdog,AWS的EBS,Ceph的RBD(RBD是Ceph面向块存储的接口)
- 应用场景:
- DAS、SAN是传统的块存储方式,数据库的陈列存储或主机操作系统的物理存储;
- 弹性块存储是虚拟存储设备,简单理解就是虚拟网络硬盘,通过卷映射挂到物理机或虚拟机上。
- 读写单位:应用不直接读取,主机对块存储设备以卷的进行直接映射
三种存储方式的差异
服务对象差异
- 块存储直接以卷的方式映射给物理机或虚拟机。不直接面向业务应用。
- 对象存储、文件存储直接应用于具体的业务应用
性能指标差异
- 块存储,要求的访问时延是 10ms 级的,但qps(iops)很高
- 对象存储,文件存储,要求的访问时延是 100ms – 1s 级的,低 qps的
应用场景
- 块存储,物理主机的本地磁盘、磁盘阵列以及虚拟机的虚拟硬盘。
- 文件系统,应用场景的较多,但文件系统结构比较复杂,经常要维护一个很深的目录树。
- 对象存储,应用于单个文件的整体操作场景,把文件整体看做一个独立的对象。
统一存储
统一提供文件存储、对象存储和块存储的分布式存储服务。如ceph,sheepdog
分布式存储架构规划
需求
- 性能需求 运行或在线系统需要高性能。离线或备份数据需要高容量,低价格。数据量大,性能要求不高。
- 可靠性需求。所有的数据都必须是可靠的,绝对不能丢。存储的容忍底线,
- 差异化需求,不同的需求需要用不同的方式来解决。
- 非功能需求,可靠性要求、可用性要求、时延要求、一致性要求、使用模式相关要求(包括请求大小、QPS/IOPS、吞吐)等。