一、存储服务的类型
存储服务的类型根据数据类型的不同,一般分为块存储、文件存储和对象存储三类。
块存储基于传统的磁盘阵列实现,将存储区域划分成固定大小的块,以卷的方式挂载到主机操作系统后,操作系统可将其格式化成文件系统,或以裸数据的方式作为数据库的存储。块存储方式不存在数据打包和解包过程,因此应用系统跟存储系统耦合程度紧密,数据访问延迟低、性能高。
文件存储指的是存储介质上存储的是目录-子目录-文件这种形式的数据结构。这种数据结构是我们自然人所能容易识别的数据,绝大部分由作为自然人的程序员所编写的各种软件程序也使用这种方式来访问文件。因此文件存储的特点是一方面可读性高,另一方面访问数据需要先遍历多层文件目录。
二、云环境下的存储技术
随着电子商务、云原生、微服务、分布式应用、DevOps等现代应用架构的流行,用户开始将越来越多的传统应用进行改造和重构,迁移到云环境。 那么在云环境下有哪些存储技术可供选择使 用呢? 下面针对云环境提供的块存储、文件存储和对象存储三类存储服务,简单讲讲对应的存储技术。
1. 块存储
云环境的块存储技术主要包括使用集中式块存储和分布式块存储两种技术路线。
1) 集中式块存储
作为目前流行的IaaS框架 ,OpenStack架构中有一个独立的组件叫Cinder。 Cinder是OpenStack中提供存储服务的API框架,用来为后端不同的存储结构提供统一的接口。 不同的块设备服务厂商在Cinder中实现其驱动支持。 后端的存储可以是DAS、NAS、SAN、对象存储或者分布式文件系统。 由于在云计算领域OpenStack受欢迎度非常高,因此众多存储厂商如NetAPP、IBM、 DellEMC、华为和众多开源块存储系统均提供了对Cinder的支持,这也为在云平台基础架构层使用集中式SAN存储提供了技术基础。
当用户规划在云平台下使用集中式块存储时,需要首先考虑两个方面。
第一,自己使用的云平台是不是基于OpenStack开发的,如果不是,那可能没有SAN的接口。国内的主流云平台产品大都是基于OpenStack开发的,但也存在少量的自研云平台。
第二,基于OpenStack的云平台通过使用Cinder来对接FC-SAN集中式存储,Cinder只提供框架,需要通过调用FC-SAN设备厂商提供的Driver来使用和管理。这方面需要云平台厂商配合。目前国内大部分基于OpenStack开发的云平台产品中已经集成主流存储厂家的FC驱动,可以让Cinder与存储底层对接,得到更高和更稳定的性能表现。
2)分布式块存储
分布式块存储是分布式存储架构下的一个存储接口。目前主流分布式存储技术主要分HCI超融合基础架构和SDS软件定义分布式存储。主流SDS分布式存储又分为Ceph系和非Ceph系。在大规模云环境下,SDS软件定义分布式存储适配度更高。
2. 文件存储
文件存储技术按照底层硬件架构可以分为集中式NAS存储和分布式文件系统。
集中式NAS存储生态完善,在各大企业数据中心文件共享服务中占据很大比例。集中式NAS存储设备由机头和扩展柜组成,集成度高,运维相对简单。
分布式文件系统与集中式NAS相比,区别在于提供了并行化和横向扩展的能力。分布式文件系统按照架构有无中心分为两类,一种是有中心架构的分布式文件系统架构,包括GFS、HDFS等。另外一种是完全无中心的分布式存储架构,包括CephFS、GlusterFS等。其中CephFS和GlusterFS支持POSFIX 接口。
GFS和HDFS的默认最小存储单元为64M、128M甚至更高,是适合大文件尤其是GB级别的大文件存储场景的分布式存储系统。
GlusterFS是采用无中心对称式架构,没有专用的元数据服务器,元数据存在于文件的属性和扩展属性中。数据分片分布,也更适合大文件存储。
CephFS是分布式存储系统Ceph面向文件存储的接口,CephFS 构建在RADOS(Ceph的核心技术-分布式对象存储)之上,继承RADOS的容错性和扩展性,支持冗余副本和数据高可靠性。
3. 对象存储
对象存储采用基于键值访问机制的扁平化存储架构设计,它没有多层树级文件目录,天生具有分布式的架构优点,扩展方便。
三、云环境下的各类存储技术的适用场景
1. 块存储
分布式块存储的优势在于扩展性,所以适用于云环境下大规模的虚拟机、容器场景。另外,MySQL、MongoDB等轻量级数据库场景也可以选择使用分布式块存储。
对于IO密集型数据库应用来讲,当前最好的存储模式仍是采用高性能低延迟的集中式高端存储阵列。
另外,针对云规模相对不大,但业务重要性较高的业务场景,可以选择使用基于OpenStack的云平台通过Cinder接口来对接集中式存储,为该类重要应用获得更高和更稳定的存储性能。
2. 文件存储
集中式NAS支持POSFIX接口,与现有应用集成简单,适合小规模应用环境的快速部署。
GFS适合存储大文件,尤其是GB级别的大文件存储的场景。HDFS适合单次写多次读的大文件流式读取的场景。
GlusterFS基于无中心化架构,没有元数据服务器,具有高扩展性、高可用性、高性能,能够处理千数量级的客户端,可配置性较强。
CephFS也支持POSFIX接口,它使用Ceph存储集群来存储数据,因此能够解决NAS 产品scale-out横向扩展不足的缺点,与使用Ceph存储的云环境最适配。
GlusterFS和CephFS可以作为在大规模云环境下代替NAS的通用分布式文件系统存储技术,也是现在分布式NAS的发展方向。
3. 对象存储
对象存储接近无限扩展能力使其可以真正意义上实现非结构化数据的海量存储。其扁平化的存入和读取数据对象方式,使其使用方式简单,应用经过标准 API 接口进行调用,十分契合互联网大数据的存储。对象存储适合存储包括多媒体、音乐、图片、视频监控文件、软件、镜像、扫描件等种类在内的海量文件。
另一方面也要注意,对象存储不支持随机读写操作,只能全读全写,其面向的是一次写入,多次读取的非结构化数据存储的需求场景