一种基于文件系统在线数据迁移技术.docVIP

一种基于文件系统在线数据迁移技术.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于文件系统在线数据迁移技术

一种基于文件系统在线数据迁移技术   摘 要: 介绍一种基于文件系统过滤驱动的在线数据迁移技术的架构、实现和难点解决方案。   关键词: 文件系统;过滤驱动;数据迁移   中图分类号:U469 文献标识码:A 文章编号:1671-7597(2012)0720013-02   在企事业生产环境中,通常会有设备更替等情况发生,比如,某单位原来购买了低端型号的磁盘阵列,然后经过多年发展,发现原有的磁盘阵列在性能上、规模上已经满足不了业务发展的需要,需要购买高性能的新型阵列,然而这种新型阵列有可能是另外一个存储产商生产的阵列,这就需要在这两种阵列间提供一种数据迁移的能力,把当前的业务数据、应用程序、运行环境从原有阵列迁移到新阵列,而且在进行这种迁移的时候,单位通常希望原有业务系统还能照常对外提供工作,即一边迁移,一边应用照常工作。当然,当前存储产商一般都有自己的解决方案去满足客户的这种需求,通常的做法是在主机端提供软件用操作系统标准接口从原有阵列上读取数据写入新阵列,同时捕获硬盘级别的原阵列I/O写入,复制到新阵列上,但一般说来,这种方案粒度较大,把整个硬盘上的数据都进行迁移,用户没有可定制性,即无法指定什么是真正需要迁移的数据,比如说,用户的系统上D盘安装了微软SQL Server,用户就想只迁移SQL Server数据库本身,而不需要D盘上的其他数据,但通常的方案往往需要把整个D盘上的数据进行迁移,这样不仅迁移时间变长,而且浪费了存储空间。本文介绍一种基于文件系统的数据迁移方案以提供灵活的用户定制性来弥补普通方案的不足。   1 架构设计   上图简要描述了这种新型数据迁移方案的总体架构,该架构包含两个基本模块,分别位于用户态的控制模块,和位于内核态的数据迁移模块,控制模块用来提交用户的迁移需求,启动数据迁移模块进行数据迁移;数据迁移模块启动文件读取和写入进行真正数据迁移,并且在数据迁移结束后通知控制模块任务完成。具体来说,控制模块实际上是一个用户态进程,通过IOCTL通知内核态迁移模块要进行什么样的数据迁移,用户可以定制他们业务相关的数据迁移,还以微软SQL Server数据库为例???假设用户的数据库文件位于D盘MSSQL目录下,用户可以指定D:\MSSQL\*和F:,告诉内核数据迁移模块D:\MSSQL目录下所有文件需要进行迁移到F盘上的同样目录中;内核态的数据迁移模块是整个方案的重点模块,它本质上是一个文件系统过滤驱动,位于I/O存储栈的真正文件系统的上方,应用程序的文件I/O读写在到达真正文件系统之前先到达文件系统过滤驱动,文件系统过滤驱动做若干处理后下发到真正文件系统,很多功能软件,比如杀毒软件、文件复制软件、透明加密软件都是依靠这种方式实现的。在不同操作系统上,文件系统过滤驱动的实现各不相同,对Linux系统,主要通过HOOK机制在实现,在Windows系统上,微软提供了两种方式,legacy方式和minifilter方式,方便开发人员实现文件过滤;但不管文件系统过滤有多少种实现方式,其功能只有一个,在文件打开、读取、写入、锁定等等常见文件操作的时候能通知到功能软件以实现附加价值。   2 基于文件系统在线迁移的核心思路(以用户指定迁移D:\MSSQL\*到F盘为例)   1)从用户指定的配置中定位一个源文件,比如微软SQL Server中的数据库文件D:\MSSQL\DB\sqldb.mdf。   2)文件复制:打开源文件,通过操作系统ReadFile API读取其中内容,并通过WriteFile API写入F:\MSSQL\DB\s   qldb.mdf。   3)I/O镜像:注意到在进行文件复制的同时,上层应用(这里是SQL Server)还在继续对外服务,有可能针对源文件(D:\MSSQL\DB\sqldb.mdf)发生数据库读写请求,需要捕获这些写入请求,并把它们镜像到F盘上同样目录的同名文件上。   4)当步骤2从头到尾把文件sqldb.mdf复制完了后,可以认为该文件的数据迁移完毕,根据用户的指定,定位下一个文件,开始复制,直至所有文件数据迁移完毕。注意对于所有文件,I/O镜像始终都在工作,以保持数据一致性。   5)停止所有文件的I/O镜像;把D盘F盘盘符卸下,把原来的F盘换成盘符D,重新Mount文件系统,启动MS SQL Server,数据迁移完毕。   3 基于文件系统在线迁移的难点分析及解决方案   在这个方案中,主要有以下几个实现难点:   1)整个文件独占访问模式,比如MS SQL Server在访问数据库文件的时候,一定会将这个文件置上排他标志,以防止其他程序打开。   2)文件的一部分被锁定,也是一种文件独占访问模式。   3)I/O镜像时,需要截获文件写入请求。   4)文件复制

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档