四.数据重建
数据的重建,最根本的目的就是恢复丢失的数据,保证数据的完整性。而对于视频服务器的数据重建,首先要求正确恢复数据,且不能产生新的错误或风险(如RAID失效),其次要考虑到数据重建的效率。也就是说对于视频服务器的数据恢复越快越好,这样才能尽可能减少视频服务器数据无冗余保护的时间。
下面,针对视频服务器数据重建的特点简要介绍几种的重建技术。
1.分布式RAID重建运算
这种数据重建方式是利用分布式的运算终端实现RAID的重建。其好处是避免RAID运算的单点故障,同时又利用系统内多个终端的运算资源实现更快的重建速度。此方式不同于传统以RAID控制器的数据重建,实现关键在于系统运算资源的协调同步运行,因此该方式主要采用软件形式实现。
采用这一技术,可以利用共享存储视频服务器网络中所有的服务器资源完成数据重建(Rebuild)。同时,系统内的所有运算节点都构成RAID的冗余架构,也就是N个节点就有N-1个RAID的备份。
2.数据按需重建
在过去的硬件RAID控制器时代,当RAID组内的一个硬盘开始重建时,这个硬盘的所有数据块都要重建,无论这些块是否写有数据。也就是说一个只有存储50%数据内容的RAID组与存储100%数据的RAID组需要一样重建时间。这个问题源于RAID的实现就要对硬盘组创建带区,这样就会将各硬盘的对应数据块(Block)进行含奇偶校验位的条带关联。而整个硬盘组都要完成这样的关联,就出现了传统RAID控制器创建RAID所需要的时间。同样在RAID丢失数据需要重建时,需要对新的硬盘建立这样的关联,同时将数据恢复回去。而前者的运算必须是整个硬盘的,不管里面有没有数据。
针对这样的问题,按照实际数据容量的RAID重建方式就出现了。这样的方式涉及文件分配表(FAT)和RAID条带管理,因此按需重建从本质上只能通过软件方式来完成。RAID软件进行数据重建时,硬盘上有数据的RAID条带将被标识出来,这样就不需要重建整个硬盘了,从而实现重建多少计算多少的高效运行。
3.(小数据)快速重建
通过一些视频服务器内置的软件或SNMP监控数据,会发现服务器的硬盘读取偶尔有少量的错误甚至是失败。这可能是某一瞬间硬盘读取出现问题,或是某个数据块有故障。虽然可通过数据保护提供的校验实现了恢复原数据,但故障所带来的隐患还是没有消除,也无法保证下一次还能顺利恢复。
在传统的数据重建方式下,需要完成整个硬盘的数据恢复(即使大部分数据正确的也要重写一次),这期间大量的RAID运算至少几个小时。如此耗时的重建效率非常低。我们如何才能提前采取措施减少错误的继续发生,如何才能提高硬盘小故障带来重建的效率,如何才能知道正确的原数据呢?采用之前提到的数据实时镜像保护技术,利用主备两套存储数据就可以这些问题。
对于主备存储的每一个数据条带,FAT既有是否成功写入的标记,也有写入时间的标记。根据两个FAT的比较结果,我们就可以清晰知道哪些数据是正确的,哪些是错误的或是损坏的。为了降低数据错误和扇区损坏对数据读写的影响,我们就需要对这部分数据进行修正和扇区迁移(每个硬盘都会有若干冗余扇区供坏扇区的替换)。
对应上述的情况,当重建开始时,只有那些包含错误的条带才会重建。因此,在具备数据实时主备镜像保护的存储系统中,小数据快速重建相对于传统的NEXIO RAID阵列重建,修复此类故障只需要很少的时间。
比如,开始重建一个内有50%数据量的RAID阵列,其中有一个条带数据错误。首先,需要占用一小部分时间对在内存当中的扇区文件索引表进行扫描,经比较确定错误扇区位置(这就是扇区索引FAT的作用)。然后系统针对存在错误的扇区通过提取镜像存储单元的正确数据进行重写,恢复完整的实时镜像保护。这样的少量扇区重建仅仅是几分钟。
也就是说,这些常见的硬盘小故障仅仅需要几分钟就能解决,那对在线播出视频服务器的影响微乎其微,而数据可靠性的提高却相当明显。通过内部镜像直接完成数据重建的方法大大提高了视频服务器系统的可靠性,这在传统的分离式主备镜像结构中是无法实现的。
需要注意的是,这种重建的应用仅仅适用于个别硬盘出现写错数据的情况。当一个硬盘进行更换时,还是需要进行传统的重建处理过程。
4.RAIDSAVE—硬盘快照
视频服务器的存储应用有别于其他数据存储,一是其只有增加和删除两种操作,无修改物理文件,因此不存在同样的文件名数据前后不一致情况;二是其数据都是大文件,是连续大量的数据块占用,因此数据存储位置不会因多次增减导致过度分散,影响读写速度;三是视频服务器的存储条带化都很大,一般都是几百千字节(KB),假如以32位(4字节)作为以500KB为条带单位的指针地址,即使1TB数据也仅需要约8MB的指针列表数据量,所占系统硬盘空间非常小。
以上特性,使RAIDSAVE成为另一种应用于视频服务器的“准”备份手段(非物理备份),它是硬盘快照技术Snapshot在视频服务器中的应用。Snapshot硬盘快照技术在存储领域应用非常广泛,其原理就是将存储空间内现有数据“拍个照”,记录各个数据的位置。快照其实是指向保存在存储设备中的数据的引用标记或指针,也就是数据在某一时刻的状况。其工作原理核心就是建立一个指针列表,指示读取数据的地址,提供一个瞬时数据的影像(记录快照时间点)。
当执行RAIDSAVE时,对应被“拍照”的数据将被打上标记,记录其Snapshot的时间,同时视频服务器系统将记录此时刻的文件指针列表。如果此后视频服务器删除了素材,对应文件的指针将从指针列表中删除,但实际的数据并没有从硬盘中删除。假如此时发现误删了该素材,一般情况下由于没有了文件指针,该素材就无法找回;但由于刚才进行了RAIDSAVE操作,相应的文件指针列表就可以调出来,也就是找回误删素材的文件指针地址,素材也就可以恢复了。
实际的RAIDSAVE可以根据需要在每固定间隔时间(如一小时)自动运行一次,将已在系统内存中的实时文件指针列表复制并按具体时刻保存成对应文件存在系统盘中。这样的运算所耗资源是非常有限,因为快照的瞬间只对内存进行操作,而非对硬盘的读写,因此无需担心影响视频服务器的稳定运行。需要说明的,这样的RAIDSAVE操作只能在基于软件实现RAID的存储单元中才能实现。系统就不需要通过RAID控制器而直接看到存储空间里各个文件所属数据的物理地址,并建立完整的FAT。
不过,RAIDSAVE仅仅提供数据的指针列表恢复,在下面两种情况下是措手无策的。一是实际物理硬盘损坏的,此时调出任何指针都无效;二是在RAIDSAVE之后有新素材写入的,若调用原指针列表将导致新增文件的指针丢失,旧的回来了新的就不存在了,因为指针列表是无法做文件筛选的。
五.小结
数据的完整性是视频服务器应用的根本基础,因此视频服务器的设计与应用都必须面对数据的保护和重建。随着存储技术的发展,数据的保护已不是简单的冗余校验,而数据重建也更不仅仅是RAID的Rebuild。新一代存储技术在视频服务器中的应用,将大大提高视频服务器的稳定性,从而减少系统维护,进一步地保证播出系统的安全。