面向对象的存储思想
北京亚细亚智业科技有限公司
引子
谈到“面向对象”这个词,人们一定会马上联想到计算机程序设计中的面向对象,在编程中它的本质是把数据和处理数据的过程当成一个整体——对象;而我们今天要谈的面向对象存储思想,本质上也是把待处理的数据当成一个整体——对象,但是却不能把它等同于前者。
存储在计算机广泛应用的今天,已经被提升到非常重要的高度。相应地,数据存储的实现方法就成为其中的关键环节,一般的存储方法只能机械式完成存储任务,对于用户实际应用来讲,复杂又低效;先进的存储方法能使存储备份软件的备份、归档、检索和恢复等等操作变得简单而高效,于是面向对象的存储思想应运而出。
存储中的对象
在存储领域中,存储的操作对象就是计算机生成的各种数据,这些数据通常都是以元数据形式存放于硬盘等介质中,最常见的就是大家通常说的文件,但是有些文件是相关的,有些文件是不相关的;相关的文件有时存放在连续的硬盘簇中,有时存放在非连续的硬盘簇中;一个文件有时也会被存放到非连续的硬盘簇中,读取该文件时系统耗用的时间就会变长,效率降低,为了解决此问题,视窗操作系统中推出了磁盘碎片整理功能。对应于硬盘里的文件的某些存放状态,在对这类相关联文件进行磁带储存时,相关联的文件有时会被存放在磁带中不同的地方,而磁带属于线性记录介质,不同于硬盘和光盘等随机存储介质,可能需要进行多次卷带操作,于是问题出现了,当用户想调出这些相关联的文件进行使用时,管理软件就得在同一磁带中或者是在不同磁带中依次找到所有的文件,恢复效率低暂且不说,而且对硬件设备磨损较严重,后来软硬件生产商为了避免这种情况的出现,采用了面向对象存储的设计思想(OOS,Object-Oriented Storage),该技术对数据的原始形式进行再编组,形成对象存储体,即该技术允许用户将相互关联的一组文件作为一个整体来进行存储,这样在恢复的时候就可以有效地避免由于数据分散在不同的磁带中而造成的机械手频繁操作问题,在一定程度上能够极大地提高工作效率,延长了硬件设备的使用寿命。
存储应用类型
通常的存储应用分为两种类型——备份和归档。备份是为了在线数据的可靠性所做的后备复制品,并且能够恢复的备份才可以称为真正的备份;归档是针对内容式的文件系统,并可根据用户自己的意愿,对文件的长期可靠性和读取安全性所作的存储,换言之就是用户可以删掉数据源也可以保留数据源,而且用户归档后的文件只能被有访问权限的人进行读写。
在归档应用中,用户通常面对的都是许多单个文件,它们可能分布在internet、intranet、数据库服务器、图像中心服务器和视频中心服务器等不同位置,它们或者相关或者毫无关系,为了整个系统的高效性,在具体的备份操作中大家都采用了多级存储结构,即在线、近线和离线,在线通常是把数据暂存到一个盘阵中,当系统空闲时在后台进行近线磁带备份,存满的磁带再拿到离线带架上进行管理。这些单个文件处于在线状态时,相关的诸文件在物理位置上有时连续存放在一起,有时非连续地存放在一起,此时用户调用非连续存放的文件,可能得访问多个文件夹,操作麻烦。诸文件从在线状态转到后备状态之前,我们如果不对其进行逻辑上的分类和统一管理,文件存放依旧杂乱无章,进而在磁带备份体中,相互关联的一组文件有可能被存放到不同的带子上,这样的话,当用户从磁带中调用所需数据时,就会对多盘磁带进行读取操作,机械手也会频繁地进行切换,对各种相关硬件磨损不说,而且造成用户操作复杂、效率低下。于是针对这种情况,我们对文件进行逻辑分类,使得它们的存放关系变得很清晰,甚至实现了将一组相关文件进行打包组合,形成一个对象,用户所面对的就是一个对象式存储体,而不再是一些单个文件。
当我们采用了对象式存储后,用户进行数据回迁使用时,因为相关联的文件都被存到一起,被集中管理起来,调用这些文件就非常方便快捷,效率提升幅度相当大;数据管理也变得相当清晰和简单,用户再也不需要四处检索调用各个相关联的文件了,软件对用户展现的都是一个个整体的对象;当数据以对象方式存入磁带后,对用户的磁带离线支持也得到进一步加强,相关联的文件几乎都会被存放在连续的磁带存储区中,免去了以往更换多盘磁带的麻烦。
在备份应用中,用户通常关心的都是一个整体的存储操作,同时一定要保证备份过程中数据的正确性,然而各种异外的情况时有发生,譬如备份过程中断导致某个文件的数据块丢失等等;此外用户还关心整个系统和网络的效率问题,所以待备份的数据都要先经过在线硬盘存储这一关,然后的过程和归档应用中的近线存储一致。在线硬盘存储是为了系统的高效率运转所作的存储,近线磁带后台存储是为了缓解系统压力,保证数据的可靠性所做的存储。在前一环节中,我们希望备份的窗口时间越短越好,这样不会对系统产生持续的压力,为了让窗口时间减少,首先的考虑就是减少每一次窗口备份的数据量,于是自然而然地想到比较合理的对象式存储体;其次的考虑就是单个文件的近线磁带存储,如果是一个一个地存储它们,效率必然低下,而且对磁带机等硬件设备的磨损非常大,此时更加需要对象式存储的思想,将所有单个文件进行对象式打包处理,以对象为单位进行近线磁带存储,极大地解决了上述诸多问题。
技术实现
归档中对象的生成
在媒体行业的归档应用中,我们把一个节目内容中涉及的所有文件都进行逻辑编组,形成存储对象后再归档,该对象最终呈现给用户的是一个完整的节目内容,方便用户检索查看,磁带存储效率提升。
备份中对象的生成
在备份应用中,由其是对数据库进行磁带备份时,我们可以打破按时间存储的方式,通过逻辑重组,把同一数据源的数据存储到同一磁带中,大大提升了管理和应用的效率。
对象复制过程
当用户产生了很多数据磁带之后,有时会出现磁带损坏、重新利用磁带等的情况,此时我们需要对磁带进行拷贝,或者复制个别有用的数据到新磁带中,此时我们就用到了对象复制。
整个对象复制分两个步骤——对所需要复制的对象回迁和对所需要复制的对象归档。
回迁过程首先获得所需要复制的对象所在的磁带信息,如果该磁带未在磁带库中则提示需要把该磁带放入带库。获得该磁带所在磁带池的信息并连接磁带库,如果连接不正常则返回错误信息,若连接正常则分配驱动器。如果该磁带已经在驱动器中则继续,否则检查驱动器是否为空,非空的话需要卸载磁带。获得对象复制任务所分配的数据迁移器信息,调用数据迁移器的回迁对象的方法,将磁带中的对象恢复到缓冲区中,同时向数据库保存修改的信息。
归档首先需要获得整个复制任务所在的用户组信息以及该用户组所在的磁带池信息。连接磁带库,如果连接不正常则返回错误信息,若连接正常则通过数据迁移器分配出驱动器。检查是否超出驱动器的范围以及驱动器是否被占用,如果正常则分配磁带。检查是否复制到同一盘磁带,是的话检查该磁带的剩余容量是否够用以及该磁带是否被占用以及是否需要装载磁带。获得数据迁移器,调用被分对象的方法,把缓冲区内的对象进行归档。
产品应用
综上,我们能够知道在存储领域中,面向对象的思想其实都是早已成熟的技术并已运用到实际应用中,它采用简单的技术实现了多种需求,为用户带来诸多实质性的帮助,然而众软硬件厂商们都没有明确提出该思想。
北京亚细亚智业科技有限公司作为国内最早从事专业存储领域研发和应用的软件企业,全面致力于自有存储软件的研发与销售,基于自有品牌M2ars Storage Platform家族的系列软件全部采用上述的面向对象存储思想:
1. 在Mars Media(面向媒体行业的归档存储管理软件)中,我们的系统可以创建一个存储对象,在这个对象中可以根据存储的需要包含任意多的节目数据文件(高/低码率视音频数据、元数据、配套文稿、EDL表单等),该对象最终呈现给用户的是一个完整的节目内容,这种面向对象的存储策略,是专门根据媒体行业音像节目数据存储的要求而设计。
2. 在Mars DVR(数字监控信息存储系统)中,我们可以将相互关联的多路镜头同时生成的监控视频归为一个存储对象,隔一定时间归档到同一数据磁带上,这样,便于检索回调,提高工作效率;系统同样支持单路镜头生成的视频文件隔一定时间归档到一盘磁带上;对于在线硬盘上的视频文件可以设置归档后立即删除,也可以保留一段时间后再删除,可以手工删除已归档到磁带上的文件等等。
3. 在Mars Backup(通用数据备份归档软件)中,我们可以将若干相关联的数据作为一个存储对象写到相同的数据磁带上,这样在检索回迁的时候可以大大的节省磁带查找、读取的时间,提高工作效率;或者将所备份的数据进行对象打包,为磁带机提供持续的数据流从而进行近线磁带存储,延长了硬件使用寿命,使备份变得更加高效。