一、前言
视频服务器在广播电视领域的应用已经有相当长的时间,经历了从简单Motion-JPG方式的广告插播时代,到MPEG-2编码的盘带结合播出时代,以及到今天的全硬盘播出时代。应用的发展来自于技术的发展,不断进步的视频服务器存储技术起了举足轻重的作用。视频服务器的存储性能除了硬盘容量的快速提升,数据冗余保护和数据重建的性能提升也是其中重要的推动力量。
以下就对相关的视频服务器存储技术的新发展进行介绍,藉此展望未来视频服务器应用领域的发展趋势。
二、冗余的必要性
在视频服务器的数据存储应用中,除了要求容量外,更重要的就是保证数据的完整性和可靠性。只有数据不丢失,才能去谈性能。因此,视频服务器数据必须具有冗余性,防止数据的崩溃。
数据的错误通常是由硬盘故障引起的,而最恐怖的硬盘崩溃将导致数据的丢失。由于至少10000RPM高转速磁盘的机械特点,它的崩溃通常是永久性,因此数据的保护变得十分必要。
由磁盘失效导致的数据错误,通常用平均无故障时间(MTBF)表示;另一种是用读出数据总量中出现比特错误的数目表示,称为误码率(BER)。还有一些由磁盘寻道、读出和写入等失效导致的错误是可以通过重复操作而成功解决。由于现在许多磁盘的MTBF都超过了百万小时,BER指标的数量级也到达10-15,再加上5年质保,令检测坏盘比检测一个偶然出现问题的硬盘更符合经济效益。为了减少更换保修成本,通过配置多种内部数据恢复机制可以防止额外的磁盘失效,包括数据校正、重构和磁盘坏轨映射机制。只有当单个磁盘超出它的重读数并再没有冗馀的扇区进行磁盘坏轨映射时,数据才会真正丢失。
但是,由于视频服务器要求数据吞吐性能稳定,其设计通常不能采用复杂的磁盘内部数据校正机制以消除错误,而“重复操作”这一技术在系统中会被限制。
对视频服务器设计而言,随着系统的性能、规模和复杂性的提高,磁盘失效和错误处理成为一项重要而又紧迫的任务。假定1个磁盘的BER指标为10-15(每比特读错误),当数据率增加时,错误出现的频率约为几小时出现1个。
在重要的数据位置,即使1个不可校正的比特错误,也可能导致不可接受的视音频异常。因此采用一些数据保护方式是十分必要的,最主要的手段就是对硬盘故障的保护。而对数据丢失或数据中断的保护只是暂时的,更安全稳定的是要对丢失的数据进行修复,这就是硬盘数据的重建。下面内容主要围绕这两方面技术的新发展。
三、硬盘故障保护
硬盘故障,就可能导致数据的丢失。硬盘故障保护,也就是在出现硬盘故障时,存储单元的数据在一定冗余保护措施下不至于丢失。这样的保护有如下几种方式。
1.单硬盘故障保护
单硬盘故障保护是为了避免存储阵列中单个硬盘故障导致的数据丢失,通常是通过增加一个校验盘对所在硬盘阵列进行冗余保护。对视频服务器数据存储的单硬盘故障保护主要以RAID3为主,这方面技术和应用已经相当成熟了,在此不做冗述。这里介绍的,是以RAID3技术为基础的更为实用的连续数据重构RAID3校验方式。
与传统RAID3不一样,连续数据重构方式的RAID3在数据“读出”期间一并读出校验信息并将其解码,并用它去检验数据的完整性。由于单个校验值是基于每个数据部分分布的XOR计算的结果,既可以用它作错误检验处理,也可以用它作错误校正处理。依据实际情形,应用程序使用这些校验信息服务于如下三个目的:
(1)一个数据块不能还原或报告错误的情况。损坏的部分仍然可以用好的数据块和校验信息通过XOR计算而得以重构。这种情况就是通常的单一错误校正(SEC)。
(2)磁盘上所有读取的数据和校验信息能够还原和无错误报告的情况。如果所有的数据块和校验信息事实上是正确的,依上述方程式就可方便地重建了缓存。如果经过检验运算,发现某一数据块出错(包括校验),这样受损坏的缓存会被摒弃,对应的视频和音频信息的数据块就用“黑块”和“静音”数据替代。这种情况称为单一错误检测(SED)。
(3)数据带区集有多处损坏,在这种情形下,损坏的数据无法被校正。对应的视频和音频信息数据块就用“黑块”或“静音”替代。这种情况称为多错误检测(MED)。
在RAID磁盘存储子系统中,失效的数据部分通常反映出一个特定磁盘的损坏(前提是分析可知该部分数据出错了),多限于上述提到的第一和第三情形。绝大部分RAID系统只依靠磁盘自己报告错误,也没有在读取数据时进行XOR校验。所以都忽略了第二种情形,让系统处于易损或“不报告”错误数据状态。在视频服务器应用场合,这种方法是至少要检测这些错误信息,并用“黑块”替换这些错误数据来保证连续的视频流,以免因错误数据被读取导致MPEG-2解码运算混乱从而引起马赛克等现象的发生。同样的方法也应用于音频,以防止出现“口破”和“咔嗒”类型的数字杂音。
另一个优势,就是一直保持校验信息计算,从而有效地改进了单一错误校正情形下的总体性能。如果一个磁盘损坏,就不需返回前面重读先前的数据,只需跳过失效的部分,利用校验数据重构原始数据分布。另外,当系统操作在降级模式时(出现坏盘等待重建),完全不会因重新读取校验盘而降低系统的性能。
2.双硬盘故障保护
单硬盘故障保护可以防止一个硬盘失效,但大量数据盘同时使用时,就存在超过一个数据盘失效所造成的不可校正错误的机会。当增加更多数据存储硬盘时,两个数据(硬盘)同时出错导致的不可校正可能性大大增加了。下面,我们对存储单元双数据错误发生的可能性进行分析。
(1)双数据错误的几率分析
如果单一数据瞬间失效的可能性是df,在n个数据带区的单一数据错误的可能性是:
 |
可校正的单一数据错误=df×n
从上述方程式中可知,单一数据错误与磁盘的数目成正比。因此,推导出双重数据失效的可能性是:
不可校正双重数据失效=(df×n)(df×(n-1))=(df×n)(df×(n-1))=df2×(n2-n)
从上述方程式中可知,双数据错误与磁盘数目的平方成正比。
拥有单一校验盘的RAID系统的最大缺点,就是当它的带区集增大时,出现不可校正的双重错误的机会也大大增加了。事实上,当df=0.008时,一个典型的48块磁盘的带区出现双数据错误的可能性与在16块硬盘带区集中出现单一数据错误的可能性相当。
针对上述可能风险出现的预防,采用多个校验盘的技术改进方法就可以克服每一数据带区只有单一校验盘的不足。这种方法的关键是定义一个或一组方程式表示已知数据带区的校验信息,而这个或这组方程式的运算必须简单,才能减少冗余校验对存储性能的影响。汉明编码技术恰恰符合这样的要求。
(2)汉明编码
通过采用码距为3的汉明编码定义一组校验方程式,可以取得如下的数据保护特性:
校验方程式的数目(校验磁盘):r
数据块的数目(数据磁盘):n=2r-1-r
以针对SEC带区集采用汉明编码(15,11,3)方程式的典型应用为例,码距为3的标准校验矩阵定义如下(有4块校验盘):
位置:p1 p2 d3 p4 d5 d6 d7 p