背景:
阅读新闻
大数据存储的三大问题解决之道
1. 磁盘技术和文件系统应对海量数据的固有问题 问题一 磁盘故障带来性能下降 磁盘的运行寿命是有限的,可以用平均每年每100块磁盘中产生的故障磁盘数来描述运行寿命。一般的数据中心,每年每100块磁盘中可能会出现平均1-3块故障磁盘。 目前最主流的、最有效的应对磁盘故障的技术就是独立磁盘冗余阵列技术。RAID技术在发生磁盘故障时,可以通过RAID重构来加载预先就绪的热备磁盘,并重新计算校验信息,恢复RAID。RAID重构的过程很慢,如1块3T的盘,大约需要30多小时的重构时间。在重构过程中,该RAID组中的数据访问可以继续,但会变得很慢,难以访问。RAID重构会极大地降低存储系统的性能。 问题二 RAID和文件系统无法管理海量数据 磁盘存储在信息系统中通常以磁盘阵列的形式存在,磁盘阵列架构包括大量磁盘、控制器、接口等。磁盘阵列中的大量磁盘、控制器、接口等。磁盘阵列中的大量磁盘在磁盘阵列控制器的组织、控制和运行下,以RAID组的形式被组织起来,实现数据可靠、并发地读、写和保存。 以100PB数据的存储为例,计算需要磁盘的数量并分析管理这些硬件的方法。 (1)计算磁盘数量 最大磁盘容量:目前主流的、容量最大的磁盘是4TB。 需要磁盘数量:存储介质的1K按照来1 000来计算,而数据的1K按照1024来计算。因此,4TB磁盘只能存3.63TB数据,则100PB数据需要100PB/3.63TB=27548块磁盘。 需要的RAID组数量:一般来说, 1个RAID组中的数据磁盘和校验磁盘不超过10块,以RAID6为例,则1个RAID6组最多能包含8块数据磁盘和2块校验磁盘,则要管理大约27548/10=2755个RAID组。 需要磁盘阵列系统数:—般来说, 1个磁盘阵列系统理的磁盘个数不超过丨个,则需要系统管理的磁盘个数不超过1000个,则需要27548/1000=27.5个磁盘阵列喜哦太难搞。 结论一:理论上看,不断地增加设备数量似乎就可以实现容的增加,但要管理27548块磁盘、2755个RAID组和27.5个磁盘阵列系统,已经是量变到质变,导致管理硬件的复杂度和成本激增,管理上困难重重、难以实现。 结论二:目前最常见存储数据的组织形式是五年间系统,文件系统中的文件在上述磁盘系统中被有组织、有顺序地固定存放于某个物理位置上,这样,对于文件系统本身的管理也从变到质变,管理文件系统的复杂度和成本也随之激增,会带来访问性能、文件数量的上限、可靠性等诸多问题。 (2)解决办法 解决此问题的方法是采用近几年来新兴的对象存储技术。对象存储系统中,数据以对象的形式被存放在某个存储节点的某个磁盘的某个位置上,当某台终端机器存入一个数据(对象) 时, 该机器得到一个字符串,该机器会凭此字符串来读取该数据,对象存储系统会将该数据以完整的形式或以一定算法分散地存在某个位置或多个位置上。简言之,对象存储不使用RAID技术,而是保留多个副本或通过一定算法保存冗余信息,从而防止因磁盘故障造成数据丢失,并且不再受文件系统中数据必须固定在某个物理位置的限制。 2. 存储介质的位错误问题 (1)问题描述 位错误,即Bit Error,中文也译为比特错误,是数字技术中不可避免的问题,在传输和记录数据位时,数据位会有一定的概率被传输或记录错误,如1变成0,或0变成1。对于磁盘和磁带而言,也存在位错误这种概率,也叫做位错误率(bit error rate, BER) , 如希捷Constellation ES 企业级硬盘的BER为1/10E1,也就是说每10的15次方的位中会有1个位是错误的。由于在实际使用中的比上述值还要髙,通过综合计算和分析业界普遍认为,目前的磁盘介质,每12TB就有可能有1位是错误的。 关于应对文件的位错误,最常见的办法是计算并比对校验码如校验码。很多人都有过数据莫名其妙损坏的经历,如以几GB大小的ISO光盘镜像文件在经历多次复制和传输后,该文件有可能会损坏,这很有可能就是位错误造成的,因此,很多网站在下载操作系统光盘镜像文件的链接旁, 都会同时提供MD5校验码。 根据上述分析,对于的存储而言,则其中可能有100PB/12TB=8533个位错误。如果这100PB是电视剧或电影资料,则位错误可能仅影响画面质量,肉眼很难看出;如果是科学数据, 位错误可能会产生十分严重的巨大错误。 此外,由于位错误发生在数据写人、读出、传输的过程中,因此还会影响数据的长期保存。如磁盘产品每隔10年左右就要更新换代,如果数据需要长期保存,就需要把数据从老一代存储系统“ 转存”或“ 迁移” 到新一代存储系统中,这就产生了数据的写人、读出、传输这样新的位错误会在每次“ 转存” 中产生。因此,当100PB要存100年时,则每隔10年左右的“转存”过程都会带来一批新数据的损坏。 (2)解决方法 在存储海量大数据的场景中应对位错误,目前较为有效的解决办法有以下2种: 方法一: 普通对象存储技术+3个副本 该方法的基础是普通对象存储技术,这类对象存储由于没有冗余保护机制,重要的对象则直接被保留3个副本, 当1个副本出现位错误时, 系统可以删除该副本,并再生成1个新的副本。这种方法的优点是设计简单,易于实现; 缺点是存储空间利用率低, 即3份存储空间才能存1份数据。 方法二: 具备冗余和纠错能力的对象存储技术 在这种对象存储技术中,比较高效的是采用了“ 喷泉码FEC算法“的Lattus对象存储系统。该系统中,对象被切割成多个块,并加以多个不同的公式进行运算,生成更多的块,这些块互为冗余信息,之后这些块被分散到不同存储节点的不同磁盘上,同时, 每个块还将生成一串用于对抗位错误的校验码。 冗余块用来解决磁盘故障问题,校验码则用于解决位错误问题。当磁盘故障时,系统会用没有出故障的磁盘上的相应数据块去生成新的数据块; 当出现位错误时,新运算出来的校验码和原来的校验码就会不同,系统会察觉并删除掉该数据块和校验码,然后利用其他没有出问题的数据块重新生成新的、完好的数据块和校验码。 由于对象存储是近几年才出现的技术,目前也存在一些问题,如其传输性能不如文件系统;能够直接支持对象存储的应用较少;市场认可度也不如传统的文件系统。因此,对象存储技术目前只被较大型的数据中心、海量的大数据系统、海量数据的长期保存和归档系统等采用。
|
推荐阅读
|