随着信息社会的发展,越来越多的信息被数据化,尤其是伴随着Internet的发展,数据呈爆炸式增长。从存储服务的发展趋势来看,一方面,是对数据的存储量的需求越来越大,另一方面,是对数据的有效管理提出了更高的要求。首先是存储容量的急剧膨胀,从而对于存储服务器提出了更大的需求;其次是数据持续时间的增加。最后,对数据存储的管理提出了更高的要求。数据的多样化、地理上的分散性、对重要数据的保护等等都对数据管理提出了更高的要求。随着数字图书馆、电子商务、多媒体传输等用的不断发展,数据从GB、TB到PB量级海量急速增长。存储产品已不再是附属于服务器的辅助设备,而成为互联网中最主要的花费所在。海量存储技术已成为继计算机浪潮和互联网浪潮之后的第三次浪潮,磁盘阵列与网络存储成为先锋。
一、海量数据存储简介
海量存储的含义在于,其在数据存储中的容量增长是没有止境的。因此,用户需要不断地扩张存储空间。但是,存储容量的增长往往同存储性能并不成正比。这也就造成了数据存储上的误区和障碍。海量存储技术的概念已经不仅仅是单台的存储设备。而多个存储设备的连接使得数据管理成为一大难题。因此,统一平台的数据管理产品近年来受到了广大用户的欢迎。这一类型产品能够整合不同平台的存储设备在一个单一的控制界面上,结合虚拟化软件对存储资源进行管理。这样的产品无疑简化了用户的管理。
数据容量的增长是无限的,如果只是一味的添加存储设备,那么无疑会大幅增加存储成本。因此,海量存储对于数据的精简也提出了要求。同时,不同应用对于存储容量的需求也有所不同,而应用所要求的存储空间往往并不能得到充分利用,这也造成了浪费。
针对以上的问题,重复数据删除和自动精简配置两项技术在近年来受到了广泛的关注和追捧。重复数据删除通过文件块级的比对,将重复的数据块删除而只留下单一实例。这一做法使得冗余的存储空间得到释放,从客观上增加了存储容量。
二、企业在处理海量数据存储中存在的问题
目前企业存储面临几个问题,一是存储数据的成本在不断地增加,如何削减开支节约成本以保证高可用性;二是数据存储容量爆炸性增长且难以预估;三是越来越复杂的环境使得存储的数据无法管理。企业信息架构如何适应现状去提供一个较为理想的解决方案,目前业界有几个发展方向。
1.存储虚拟化
对于存储面临的难题,业界采用的解决手段之一就是存储虚拟化。虚拟存储的概念实际上在早期的计算机虚拟存储器中就已经很好地得以体现,常说的网络存储虚拟化只不过是在更大规模范围内体现存储虚拟化的思想。该技术通过聚合多个存储设备的空间,灵活部署存储空间的分配,从而实现现有存储空间高利用率,避免了不必要的设备开支。
存储虚拟化的好处显而易见,可实现存储系统的整合,提高存储空间的利用率,简化系统的管理,保护原有投资等。越来越多的厂商正积极投身于存储虚拟化领域,比如数据复制、自动精简配置等技术也用到了虚拟化技术。虚拟化并不是一个单独的产品,而是存储系统的一项基本功能。它对于整合异构存储环境、降低系统整体拥有成本是十分有效的。在存储系统的各个层面和不同应用领域都广泛使用虚拟化这个概念。考虑整个存储层次大体分为应用、文件和块设备三个层次,相应的虚拟化技术也大致可以按这三个层次分类。
目前大部分设备提供商和服务提供商都在自己的产品中包含存储虚拟化技术,使得用户能够方便地使用。
2.容量扩展
目前而言,在发展趋势上,存储管理的重点已经从对存储资源的管理转变到对数据资源的管理。随着存储系统规模的不断扩大,数据如何在存储系统中进行时空分布成为保证数据的存取性能、安全性和经济性的重要问题。面对信息海量增长对存储扩容的需求,目前主流厂商均提出了各自的解决方案。由于存储现状比较复杂,存储技术的发展业界还没有形成统一的认识,因此在应对存储容量增长的问题上,尚存在很大的提升空间。技术是发展的,数据的世界也是在不断变化的过程中走向完美。企业信息架构的“分”与“合”的情况并不绝对。目前、出现了许多的融合技术,如 NAS与SAN的融合,统一存储网等等。这些都将对企业信息架构产生不同的影响。至于到底采用哪种技术更合适,取决于企业自身对数据的需求。
三、海量数据存储技术
为了支持大规模数据的存储、传输与处理,针对海量数据存储目前主要开展如下三个方向的研究:
1. 虚拟存储技术
存储虚拟化的核心工作是物理存储设备到单一逻辑资源池的映射,通过虚拟化技术,为用户和应用程序提供了虚拟磁盘或虚拟卷,并且用户可以根据需求对它进行任意分割、合并、重新组合等操作,并分配给特定的主机或应用程序,为用户隐藏或屏蔽了具体的物理设备的各种物理特性。存储虚拟化可以提高存储利用率,降低成本,简化存储管理,而基于网络的虚拟存储技术已成为一种趋势,它的开放性、扩展性、管理性等方面的优势将在数据大集中、异地容灾等应用中充分体现出来。
2. 高性能I/O
集群由于其很高的性价比和良好的可扩展性,近年来在HPC领域得到了广泛的应用。数据共享是集群系统中的一个基本需求。当前经常使用的是网络文件系统NFS或者CIFS。当一个计算任务在Linux集群上运行时,计算节点首先通过NFS协议从存储系统中获取数据,然后进行计算处理,最后将计算结果写入存储系统。在这个过程中,计算任务的开始和结束阶段数据读写的I/O负载非常大,而在计算过程中几乎没有任何负载。当今的Linux集群系统处理能力越来越强,动辄达到几十甚至上百个TFLOPS,于是用于计算处理的时间越来越短。但传统存储技术架构对带宽和I/O能力的提高却非常困难且成本高昂。这造成了当原始数据量较大时,I/O读写所占的整体时间就相当可观,成为HPC集群系统的性能瓶颈。I/O效率的改进,已经成为今天大多数Linux并行集群系统提高效率的首要任务。
3. 网格存储系统
高能物理的数据需求除了容量特别大之外,还要求广泛的共享。比如运行于BECPII上的新一代北京谱仪实验BESIII,未来五年内将累积数据5PB,分布在全球20多个研究单位将对其进行访问和分析。因此,网格存储系统应该能够满足海量存储、全球分布、快速访问、统一命名的需求。主要研究的内容包括:网格文件名字服务、存储资源管理、高性能的广域网数据传输、数据复制、透明的网格文件访问协议等。
四、海量数据处理时容易出现的问题分析
1. 数据量过大,数据中什么情况都可能存在。处理海量数据时,由于软件与硬上都具有很高的要求,可能会造成系统崩溃和硬件损坏,将导致处理程序终止。
2. 软硬件要求高,系统资源占用率高。对海量的数据进行处理,除了好的方法,最重要的就是合理使用工具,合理分配系统资源。一般情况,如果处理的数据过TB级,小型机是要考虑的,普通的机子如果有好的方法可以考虑,不过也必须加大CPU和内存,就象面对着千军万马,光有勇气没有一兵一卒是很难取胜的。
3. 要求很高的处理方法和技巧。这也是本文的写作目的所在,好的处理方法是一位工程师长期工作经验的积累,也是个人的经验的总结。没有通用的处理方法,但有通用的原理和规则。
五、海量数据存储的处理方法
1. 选用优秀的数据库工具 2. 编写优良的程序代码 3. 对海量数据进行分区操作 4. 建立广泛的索引 5. 建立缓存机制 6. 加大虚拟内存7. 分批处理 8. 使用临时表和中间表 9. 优化查询SQL语句 10. 使用文本格式进行处理 11. 定制强大的清洗规则和出错处理机制 12. 建立视图或者物化视图 13. 避免使用32位机子(极端情况) 14. 考虑操作系统问题 15. 使用数据仓库和多维数据库存储 16. 使用采样数据,进行数据挖掘 17. 海量数据关联存储
六、海量数据是发展前景
海量数据存储技术的发展前展,可以归结为以下几个方面:
高容量光存储技术的到来可以说改变了目前的存储格局,为原本暗淡的光存储带来了一线生机。虽然光存储器的支持者们一直宣传该技术将成为下一代伟大的存储技术,但是即便在它得到广泛推广之后,其企业客户基础在整个市场上的份额仍然很小。
分布式存储与P2P存储:分布式存储概念提出较早,目前再次成为热点。P2P存储可以看作分布式存储的一种,是一个用于对等网络的数据存储系统,它的目标是提供高效率的、鲁棒和负载平衡的文件存取功能。
数据网格:为了满足人们对高性能、大容量分布存储能力的要求所提出的概念,类似于计算网格,是有机的智能单元的组合。
智能存储系统:包括主动的信息采集,主动信息分、主动调整等。存储服务质量QoS:应用环境越来越复杂,存储需求区别也越来越明显,这就需要为应用提供区分服务。目前的研究以基于网络存储的QoS为主。
存储容灾:通过特定的容灾机制,能够在各种灾难损害发生后,最大限度地保障计算机信息系统不间断提供正常应用服务。