大数据技术与应用
上QQ阅读APP看书,第一时间看更新

3.3 存储虚拟化(大数据存储)

提起大数据,最容易想到的便是其数据量之庞大。如何高效地保存和管理这些海量数据是存储面临的首要问题。此外,大数据还有诸如种类结构不一、数据源杂多、增长速度快,以及存取形式和应用需求多样化等特点。 

存储虚拟化最通俗的理解就是对一个或者多个存储硬件资源进行抽象,提供统一的、更有效的全面存储服务。从用户的角度来说,存储虚拟化就像一个存储的大池子,用户看不到也不需要看到后面的磁盘和磁带,也不必关心数据是通过哪条路径存储到硬件上的。 

存储虚拟化分为两大类:块虚拟化(Block virtualizatlon)和文件虚拟化(File virtualization)。块虚拟化就是将不同结构的物理存储抽象成统一的逻辑存储,这种抽象和隔离可以让存储系统的管理员为终端用户提供更灵活的服务。文件虚拟化则是帮助用户,使其在一个多结点的分布式存储环境中再也不用关心文件的具体物理存储位置了。 

3.3.1 传统存储系统时代

计算机的外部存储系统,如果从1956年IBM制造出第一块硬盘算起,发展至今已经有半个多世纪了。在这半个多世纪里,存储介质和存储系统都取得了很大的发展和进步。当时,IBM为RAMAC 305系统制造出的第一块硬盘只有5MB的容量,而成本却高达50000美元,平均每MB存储需要10000美元。而现在的硬盘容量可高达几个TB,成本则降至差不多8美分/GB。 

目前传统存储系统的架构主要包括DAS、NAS和SAN这3种。 

1.DAS(Direct-Attached Storage,直连式存储) 

DAS是一种通过总线适配器直接将硬盘等存储介质连接到主机上的存储方式,在存储设备和主机之间通常没有任何网络设备的参与。可以说DAS是最原始、最基本的存储架构方式,在个人计算机和服务器上也最为常见。DAS的优势在于架构简单、成本低廉及读写效率高等;缺点是容量有限,难以共享,从而容易形成“信息孤岛”。 

2.NAS(Network-Attached Storage,网络存储系统) 

NAS是一种提供文件级别访问接口的网络存储系统,通常采用NFS、SMB/CIFS等网络文件共享协议进行文件存取。NAS支持多客户端同时访问,为服务器提供了大容量的集中式存储,从而也方便了服务器间的数据共享。 

3.SAN(Storage Area Network,存储区域网络) 

SAN通过光纤交换机等高速网络设备在服务器和磁盘阵列等存储设备间搭设专门的存储网络,从而提供高性能的存储系统。 

SAN与NAS的基本区别在于其提供块(block)级别的访问接口,一般并不同时提供一个文件系统。通常情况下,服务器需要通过SCSI等访问协议将SAN存储映射为本地磁盘,在其上创建文件系统后进行使用。目前主流的企业级NAS或SAN存储产品一般都可以提供TB级的存储容量,当然高端的存储产品也可以提供高达几个PB的存储容量。 

3.3.2 大数据时代的新挑战 

相对于传统的存储系统,大数据存储一般与上层的应用系统结合得更紧密。很多新兴的大数据存储都是专门为特定的大数据应用设计和开发的,比如专门用来存放大量图片或者小文件的在线存储,或者支持实时事务的高性能存储等。因此,不同的应用场景,其底层大数据存储的特点也不尽相同。但是,结合当前主流的大数据存储系统(见图3-5),可以总结出以下一些基本特点。 

978-7-111-53304-7-Chapter03-5.jpg

图3-5 存储系统

1.大容量及高可扩展性 

大数据一般可达到几个PB甚至EB级的信息量,传统的NAS或SAN存储一般很难达到这个级别的存储容量。大数据的主要来源包括社交网站、个人信息、科学研究数据、在线事务、系统日志,以及传感和监控数据等。各种应用系统源源不断地产生着大量数据,尤其是社交类网站的兴起,更加快了数据增长的速度。比如,Instagram网站每天用户上传的图片数量高达500万张,而新浪微博宣布其用户平均每天发布超过l亿条微博。因此,除了巨大的存储容量外,大数据存储还必须拥有一定的可扩容能力。扩容包括Scale-up和Scale-out两种方式。鉴于前者扩容能力有限且成本一般较高,因此能够提供Scale-out能力的大数据存储已经成为主流趋势。 

2.高可用性 

对于大数据应用和服务来说,数据是其价值所在。因此,存储系统的可用性至关重要。平均无故障时间(MTTF)和平均维修时间(MTTR)是衡量存储系统可用性的两个主要指标。传统存储系统一般采用RAID、数据通道冗余等方式保证数据的高可用性和高可靠性。除了这些传统的技术手段外,大数据存储还会采用其他一些技术。比如,分布式存储系统中多采用简单明了得多的副本来实现数据冗余;针对RAID导致的数据冗余率过高或者大容量磁盘的修复时间过长等问题,近年来学术界和工业界研究或采用了其他的编码方式。 

3.高性能 

在考量大数据存储性能时,吞吐率、延时和IOPS是其中几个较为重要的指标。对于一些实时事务分析系统,存储的响应速度至关重要;而在其他一些大数据应用场景中,每秒处理的事务数则可能是最重要的影响因素。大数据存储系统的设计往往需要在大容量、高可扩展性、高可用性和高性能等特性间做出一个权衡。 

4.安全性 

大数据具有巨大的潜在商业价值,这也是大数据分析和数据挖掘兴起的重要原因之一。因此,数据安全对于企业来说至关重要。数据的安全性体现在存储如何保证数据完整性和持久化等方面。在云计算和云存储行业风生水起的大背景下,如何在多租户环境中保护好用户隐私和数据安全成为大数据存储面临的一个新挑战。 

5.自管理和自修复 

随着数据量的增加和数据结构的多样化,大数据存储的系统架构也变得更加复杂,管理和维护便成了一大难题。这个问题在分布式存储中尤其突出。因此,能够实现自我管理、监测及自我修复将成为大数据存储系统的重要特性之一。 

6.成本 

大数据存储系统的成本包括存储成本、使用成本和维护成本等。如何有效降低单位存储给企业带来的成本问题,在大数据背景下显得极为重要。如果大数据存储的成本降不下来,动辄几个TB或者PB的数据量将会让很多中小型企业在大数据掘金浪潮中望洋兴叹。 

7.访问接口的多样化 

同一份数据可能会被多个部门、用户或者应用来访问、处理和分析。不同的应用系统由于业务不同可能会采用不同的数据访问方式。因此,大数据存储系统需要提供多种接口来支持不同的应用系统。 

3.3.3 分布式存储

大数据导致了数据量的爆发式增长,传统的集中式存储(比如NAS或SAN)在容量和性能上都无法较好地满足大数据的需求。因此,具有优秀的可扩展能力的分布式存储成为大数据存储的主流架构方式。分布式存储多以普通的硬件设备作为基础设施,因此,单位容量的存储成本也得到大大降低。另外,分布式存储在性能、维护性和容灾性等方面也具有不同程度的优势。 

分布式存储系统需要解决的关键技术问题包括可扩展性、数据冗余、数据一致性、全局命名空间和缓存等,从架构上讲,大体上可以将分布式存储分为C/S(Client-Server)架构和P2P(Peer-to-Peer)架构两种。当然,也有一些分布式存储中会同时存在这两种架构方式。 

分布式存储面临的另外一个共同问题,就是如何组织和管理成员结点,以及如何建立数据与结点之间的映射关系。成员结点的动态增加或者离开,在分布式系统中基本上可以算是一种常态。 

Eric Brewer于2000年提出的分布式系统设计的CAP理论指出,一个分布式系统不可能同时保证一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三个要素。因此,任何一个分布式存储系统也只能根据其具体的业务特征和具体需求,最大地优化其中的两个要素。当然,除了一致性、可用性和分区容忍性这三个维度,一个分布式存储系统往往会根据具体业务的不同,在特性设计上有不同的取舍,比如,是否需要缓存模块、是否支持通用的文件系统接口等。

3.3.4 云存储及存储虚拟化

云存储是由第三方运营商提供的在线存储系统,如面向个人用户的在线网盘和面向企业的文件、块或对象存储系统等。云存储的运营商负责数据中心的部署、运营和维护等工作,将数据存储包装成服务的形式提供给客户。云存储作为云计算的延伸和重要组件之一,提供了“按需分配、按量计费”的数据存储服务。因此,云存储的用户不需要搭建自己的数据中心和基础架构,也不需要关心底层存储系统的管理和维护等工作,并可以根据其业务需求动态地扩大或减小其对存储容量的需求。 

云存储通过运营商来集中、统一地部署和管理存储系统,降低了数据存储的成本,从而也降低了大数据行业的准入门槛,为中小型企业进军大数据行业提供了可能性。比如,著名的在线文件存储服务提供商Dropbox,就是基于AWS(Amazon Web Services)提供的在线存储系统S3创立起来的。在云存储兴起之前,创办类似于Dropbox这样的初创公司几乎不太可能。 

云存储背后使用的存储系统其实多是采用分布式架构,而云存储因其更多新的应用场景,在设计上也遇到了新的问题和需求。比如,云存储在管理系统和访问接口上大都需要解决如何支持多租户的访问方式,而多租户环境下就无可避免地要解决诸如安全、性能隔离等一系列问题。另外,云存储和云计算一样,都需要解决的一个共同难题就是关于信任Trust)问题—如何从技术上保证企业的业务数据放在第三方存储服务提供商平台上的隐私和安全,的确是一个必须解决的技术挑战。 

将存储作为服务的形式提供给用户,云存储在访问接口上一般都会秉承简洁易用的特性。比如,亚马逊的S3存储通过标准的HTTP协议和简单的REST接口进行存取数据,用户分别通过Get、Put和Delete等HTTP方法进行数据块的获取、存放和删除等操作。出于操作简便方面的考虑,亚马逊S3服务并不提供修改或者重命名等操作;同时,亚马逊S3服务也并不提供复杂的数据目录结构,而仅仅提供非常简单的层级关系;用户可以创建一个自己的数据桶(bucket),所有的数据直接存储在这个bucket中。另外,云存储还需要解决用户分享的问题。亚马逊S3存储中的数据直接通过唯一的URL进行访问和标识,因此,只要其他用户经过授权,便可以通过数据的URL进行访问了。

存储虚拟化是云存储的一个重要技术基础,是通过抽象和封装底层存储系统的物理特性,将多个互相隔离的存储系统统一化为一个抽象的资源池的技术。通过存储虚拟化技术,云存储可以实现很多新的特性。比如,用户数据在逻辑上的隔离、存储空间的精简配置等。 

3.3.5 大数据存储的其他需求及特点 

大数据存储的其他需求及特点包括下面两个。 

1.去重(Deduplication) 

数据快速增长是数据中心最大的挑战。显而易见,爆炸式的数据增长会消耗巨大的存储空间,迫使数据提供商购买更多的存储,然而却未必能赶上数据的增长速度。这里有几个相关问题值得考虑:产生的数据是不是都被生产系统循环使用?如果不是,是不是可以把这些数据放到廉价的存储系统中?如何让数据备份消耗的存储更低?如何让备份的时间更快?数据备份后能保存的时间有多久(物理介质原因)?备份后的数据能不能正常取出? 

所谓“去重”,即去除重复数据。数据去重大概可以分为基于文件级别的去重和基于数据块级别的去重。一般来讲,数据切成块(chunk)有两种分类:定长(Fixed size)和变长Variable size)。所谓定长,就是把一个接收到的数据流或者文件按照相同的大小切分,每个chunk都有一个独立的“指纹”。从实现角度来讲,定长文件的切片实现和管理比较简单,但是数据去重的比率较低。这也是容易理解的,因为每个chunk在文件中都有固定的偏移。但是在最坏情况下,如果这个文件在文件增加或者减少一个字符,将导致所有chunk的“指纹”发生变化。最差的结果是:备份两个仅差一个字符的文件,导致重复数据删除率等于零。这显然是不可接受的。为此,变长chunk技术应运而生,它不是简单地根据文件偏移来划分chunk,而是根据anchor(某个标记)来对数据分片。由于找的是特殊的标记,而不是数据的偏移,因此能完美地解决定长chunk中由于数据偏移略有变化而导致的低数据去重比率。 

2.分层存储(Tiered Storage) 

众所周知,性能好的存储介质往往价格也很高。如何通过组合高性能、高成本的小容量存储介质和低性能、低成本的大容量存储介质,使其达到性能、价格、容量及功能上的最大优化,是一个经典的存储问题。例如,计算机系统上通过从外部存储(如硬盘等)到内存、缓存等一系列存储介质组成的存储金字塔,很好地解决了CPU的数据访问瓶颈问题。分层存储是存储系统领域试图解决类似问题的一个技术手段。近年来,各种新存储介质的诞生给存储系统带来了新的希望,尤其是Flash和SSD(Solid-State Drive)存储技术的成熟及其量化生产,使其在存储产品中得到越来越广泛的使用。然而,企业存储,尤其是大数据存储,全部使用SSD作为存储介质,其成本依然是一个大问题。 

为了能够更好地发挥新的存储介质在读、写性能上的优势,同时将存储的总体成本控制在可接受的范围之内,分层存储系统应运而生。分层存储系统集SSD和硬盘等存储媒介于一体,通过智能监控和分析数据的访问“热度”,将不同热度的数据自动、适时地动态迁移到不同的存储介质上。经常被访问的数据将被迁移到读、写性能好的SSD存储上,不常被访问的数据则会被存放在性能一般且价格低廉的硬盘矩阵上。这样,分层存储系统在保证不增加太多成本的前提下,大大提高了存储系统的读、写性能。