随着科学技术的不断发展,人们所接触到的数据量越来越大,对数据的存取访问也提出了越来越高的要求,数据存储系统的存储容量、存取速度、安全性、可靠性等都是十分重要的。光盘库系统作为一种海量存储方式,因为大容量、高安全性、高可靠性的特点而被广泛应用。
光盘库一般配置有1~6台CD-ROM驱动器,可容纳100~600片CD- ROM光盘。用户访问光盘库时,自动换盘机构首先将CD-ROM驱动器中光盘取出并放置到盘架上的指定位置,然后再从盘架中取出所需的CD-ROM光盘并送入CD-ROM驱动器中。由于自动换盘机构的换盘时间通常在秒量级[1],因此光盘库的访问速度较低,本文对此提出了特有的解决方案。
1 二级缓存系统总体架构
对系统的高性能需求意味着高成本的投入,而在实际使用中,并不是所有的文件都需要提供高性能访问的,根据20/80原则,只需要提供20%左右文件的高速访问即可。如果利用磁盘存取性能高于光盘库的特点,将光盘库中访问频率较高的部分数据保存在磁盘中,并对外提供存取服务,则可以在占用较小的磁盘空间的代价下,通过磁盘中的数据服务大部分的数据请求,减少对光盘驱动器和机械手的操作,缩短请求等待时间,提供较好的用户体验。
因此系统考虑将文件和数据光盘存储在硬盘上,使用廉价的文件服务器提供高频文件的访问,使用相对成本较高的虚拟光盘库提供对中频文件的访问,使用成本最为低廉的光盘库提供对低频文件的访问并作为所有文件的永久存储。关键技术如下:
(1)参考虚拟光盘库的用法[2],在光盘库系统中增加一个由高速磁盘或者高速磁盘阵列所组成的虚拟光盘库来提高光盘库的存取速度。虚拟光盘库将光盘片上的应用软件和资料,压缩存放在硬盘上,并产生一个虚拟光盘图标,之后不再需要此片光盘便可执行。使用时无需将光盘放入光驱中,也不用找寻光盘片,更不需要等待光驱的缓慢激活,只需加载虚拟光盘,就可以提供硬盘级的速度访问光盘数据。
(2)参考虚拟服务器的用法[3],在光盘库系统前置多台文件服务器,提供文件缓存访问机制。文件服务器可以将最近访问的文件缓存在本地硬盘中,直接提供本地访问;对于不在本地的文件,则将请求前转到虚拟光盘库。由于文件服务器提供了分布式访问能力,可以大大提高并发访问速度。
本文给出的系统总体架构如下:
客户端:访问时以文件名称按照给定的HASH规则计算对应的文件缓存服务器,向该文件缓存服务器发送文件访问请求。如果客户端访问量大,则可以增加文件缓存服务器数量,调整文件HASH规则,以提供更高访问性能。
文件缓存服务器:收到客户端的文件访问请求后,首先根据Cache模块中保存的文件Cache队列定位有无存在对应的文件,如果文件存在,则读取对应文件内容并返回响应给客户端;如果文件不存在,则说明本地无文件,则将请求转发到虚拟光盘库服务器。文件传输模块收到文件传输请求后,接收文件保存到本地,并通知Cache模块更新文件访问信息。
虚拟光盘库服务器:收到文件访问请求后,调用镜像管理模块提供的文件访问服务。镜像管理模块读取数据库中保存的文件存储信息,如果文件在本地有镜像,则读取本地镜像中的文件,同时向对应文件服务器的文件传输模块发送请求,触发该文件传输到对应文件服务器上;如果文件在本地没有镜像,则根据该文件所在的光盘库中光盘位置信息,调用光盘库访问接口驱动机械手读取对应的数据光盘,同时触发文件的传输处理。
2 文件缓存服务器实现
根据系统总体架构设计,文件缓存服务器主要包括三个模块:通讯模块、Cache模块、文件传输模块,提供三个主要流程:文件访问流程、文件传输流程、文件Cache流程。三个模块的功能如下:
通讯模块:处理各种外部消息,可以是Web请求或者自定义TCP请求,解析请求内容,进行相应的流程处理。
Cache模块:负责管理本地缓存的文件,包括磁盘管理、目录管理、文件查找、替换、LRU队列管理、文件访问属性管理等。为了避免系统重启时丢失文件访问属性和LRU队列,在数据库中保存文件的访问属性,在重启时根据文件访问属性重新生成LRU队列。
文件传输模块:负责处理虚拟光盘库发送过来的文件传输请求,包括文件队列管理、数据传输、差错校验等。
文件缓存服务器处理流程如下:
对于本地缓存表中找不到的文件,说明本地没有文件副本,需要转发请求到虚拟光盘服务器,收到虚拟光盘服务器的响应后,说明文件已经传送到本地,此时读取文件,返回响应给客户端。主要流程如下:
(1)系统启动后,Cache模块从文件访问属性表中读取文件列表,根据文件访问时间、访问次数在内存中生成LRU队列。
(2)通讯模块收到客户端文件访问请求后,根据请求的文件信息查找文件访问属性表,如果找到记录,则说明缓存有本地文件,更新文件访问属性表和LRU队列,返回本地文件给客户端;如果没有找到记录,则说明本地文件缺失,转发请求到虚拟光盘服务器。
(3)通讯模块收到虚拟光盘服务器的文件传输请求后,调用Cache模块接口判断磁盘空间是否充裕,如果空间充裕,则接收文件;如果空间小于限额,则根据Cache模块的LRU队列删除最少使用的文件以腾出空间,然后接收文件。最后向虚拟光盘服务器返回响应。
(4)通讯模块收到虚拟光盘服务器的文件访问响应,则表明文件已经传输到文件缓存服务器,更新文件访问属性后,返回本地文件给客户端。
对于文件的写入访问,文件缓存服务器需要通过传输模块将文件发送到虚拟库服务器上进行处理。
3 虚拟光盘库服务器实现
根据系统总体架构设计,虚拟光盘服务器主要包括四个模块:通讯模块、镜像管理模块、文件传输模块和光盘库管理模块,各个模块的功能如下:
通讯模块:处理各种外部消息,根据请求类型解析请求内容,调用对应的处理流程请求类型可以是文件缓存服务器的文件访问请求,也可以是文件传输响应等。
镜像管理模块:负责管理本地的光盘镜像文件,包括磁盘管理、目录管理、文件查找、替换、镜像LRU队列管理、镜像访问属性管理等。为了避免系统重启时丢失镜像访问属性和LRU队列,在数据库中保存镜像的访问属性,在重启时根据镜像访问属性重新生成镜像LRU队列。
文件传输模块:负责处理镜像管理模块的文件传送请求,包括文件队列管理、数据传输、差错校验等。
光盘库管理模块:负责根据镜像管理模块的请求,驱动机械手取放光盘,然后读取光盘内容,或者向光盘写入镜像。
虚拟光盘库服务器处理流程如下:
虚拟光盘库文件信息表中保存了文件名称、所在虚拟镜像ID、所在光盘库ID等信息,对于文件信息表中找不到的文件,说明不存在该文件。对于虚拟镜像ID有效的文件,说明可以从本地镜像中访问;对于虚拟镜像ID无效而光盘库ID有效的文件,则说明需要从光盘库中调取文件所在光盘,并保存到本地镜像中。主要流程如下:
(1)系统启动后,镜像管理模块从镜像访问属性表中读取镜像列表,根据镜像访问时间、访问次数在内存中生成镜像LRU队列。
(2)通讯模块收到文件访问请求后,根据请求的文件查找文件信息表,如果找不到记录,则说明系统无此文件,直接返回失败。
(3)如果找到记录且镜像ID有效,则说明本地镜像中有访问的文件。
(4)如果找到记录但镜像ID无效,则说明本地镜像中没有访问的文件,此时根据文件所在的光盘库ID读取光盘内容,并替换本地镜像。
(5)将读取到的文件传送到文件缓存服务器。
(6)收到文件缓存服务器文件传送成功响应后,通讯模块向文件缓存服务器返回成功响应。
对于文件的写入访问,流程相对复杂,镜像管理模块需要判断当前归档的文件总量适合刻录光盘,则生成虚拟光盘镜像,并调用光盘库模块进行镜像刻录。
4 系统应用
两级Cache的性能改进结构提高了整个系统的访问性能,对于高频访问的文件,可以通过多台廉价的PC服务器提供分布式访问来提高访问性能,对于一般访问的文件由于缓存在磁盘阵列上,也能提供优于光盘库的访问性能。
本系统在实际测试和商用实践中都取得了良好的效果,为某用户开发的虚拟库档案管理系统满足了日常访问和归档的需求,并且可以根据访问量进行平滑扩展。
考虑到廉价PC服务器磁盘有一定的故障率可能引起文件损坏,下一步考虑采用增加本地校验和两级校验的方式,提高数据文件的正确性。
参考文献:
[1]许静.多级存储技术及光盘库在实际工程中的应用探讨[J].智能建筑电气技术,2011,03.
[2]易法令,万继光.虚拟光盘库数据流服务器的设计与实现[J].计算机技术与发展,2006,07.
[3]胡秀敏,郭成城,杜晓.基于文件类型的光盘库缓存系统设计与实现[J].计算机工程与应用,2005,15.
作者简介:卢云许(1975-),男,硕士,系统工程师,主要研究方向:大容量数据存储管理。
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。