一种存储网关介绍及提升数据读写性能策略研究
2019-04-24[]
[]
1 引言
随着企业信息化建设的不断深化,企业数据存储量成爆炸式增长,如在高清监控中,一路视频码率为4Mbps-20Mbps,一小时的视频数据存储量大约为1.8GB-9GB,24小时不间断的情况下一个月的视频数据存储量约为1.3TB-6.3TB。一个平安城市视频监控项目中,总的监控路数通常达到成千上万路,存储量是难以想象的。传统的本地存储方案已难以满足海量数据的存储容量、数据管理及数据快速检索等方面的要求。随着云计算技术的发展,企业数据存储向云端迁移已经成为首选的解决方案。较低的存储成本、可扩展的存储量、高性能的数据传输是数据云迁移的关键。
存储网关是一个通过磁盘虚拟化、集群应用、数据缓存等技术,将网络中各种类型的存储通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的系统。云存储网关桥接于用户系统与云存储之间,提供多种协议和统一的接口,将云存储资源前置到用户的本地存储,实现传统存储系统和云存储平台的无缝衔接。
2 主流云存储对比
现阶段,云存储类型主要有三种类型:文件存储、块存储、对象存储。对于用户而言,主要的存储需求包括价格需求、兼容性需求、数据安全需求、性能需求。我们从这几个维度对三种云存储进行对比。
(1)价格需求
表1是2018年9月阿里云的三大云存储的包月价格,通过对比,我们发现文件存储和块存储的使用价格相对昂贵,对象存储的价格相对便宜。如果企业的存储量达到PB级别,那么直接采用文件存储和块存储的方案是难以承受的,企业更倾向于使用容量可弹性扩展的对象存储。
(2)兼容性需求
表1 阿里云的三大云存储的包月价格
对于使用本地块设备的系统、应用软件和数据库来说,企业上云使用云端块存储时,只需要通过ISCSI、NFS等协议对块设备进行挂载、格式化和安装软件,企业的应用和数据库几乎不用改造,云端块存储可直接投入使用。对于文件存储和对象存储来说,用户需要安装云存储服务商提供的软件来享受云存储的数据服务,而且用户应用软件的接口可能需要进行相应的改造才能完全适用云存储,数据库也可能不适用于这两种存储方式。
(3)安全性需求
块存储通过了RAID与LVM等手段对数据提供了保护。对象存储除身份管理以外,在数据的保存和传输状态都通过数据加密来提供数据安全性。文件存储则通过网络隔离、用户隔离、文件系统标准权限控制、权限组访问控制来保障数据安全性。
(4)性能需求
对于块存储,用户可以根据需求配置不同等级的块存储I/O性能。然而,用户对于块设备的I/O读写负载通常是不平衡的:在一段时间内,用户会对块设备的局部数据进行频繁访问,造成块设备的I/O性能瓶颈。另外,如果用户文件在块设备数据块中的保存方式是顺序型时,用户读写文件时需要对数据块进行顺序读写操作,效率较低。
对于文件存储,数据量达到PB级别时,NAS存储服务器性能会出现瓶颈。
对于对象存储,对象存储将文件的元数据独立出来,元数据服务器MDS存储对象文件的元数据,分布式对象存储设备OSD存储文件的数据的部分。用户访问对象存储时先访问MDS,MDS反馈对象数据存储的OSD位置后用户直接访问多个OSD服务器来读取对象,此过程中文件传输速度得到很大的提升。
3 基于对象存储的块设备存储网关
3.1 基于对象存储的块设备
从上一节的对比中我们发现,三大类的云存储各有优点。如果我们可以将它们相互配合使用,发挥各自的优点,用户将获得一套价格合理、性能高、易用性强、可共享的数据存储服务。本文基于这个目的,提出了一种基于对象存储的虚拟块设备,通过云端的对象存储备份此块设备,实现本地虚拟块设备的云端存储。
基于对象存储的块设备不仅继承了本地块设备适用面广的特点,让用户的应用在零改造的条件下挂载设备使用。同时,对象存储的多线程OSD读写方式提高了块设备数据的传输速度;相对便宜的对象存储让块设备的容量可以不断地扩容;对象存储的可共享属性让块设备轻松在其他用户端进行恢复。
3.2 数据块对象
对于存储网关发布的虚拟块设备,用户对它的所有读写操作都将被网关重定向到读写一个固定大小的普通文件,而非操作实际磁盘的轨道和扇区。网关以一个固定大小的空间来切分这个普通文件,切割成若干个更小的数据块。在本网关系统中,每个数据块相当于一个存储对象,网关向对象存储上传所有的数据块对象,完成虚拟块设备的备份。
用户向虚拟磁盘写入文件时,文件数据可能会被写入不同的数据块中;用户通过虚拟磁盘读文件时,不同的数据块一起提供实际的文件。在云端对象存储操作界面,我们看到的是众多的大小一样的数据块对象,并不能直接查看用户的实际文件。
例如,网关发布的虚拟磁盘达到1TB大小,设置数据块的切分大小空间为4MB,这个1TB大小的虚拟块设备文件将被切割成262144个4MB的数据块,网关将这些数据块对象同步上传到对象存储。用户在虚拟磁盘上读写文件时,相当于网关在262144个数据块中定位需要的数据块后进行数据读写。
3.3 存储网关架构
基于对象存储的块设备存储网关系统部署于用户局域网环境中,桥接于用户本地系统与云存储之间,将网关系统内一个固定大小的文件虚拟化为一个块设备,通过回环方式挂载块设备,并加载文件系统,向外发布虚拟磁盘。用户系统通过局域网挂载和使用网关发布的虚拟磁盘。当用户系统向虚拟磁盘读写数据时,存储网关通过协议转换更新数据块,通过HTTP传输协议和对象存储进行数据块对象读写。图1为存储网关的总体架构。
图1 存储网关的总体架构
存储网关通过云存储,备份网关虚拟块设备所依赖的文件,相当于为用户提供了一种基于云存储备份的虚拟磁盘服务。网关需要提供标准存储和文件系统接口,支持多种协议(如NFS、SMB、ISCSI等),屏蔽各种云存储接口的差异,为用户提供一种应用零改造、磁盘即插即用、磁盘容量无限扩展的云存储服务。
存储网关使用系统的本地磁盘或内存充当网关的数据缓存层,网关通过缓存层暂存数据块,处理数据块,并和对象存储同步数据块对象。
4 数据块合并策略
数据块合并是存储网关的缓存层接收用户的新文件后,对旧数据块和写入此数据块的新数据部分进行合并操作,生成新的数据块并上传到云端对象存储,完成最新数据块的云端同步。数据块合并策略如图2所示。
(1)缓存层保存新数据和操作日志
用户向网关缓存写新文件时,缓存层数据区保存写入每个数据块的新数据部分,并在缓存层日志区里记录每个被更新的数据块的写操作,写操作包括数据块的写偏移量与写长度。
(2)缓存层判断数据块的写覆盖情况
缓存层根据日志区里每个被更新的数据块的写偏移量与写长度记录,判断被更新的数据块是被完全覆盖写还是被部分覆盖写。
(3)缓存层合并数据块
当缓存层的数据块是被用户系统完全覆盖写时,如图2缓存层左一的数据块,缓存层直接向对象存储回写这个新数据块,更新日志区内数据块的操作日志。当缓存层的数据块是被用户系统部分被覆盖写时,如图2缓存层左二的数据块,缓存层先从对象存储下载同一个数据块对象所关联的旧数据块,根据缓存的操作日志,将数据块内的新数据部分和旧数据块进行合并操作,生成新数据块,回写对象存储,最后更新日志区内数据块的操作日志。
图2 数据块合并策略
存储网关的缓存层暂时保存的数据块分为两类:未和云端同步的新数据块和用户读文件时从云端下载的旧数据块。当这两类数据块被用户频繁读写时,它们作为热数据块缓存于网关中,无需从云端多次下载,提高用户和网关之间的数据读写效率。
5 数据块切割策略
网关发布的虚拟磁盘将用户的文件进行分割,分布到块设备的不同的数据块中。存储网关通过多线程传输方式和对象存储进行多个数据块对象的同步上传和下载。数据块设置的大小和用户文件大小共同决定了此文件占用的磁盘数据块个数:
(1)用户文件大小远大于数据块设置的大小时
一个文件的数据分布在较多的数据块中,完成一个文件的传输需要网关向对象存储传输较多的数据块对象。在图3所示的例子中,蓝色标志的文件是一个13MB大小的文件:如数据块设置为2MB大小,理想状态下一个蓝色文件占用7个数据块对象,网关需要使用7个线程同时上传数据块以满足蓝色文件的实时上传;如数据块设置为4MB大小,理想状态下一个蓝色文件占用4个数据块对象,网关使用4个线程同时上传数据块。
(2)文件大小远小于数据块设置的大小时
多个文件的数据分布在较少的数据块中,完成一个文件的传输需要网关和对象存储传输一个较大的数据块对象。橙色标志的文件是一个512KB大小的文件:无论数据块设置为2MB还是4MB大小,网关传输一个橙色文件时需要和对象存储传输一个比文件更大的数据块对象,数据块中有一部分数据是网关不需要读写的,传输大量此类文件会占用较多的网络资源。
网关统计用户文件大小的分布特点:假设用户的文件大小可分为N类,每个分类文件的大小为S,出现的概率为P。则用户的文件大小的期望值为:
基于用户文件大小的期望值,设置网关发布的磁盘的数据块大小为B,设置传输线程数为T。为了实现文件传输效率最优化,理想状态下各参数的关系为:
图3 数据块和文件分布
(1)当用户部署的网关和对象存储之间的网络带宽较小时,为了保证单个对象的传输成功率,一般将数据块大小B设置较小,网关服务器需要较高的资源配置来支持较大的传输线程数T;
(2)当用户部署的网关和对象存储之间的网络带宽较大时,数据块大小B可设置较大,网关服务器可以配置较低的资源配置和较小的传输线程数T。
网关需要根据网络带宽大小、文件大小、数据传输线程数之间作一个动态的权衡,以保证多个数据块同时上云的数据传输性能。
6 数据块对象回写延迟策略
6.1 回写延迟方法
回写延迟方法是网关针对缓存层向对象存储回写新数据块时,通过调整“缓存层数据块回写对象存储的延迟时间”参数,让一定量的新数据块在缓存层等待和堆积一段时间(即延迟时间)后再回写云端。在这段时间内用户再次向缓存内存在的新数据块更新数据时,可直接写入新数据,不需要等待数据块的再次下载,从而减少了缓存层和云端之间数据块交互频率,减轻了网络传输压力,提升了热点数据的读写效率。
(1)缓存层设置新数据块的回写延迟时间
缓存层接收用户写入的新文件后,使用“数据块合并策略”,从云端下载旧数据块进行合并,形成新数据块,在缓存文件日志区里为每个新数据块设置“回写对象存储的延迟时间”。
(2)缓存层回写线程等待延迟时间后回写数据块
缓存层的回写多线程等待每个新数据块设置的“延迟时间”后,将新数据块回写云端,更新数据块的操作日志,清除已回写数据块。
6.2 回写延迟时间参数动态调整
网关需要对“缓存层数据块回写对象存储的延迟时间”进行实时的调整,保证存储网关提供基本存储服务能力的同时,让网关内的数据处理性能、网络传输性能达到最优的状态。
(1)若缓存层回写数据块对象的延迟时间设置过短
网关和云存储之间频繁的数据块交互会消耗过多网关服务器的磁盘I/O性能、CPU性能,影响网关内部数据处理能力。同时,网关和云端之间的网络带宽占用率非常高,出现网关响应用户请求缓慢,用户向虚拟磁盘写数据超时的现象,网路拥塞是影响网关稳定工作的最重要因素。
(2)若缓存层回写数据块对象的延迟时间设置过长
新数据块来不及回写对象存储,在缓存层积压过多,出现缓存层的空间被占满,用户无法再写入文件的现象。同时,缓存层和对象存储的数据块不一致的时间较长,一旦缓存层硬件出现故障,会造成数据丢失的风险。
存储网关可通过监控软件对网关服务器的CPU性能、磁盘I/O性能、数据传输线程数、磁盘内存可用空间、网络速度、网络流量等指标进行实时监控,分析网关服务服务能力和性能瓶颈,及时调整延迟时间参数,避免当某个监控指标超出阈值时出现以上的问题。
7 结语
通过存储网关为用户提供基于对象存储的块设备存储服务,解决了以往用户系统直接使用云存储时存在的问题,具有高适用性、灵活扩展性、价格合理等优势。
同时,存储网关借助于数据块合并、数据块切割、数据块回写延迟策略,使用多线程方式传输数据,灵活配置虚拟磁盘的数据块大小,动态调整缓存中数据块的回写延迟参数,提高了存储网关的数据读写性能和网络带宽利用率。
现阶段,电信运营商的云存储业务正在迅速发展,抢占着更大的云存储市场份额,特别是众多企业已经使用天翼云对象存储来实现海量数据的上云需求。同时,得益于电信运营商高性能的网络资源和日益成熟的云存储、虚拟化技术,我们相信电信运营商将会发展更多存储网关产品,并通过各种策略来提高网关的数据读写性能。