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

来源 :硅谷 | 被引量 : 0次 | 上传用户:MR65445
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 介绍一种基于文件系统过滤驱动的在线数据迁移技术的架构、实现和难点解决方案。
  关键词: 文件系统;过滤驱动;数据迁移
  中图分类号: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:MSSQLDBsqldb.mdf。
  2)文件复制:打开源文件,通过操作系统ReadFile API读取其中内容,并通过WriteFile API写入F:MSSQLDBs
  qldb.mdf。
  3)I/O镜像:注意到在进行文件复制的同时,上层应用(这里是SQL Server)还在继续对外服务,有可能针对源文件(D:MSSQLDBsqldb.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)文件复制和I/O镜像之间的同步。
  对于难点1和2来说,某些应用确实希望只有自己能打开自己的文件进行独占访问,而且文件系统在设计和实现上确实提供了独占访问的方式,显然独占访问在数据迁移时是不可接受的,因为复制程序需要打开源文件读取,那么怎么解决这个独占访问的问题,同时使得应用觉得自己在独占访问数据库文件,其他应用程序无法打开读取,而在线迁移软件却能够照常访问呢?应该看到,作为文件过滤驱动程序,内核迁移模块能够在文件打开之前得到通知,如果能在文件系统过滤驱动程序中实现独占访问的逻辑,即设立一个白名单,在这个白名单的程序可以绕过独占访问检查直接打开文件,然后把在线数据迁移模块加入这个白名单,那样就解决了问题。举例来讲,假设存在两个应用程序——MS SQL Server和第三方文件拷贝工具FastCopy,前者作为独占访问sqldb.mdf文件的实体,后者作为其他应用程序试图复制sqldb.mdf到其他地方,文件系统过滤驱动先收到MS SQL Server发出来的指定了独占访问标志的文件打开请求,检查到独占访问标志后,文件系统过滤驱动就在内核内存中设立一个数据结构,并标志该文件已经被“独占”打开,然后清除MS SQL Server打开请求的独占标志,下发该请求到底层真实文件系统;接着FastCopy的文件打开请求到达过滤驱动,在下发到底层文件系统之前,文件系统过滤驱动先做一层检查,检查内存中的数据结构,发现文件已被“独占”打开了,因此文件系统过滤驱动不下发请求直接返回错误“文件访问冲突”;然后迁移软件执行到步骤2,需要以读取方式打开sqldb.mdf,然而因为它是白名单软件,文件系统过滤驱动不做额外处理直接下发请求,因此迁移软件能正常打开并读取文件。同理,在处理文件锁定问题上,文件系统过滤驱动也在内存中设立了一个数据结构,该结构包含一个链表,把所有文件锁定区域链在一起,白名单软件直接跳过,非白名单的软件需要检查文件锁定是否冲突,这样也能解决锁定所带来的问题。这种处理方式可以归结为把文件系统的独占访问/文件锁定逻辑实现在过滤驱动模块中。对于难点3,文件I/O镜像,可以有两种处理方式,首先,文件系统过滤驱动截获到文件写入后,可以拿到文件的写入位置、写入长度、写入内容,文件系统过滤驱动可以把这些信息从内核态传递到用户态,指示用户态程序调用通用操作系统系统调用WriteFile把数据写入目的文件;另外一种方式,就是在内核里头直接产生文件写请求,复制写入位置、写入长度、内容等,直接通过文件系统写到目的文件,与第一种方式相比,这种方式实现上稍微困难一些但避免了内核态用户态模式切换,因此性能更好。难点4,因为这是一种在线的数据迁移方案,为了保证数据的一致性,必须同步文件复制和I/O镜像的过程,比如,假设sqldb.mdf含有两个数据块A/B,当前正在进行文件复制A块,在A块写入F盘之前,上层数据库软件SQL Server由于transaction的缘故,引发的对A块的修改,这种情况下,必须等到A块的文件复制结束后才能进行A块的I/O镜像;同样的,如果对B块I/O镜像正在进行,那么B块的复制就不能开始;为此,引入一个数据结构,该数据结构含有SPIN_LOCK锁(自旋锁)、当前文件复制块号和未决的I/O镜像队列,SPIN_LOCK锁用来同步文件复制和I/O镜像,当前文件复制块号表示文件复制应该从哪个地方开始,I/O镜像队列用来保存当前正在进行镜像的I/O;这样文件复制的逻辑就是:
  1)获取自旋锁。
  2)遍历数据结构中I/O镜像队列,检查是否文件复制块号与其中某个镜像冲突,如果是的话,先释放自旋锁,睡眠一段时间,再次回到1);否则,进入下一步。
  3)设定数据结构中的当前文件复制块号。
  4)释放自旋锁。
  5)读取文件对应于文件复制块号的内容,写入目的文件。
  6)文件复制块号增1),回到1);如此反复直至文件所有数据块复制完毕。
  对应I/O镜像的逻辑就是。
  7)截获到I/O请求,获得当前写入位置。
  8)获取自旋锁。
  9)检查当前写入是否与数据结构中的文件复制块号冲突,若是,表明该块正在复制中,需要等待结束,故先释放自旋锁,睡眠一段时间再次回到1);否则进入下一步。
  10)将当前写入加入I/O镜像队列。
  11)释放自旋锁。
  12)复制I/O以实现目的盘写入,并且下发I/O实现源盘写入。
  13)等待两个I/O成功结束。
  14)获取自旋锁。
  15)从I/O镜像队列中移除当前写入。
  16)释放自旋锁。
  以上是实现内核迁移模块要注意的主要方面,另外,值得注意的是,内核数据迁移模块需要截获其他一些I/O请求,比如文件删除、文件重命名、文件截断等,对于这些请求,数据迁移模块需要复制请求,下发到目的盘,以得到一致的迁移效果。
  参考文献:
  [1]David A.Solomon,Mark E.Russinovich.Microsoft Windows 2000技术内幕(第3版)(影印版),北京大学出版社,2001.
  作者简介:
  刘飞飞(1980-),女,北京人,本科,工程师,研究方向:信息系统开发和运维。
其他文献
期刊
针对现今的虚拟现实技术的特性,提出需要解决的问题,利用虚拟现实技术对整个民航系统的运行进行三维模拟,提供更加可靠的运行数据,提高整个运行的安全可靠性,对整个民航行业
期刊
期刊
最近,为切实做好“双节”期间人口计生宣传服务工作,汝南县罗店镇结合实际,印制2000余套图文并茂,内容含优生优育、婚育新风、奖励扶助的新年挂历等计生宣传品,免费发放给育
近年来,随着经济的进步和信息技术的发展,人们对于网络的要求也越来越高,主要集中在网络高速运行和网络灵活的服务形式两个方面。各大运营商,为迎合受众的基本要求,抢占电信
摘 要: 针对短波复杂电磁环境下的波达方向估计问题,提出利用极化阵列提高测向性能的新方法。首先分析目前短波测向系统中存在的问题以及引入极化阵列的原因,然后描述极化阵列的结构特性,建立极化阵列对信号的接收模型,给出适用于极化阵列的极化MUSIC算法。最后通过对仿真数据与阵地采集数据的处理分析,验证算法的可行性,并分析仿真结果,指出算法的优点与不足。  关键词: 短波;波达方向估计;极化阵列;极化M
自然杀伤细胞(NK细胞)是一类重要的非特异免疫细胞,涉及机体免疫监视,特别是能抗肿瘤,病毒还涉及器官移植排斥反应。近年来对NK细胞活性的研究日超广泛。我们采用~(125)IUdR
请下载后查看,本文暂不支持在线获取查看简介。 Please download to view, this article does not support online access to view profile.
请下载后查看,本文暂不支持在线获取查看简介。 Please download to view, this article does not support online access to view profile.
期刊