




已阅读5页,还剩86页未读, 继续免费阅读
(计算机软件与理论专业论文)容灾系统中数据监控及远程异步重放方法.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
容灾系统中数据监控及远程异步重放方法 计算机软件与理论专业 磷囊宝彰京搔等教爨李涛 容灾备份对于重要系统具有不可替代的重要性。疑前的容灾系统大多采用 谗蘩n a s ,s a n 这群的存髓备蹬技术,n a s 技术暾邋台予本遗存诺,不适予运 距离异地备份,丽s a n 的备份距离仪为几十公里,凰需专线袋光纤通信,建没 成本商,价格昂贵。随篱i n t e m e t 的饕及与发展,为制忍廉价的i n t e r a c t 资源, 出现了基- y - i n t e m e t 的远程份技术,键盘子i n t e m e t 蛉繁宽及稳定性陵铡,娄 基予i n t e m e t 兹备份技术大多不麓实现数攒豹实时餐份。 本文对邋程数据备份方法进行了探讨,提出了邋程数据备份中的数据监控 及异步重敞方法,并提出了可增于实对检溺备份数据正确性的差锩经铷方法, 为实琵辩蘩予i n t e m e t 斡远程各穆系绫黪箍供了技术愚终。 利罔上述方法,本文实现了基于l i n u x 的远程异步镜像系统,本系统工 乍在 l i n u x 陡核的设备驱动层,对应用程序邂嚷。本系统监控本地的数据生成并封数 成冬傍记录,遮冬硷记蒙露入镱像怒关鹃缓在器中,然嚣盎镜像鼹关舞步发邀 绷远程避彳亍爨放,由诧将本地数据镜像翻远端。本系统对远程传输网络要求低, 可宜接架构于i n t e r n e t 上。 买彝来说,本文姣主甏王俸有: 1 分丰斥了国内舞容灾及备份技术的研究现状。 2 提出了可用于远稷数援备份的数据蓝控方法。数据监控方法可用于镜豫 系绫绱本趣溃,邋过蕊控本篷主掇鲢数据生成过糕,按先质颁痔实对获 褥本地主帆的数掇凝化情况。 3 提出了可用于逸獠数据备份的数据重放方法。本方法与数据监控方法燃 合,翅于镜像系统的远斌,褥到本地数据鸵变化靖况后,处理后重构为 针对远端服务器的数据生成并严格按本地端发生的顺序在远端重新提 交,由此完成本地数据的远程镜像。 4 摄出了一种可用手远程备份系统中的差错控制方法。本方法使溺摘要更 新算法,在镜像过程中实时更新能反映本地与远端数据状态的摘要值, 并通过褰葑要傻的比较检测镜像过程楚否有差错发生,锞涯镜像数据正确 有效。 5 分毫厅l i n u a - 磊鸪。,保存乓 、f 读取备份端摘要值 在备份端重构数据变化d j是f :一,& + 岛jl 图3 5 远端差错控制处理流程 如图3 5 所示,备份过程中,远程镜像模块r 心d 接收到本地端所发送的备 四川大学硕士学位论文 份单元后,使用摘要更新算法实施相应的摘要运算,并利用备份单元中的相关 摘要信息检测传输过程中数据是否出错,并确定两端数据是否一致。若数据在 传输过程中出错,则要求本地端进行重传;若两端数据已不一致,则进行数据 同步;若无错误发生,则远程端通过在备份端上进行数据重放工作,完成数据 在异地的重构。 具体地,备份端差错控制的步骤包括以下步骤: 接收本地端发送过来的备份数据单元r 。解析r ,得到本地端的数据 变化情况d ,d 对应的摘要值幻,及本地端的新摘要值既。 检测数据传输过程是否出错:重新计算d 的摘要e d ,:五b ,;研功;比 较d 。与而,确定数据传输过程是否出错。若而如,表示数据传 输过程出错,向本地端发出重传指令,要求本地端重传备份数据单元 r 。 检测备份端数据与本地端数据是否一致: ( a ) 从备份端对应的配置文件中,读取备份端当前的摘要值岛。 ( b ) 计算备份端新摘要值: i 封装备份端摘要值颤与本地数据变化情况的摘要值 e 0 7 ; 利用摘要算法对封装后的数据进行摘要运算,得到备份 端的新摘要值e 胁。即:e m = 日r 岛+ e d 0 ( c ) 比较本地端与备份端新摘要值:比较e 胁。与尻。的值,发 送比较结果到本地端,具体步骤如下: i 若岛一与尾一一致,表示备份端数据与本地数据 一致,转。 若如。与不一致,表示备份端数据与本地数据 已处于不一致状态,需要对备份端及本地端实施数 据同步,向本地端报错,并进行出错处理。 实施数据备份:根据本地数据变化情况d 在远程重构备份端的数据变 化d ,将d 位用于备份端。 更新备份端摘要值:更新远程备份端的摘要值岛:岛= ,将碌 保存入备份端配置文件中 3 i 四儿i 大学硕士学位论文 向本地端发送备份成功标志。 转到,实施下一笔数据备份。 3 4小结 备份系统是保证数据完整性的重要手段,从不同角度考虑,可将备份技术 划为不同类别,本章介绍了备份技术的划分及网络备份技术。 通过对网络备份技术进行分析,本章提出了可用于网络备份系统中的数据 监控与远程重放方法,并通过数据缓存方法减小了网络备份系统对远程传输网 络的依赖。本章最后提出了一种数据差错控制方法,用于实时检测备份过程是 否有差错发生,以保证备份数据正确有效。 四川大学硕士学位论文 4 远程异步镜像系统的设计 4 1设计目标 远程异步镜像系统主要实现本地数据的远程异步镜像功能,其设计目标如 下几点; 1 基于l i n u x 内核实现,实现对本地镜像设备或分区的完全镜像。 2 保证远程镜像数据的正确性。 3 数据镜像功能对本地镜像设备的文件系统透明,对本地服务器上的应用 程序透明。 4 启动镜像过程后对本地服务器系统效率影响较小,不影响本地系统的正 常、稳定运行。 5 可直接通过i n t e m e t 实现本地数据的跨地域远程镜像。 6 可同时对多个本地镜像设备实施镜像。 7 提供方便的配置管理接口,方便用户配置管理各镜像任务,并实时监控 镜像系统及各镜像任务的当前状态。 8 稳定、健壮的系统。 4 2 总体设计 4 2 1 模块划分 根据所要实现的主要功能,本镜像系统划分为以下几个主要功能模块:本 地监控模块l d m 、本地镜像模块l m m 、远程镜像模块r m m 和配置管理模块 c m m 。 本地监控模块l d m 的主要功能是对本地数据服务器中需镜像的设备实施监 控,l d m 截获针对此设备的所有写操作,并完成对写操作有用信息的分析提取 工作,封装为备份数据单元本地镜像模块l m m 接收l d m 传入的备份数据单 元,并在本地镜像网关上进行缓存,当其与远程镜像模块r m m 通信正常时, 四川大学硕士学位论文 l m m 将其所缓存的备份数据单元依次发送到r m m 。远程镜像模块r m m 实现 本地写操作在远程备份服务器上的重放,r m m 接收本地镜像模块发送的所有备 份数据单元,并对备份数据单元进行解析、重构,r m m 将每笔备份数据单元还 原为针对远程备份设备的相关写操作,并进行提交。配置管理模块c m m ,提供 了系统配置管理功能,实现了对镜像系统镜像任务查询与配置、镜像状态的查 询与配置等主要功能。 4 2 2 实现方案 图4 i 系统体系架构 为实现本地设备进行数据监控时,与上层文件系统及应用程序无关,远程 镜像系统需在l i n u x 内核层次实现。l i n u x 内核态编程的主要方式包括直接修改 l i n u x 内核代码与编写l i n u x 内核模块两种。 直接修改l i n u x 内核代码是早期实现l i n u x 内核编程与修改的主要模式, l i n u x 内核模块是目前最常见的内核编程形式。从l i n u x 内核观点来看,l i n u x 内核模块在运行时段是可链接和删除的,并且通常包括许多函数的对象代码, 这些对象代码在模块加载运行时被动态集成到l i n u x 内核中,因此,l i n u x 内核 模块也与内核一样,运行于核心态。 综上所述,编写l i n u x 内核模块完全可以实现远程镜像系统的各项功能,而 且与直接修改l i n u x 内核代码相比,具有以下优点: 四jr l 大学硕士学位论文 1 修改调试更加方便,直接对l i n u x 内核代码修改时,每次对代码的 改变都需要重新编译内核代码,重新安装内核,重新引导系统,对 调试带来极大不便。而通过l i n u x 内核模块实现时,每次只需重新 编译模块、重新加载该模块即可。 2 按需加载,直接修改l i n u x 内核后,镜像系统与原l i n u x 内核代码 物理上是一个整个,因此将随l i n u x 内核一起加载,常驻内存,而 内核模块的形式实现则可以实现“按需加载” 3 不破坏内核代码的完整性,从设计层次上讲,直接修改内核代码破 坏了l i n u x 内核代码的原始性与完整性,而内核模块则相对独立, 保证了原l i n u x 内核代码的完整性。 基于上述考虑,本文在实现镜像系统时,采用了l i n u x 内核模块的方式。 与普通应用程序相比,l i n u x 内核模块的开发工作具有较大的不同,下面简 要分析l i n u x 内核模块开发与普通应用程序开发的主要区别: 。 。 执行过程:应用程序从头到尾执行单个任务,而模块只是而模块则是为 t 以后处理某些请求而注册自己,完成这个任务后它的“主”函数就立即。 中止了。普通应用程序都是从a m i n o 开始执行,通过退出m a i n o 结束程 。, 序运行与应用程序不同,要实现内核模块,用户必须根据内核定义的 规范实现自己模块的入口与消亡函数,l i n u x 内核通过m o d u l ei n i t o ,少 m o d u l e 分别提供了模块注册入口与消亡处理函数的接口。_exito m o d u l e 注册的入口函数实现模块的初始化,完成了模块向内核的_inito 注册工作,为以后调用模块函数做准备。m o d u l ee x i t o 注册了模块卸载 时需要调用的函数,完成模块的相关清理工作 函数调用:通过在链接过程解析外部引用,应用程序可以调用它未定义 的各种库函数。内核模块仅被链接到内核,因此它仅能调用的函数仅是 由内核导出的那些函数,而没有可供链接的库。l i n u x 透过内核符号表 管理内核导出的所有可供模块调用的函数,除内核本身导出的函数外, 各模块也可通过相应的函数导出自己定义的函数接口或变量,通过这种 方式,l i n u x 允许一个模块使用先前已加载模块导出的函数及变量 名字空间:在开发大型应用程序时,由于存在大量的函数入全局变量, 如果它们的名字没有明确含义以至不能区分时,将导致名字空间污染, 四川大学硕士学位论文 导致程序失败。普通应用程序开发时,其作为一个独立的程序实体,开 发人员只需保证该程序内部不发生名字空间污染既可。与普通普通程序 开发不同,由于内核模块要链接到整个内核中执行,因此,模块开发过 程中除保证模块内部不存在名字空间污染外,更需要保证不会与整个内 核存在命名冲突。 另外,由于内核模块直接运行于内核态,与应用程序相比,在实现时需 更多地考虑进程调度、系统资源分配、临界资源及变量的互斥访问等问 题 4 3本地数据监控的设计 4 3 1 设计要求 本地数据监控功能主要由本地监控模块l d m 实现,本地数据监控模块须达 到如下目标: 夺与文件系统无关:对本地设备的数据监控必须与该设备上实现的文件系 统类型无关。 对上层应用透明;对本地设备的数据监控必须与本地设备上相关的上层 应用透明,不妨碍用户的正常使用。 夺对服务器效率影响小:在实施数据监控时,必须尽量减少对服务器的效 率影响,尤其不能过多影响监控目标设备的i 0 处理效率。 可同时实现多个设备的监控,各设备之间的监控互不影响,对一个设备 监控停止或失败不影响对其它设备的监控。 根据用户配置,可实时实现数据监控的停止与启动操作,对数据监控的 启动与停止操作均不得影响服务器的正常运行。 夺既可支持对分区的数据监控,也可支持对整个磁盘的监控。 对监控到的写操作进行处理后,必须严格按照写操作的先后顺序传递给 本地镜像模块。 为达到上述设计目标,必须通过分析l i n u x 操作系统的存储处理流程,在 l i n u x 系统中找到适合实施数据监控的监控点。下面介绍本文对l i n u x 操作系统 - 3 6 四川大学硕士学位论文 存储处理流程( 主要为写操作) 的分析与数据监控点的确定。 4 3 2l i n u x 存储流程分析 4 3 2 1流程概述 l i n u x 支持的文件系统很多,包括e x t 2 、e x t 3 、h p f s ( 为o s 2 操作系统所采 用) 、n f f s 、u m s d o s 、i s o f s ( 用于c d r o m ) 、n c p f s ( n o v e l ln e t w a r e 文件系统) 等等。 为了很好的实现对多种文件系统的支持,l i n u x 内核中提出了一个高度抽象 的虚拟文件系统( v f s ) 的概念。虽然l i n u x 内核是用c 语言写的,但是其中借 鉴了很多“面向对象”的思想,v f s 层类似于面向对象理论中的“抽象基类” 的概念,而下面的一个个具体文件系统就相当于是这个抽象基类的“派生类”。 所有对文件的操作如o p e n ,w r i t e ,r e a d 等在v f s 中只是实现了一个类似于“纯 虚函数”的接口,针对每种具体的文件系统,就会使用其派生类中被“改写” 的“虚函数”。这种设计方法也类似于设计模式中的s t r a t e g y 模式。这样一来就 可以面向用户界面( 系统调用) 提供一个统一的编程接口。例如用户可以在不 同的文件系统上创建文件,但所使用的函数或命令都是相同的。 在用户进程没有指明( 在文件o p e n 时指定参数os y n c 或者在分区m o u n t 时指定参数“s y n c ”) 需要同步写的情况下,l i n u x 的写文件操作都是异步的。从 用户进程开始触发写操作( 调用w r i t e 等函数) 到数据最终写到磁盘上的这一过 程可以归纳为“三个阶段,两次异步” 用户进程对文件的写操作只到达系统空间的文件系统层,它将文件内容写 入缓存记录块,并对记录块做一个“脏”标记,再将其挂入内核的记录块“脏” 队列,然后就从系统空间返回了,这一过程可以看作文件写入的第l 阶段此 时的文件写操作只是在逻辑意义上完成了,而在物理上文件内容并没有真正写 到磁盘上。也就是说如果此时系统突然断电,那么之前写入的内容并不会真正 得到记录 l i n u x 内核中有一个内核线程b d f l u s h ,多数情况下它处于睡眠状态,在c p u 空闲或者内存紧缺时它会被唤醒,然后检查记录块“脏”队列上是否有数据需 要写入磁盘,如果有就将其以“程序控制f o ”或“直接访问内存( d m a ) ”方 四川大学硕士学位论文 式提交给磁盘控制器,至此完成文件存储的第2 阶段操作。此时磁盘已经启动, 但是写操作何时完成仍是不能确定的,所以此时仍只是在逻辑意义上完成写入。 第3 阶段:磁盘在对某个记录块的写入完成后会向内核发出一个中断请求, 这时内核中相应的中断响应函数将被调用,然后就可得知是哪一个记录块的写 操作已经完成。此时文件内容才是物理意义上的写入了磁盘。 此外,用户进程可在文件o p e n 时指定参数os y n c 将文件的写入方式设置 为“同步写”。在这种情况下,完成第一阶段后用户进程会进一步将记录块提交 给磁盘,取代b d f l u s h 的工作。此后该用户进程就进入睡眠状态,直到磁盘的写 操作完成后它才会被唤醒。此时数据已经写到磁盘上,然后该用户进程才会返 回用户空间。 图4 2 描述了l i n u x 存储处理过程中的主要函数及其调用次序: 眵s _ r c a d o s y s w r i t c ( ) f _ p o s ) : , 函数中的变量w r i t e 是一个函数指针,对于c x t 2 文件系统它将指向 g e n e t i cf i l ew r i t e 函数。这种方法类似于一次“动态绑定”,根据不同的文件系 统实现不同的操作 p m m f i l e m a p e t g e n e r l cf i l e _ w r i t e ( s t r u c t f i l e * f i l e , c o n s tc h a r * b u f , s i z e _ tc o u n t , l o f f j * p p o s ) f 面,r m a p p i n g - a _ _ o p s 一 p r e p a r e _ w r i t e o q l e , p a g e , o f f s e t , o f f s e t + b y t e s ) ; _ _ c o p y _ f i o m _ u s e r ( t c a d d r + o f f s e t , b u y , b y t e s ) ; m a p p i n g - a _ o p s - c o m m i t _ , w r i t e ( f i l e , p a g e , o f f s e t , o f f s e t + b y t e s ) ; w h i l e ( c o u n o ; - , 函数g e n e r i cf i l ew r i t e 中对文件的写入是在一个“d o w h i l e ”循环中进行的, 每次完成后将变量c o u n t 递减,直到为0 。函数中的p r e p a r e , w r i t e 和c o m m i tw r i t e 又是两个函数指针,对于e x t 2 文件系它们分别指向e x t 2 _ p r e p a r ew r i t e 和 g e n e r i c _ c o m m i t _ w r i t e 。每次循环分为3 部分工作:准备缓存、写入内容、将缓 存标记为。脏”。 四川大学硕士学位论文 e x t 2 _ p r e p a r e _ w r i t e 的作用就是根据每次写入的要求,建立若干缓冲页面, 进而将这些页面映射为若干记录块,为文件的写入准备好缓冲区。 _ c o p y _ f r o mu s e r 将用户空间要求写入的内容拷贝到系统空间的内存缓冲 区中。 g e n e r i cc o m m i tw r i t e 将写好的缓冲记录块提交,实际上是将其标记为“脏”, 并挂入系统的记录块“脏”队列,等待b d f l u s h 将其同步到磁盘。 当循环结束后还要进一步判断文件是否要求同步写,如果要求就要将其提 交给磁盘并且等待其完成,这是由g e n e r i c _ _ o s y n c _ i n o d e 函数完成的。 g e n e r i c _ f i l e w r i t e ( s t r u c t f i l e * f i l e , c o n s tc h a r u f , s 记ejc o u n r ,l o 蠹j * p p o s ) , i f ( ( i l e - f _ f l a g s o _ s r t v c ) i ss y n c o n o d e ) ) 羚颧是否要求同步i g e n e r i c o s y n c _ i n o d e ( i n o d e , o s y n cm e t a d a t a i o s y n c _ d a t a ) ; , 如果用户进程不特别指明的话,默认情况下的写操作都不是同步的,即只 要将文件内容写入了缓存,就认为写操作已经完成至此,文件存储的第l 阶 段已经完成。 4 3 2 3记录块提交 对记录块的提交通常是从l l _ r w b l o c k 开始的,这个函数可以理解为内核中 设备驱动层的入口。在该函数中首先按照上节介绍的一些规则对记录块进行检 查,然后调用s u b m i tb h 函数进行提交。 产d r i v e r s b l o c k l l _ r w _ b l k , c f v o i dl lr wb l o c k ( i n tr w , i n tn g , s t r u c tb u f f e r _ h e a d 沁1 1 ) , f o r 0 = o ;i b _ s t a t e ) ) c o n t i n u e ;净如果记录块z 裁就为l o 魂瓤将其勘l 过? b h - b e n d i o = e n db u f f e r j o _ s y n c ;* f o 完残后豹处理函数 4 0 四川大学硕士学位论文 s w i t c h r 似, c a s ew 砒t e : i f ( r a t o m i e s e t _ b u f f e c _ c l e a n ( b h ) ) p h m m p h tn o t h i n g f ow r i t eo l g o t oe n di o ;之淞c l e a n t 不甬再提交i _ _ m a r k _ b u f f e r _ _ c l e a n ( b h ) ; b r e d 虹 c a s e 删d a : c a s e 置疆d : i f ( b u f f e r _ u p t o d a t e ( b h ) ) p h m m p h ! a l r e a d yh a v en 7 g o t oe n di o ;e 经和设备甬步- 就不甬再读7 i b r e a k ; d e f a u l t : b u g o : e n d m : b h - b e n d i o ( b h , t e s t _ b i t ( b hu p t o d a t e , & b h 一 b _ s t a t e ) ) ; c o n t i n u e ;净跳过该记录块f , s u b m i tb h “? b h ) :净对符合要求的记录块进行提交 , , 函数中首先进行b h标志进行判断,如果已经就表明该记录块_ l o c k l o c k 正在第3 阶段中并将其跳过,否则将其b l - _ l o c k 标志位设为1 对于写操作, 如果之前已经为c l e a n 就将其跳过,否则将其设为c l e a n ,并进行提交,即一个 “脏”记录块只会被提交一次对于读或预读( r e a d a ) 操作,如果标志为 u p t o d a t e 就表明已经是最新的,就不用再读了,否则才进行提交 另外,b u f f e r _ h e a d 结构中的成员b e n d _ i o 为个函数指针,当第3 阶段完 成后,在内核中断响应函数中会调用这个函数对记录块做一些善后处理,在此 处将其设置为e n db u f f e ri os y n e ,稍后会对其加以介绍 在s u b m ib h 函数以后的操作中,主要是将每一个记录块包装成一个“操作 请求”,然后根据“写请求”的目标设备,挂入其对应的“i o 请求队列”中 这些都是在函数m a k er e q u e s t 中完成的,调用关系为:s u b m i t _ b h - g e n e r i c _ m a k e r e q u e s t _ m a k e _ r e q u e s t 。 四川大学硕士学位论文 pd r i v e r slb l o c k il l r w _ b l l 【c 1 s t a t i ci n tm a k er e q u e s t ( r e q u e s t q u e u e _ t + 够i n tr w , s t r u c tb u f f e r h e a d + b h ) , s t r u c tr e q u e s t r e q ; r e q - e l e v a t o r _ s e q u e n c e2l a t e n c y ; r e q c m d r w ;,操作类型( 读或写1 f r e q - e r r o r s = 仇 r e q h a r d = = f 赢区号f _ s e c t o rr e q s e c t o r s e c t o r ; r e q h a r d 盯s e c t o r s = r e q ms e c t o r s = c o z i n t ;* 赢区个数 r e q 一 c u r r e n t n r s e c t o r s2c o u n t ; r e q 一 n rs e g m e n t s = l :* a l w a y si f o ran e wr e q u e s l , r e q n r _ h w _ s e g m e n t s = l :* a l w a y s l f o r a n e wr e q u e s l r e q b u f f e r = b h 一 b _ d a t a ;p 数据起始地垃, r e q 一 w a i t i n g = n u l l ; r e q 一 b h = b h ; r e q 一 b h t a i l = b h ; r e q 朋如v = b h - br d e v ;。瑟番号 r e q 一 s t a r t _ _ t i m e = j i f f i e s ;* 请求开始嗣间t a d d r e q u e s t ( q , r e q , i n s e r th e r e ) j , 上述函数中,r e q 是一个指向r e q u e s t 结构的指针,代表一个操作请求对它 的设置包括操作类型( 读或写) 、根据记录块号计算出的扇区号( s e c t o r ) 、扇区 个数( c o u n t ) 、数据起始地址( b h - b _ d a t a ) ,设备号( b h - b , r d e v ) 等。 在完成上述设置后,通过调用a d dr e q u e s t 函数将此请求挂入一个块设备的 “i 0 请求队列”中,挂入时使用了电梯算法以防止磁头在柱面之间“疲于奔命” 至此记录块的提交已经完成。 4 3 2 4磁盘操作完成 内核中针对每个硬盘有一个中断服务程序i d e _ i n t r 。磁盘在完成任务后就会 向内核发出中断,以触发这个函数对操作请求进行一些善后处理,在这一处理 过程中会调用到e n d _ t h a t _ r e q u e s t _ f i r s t 函数对记录块进行相应处理。 四川大学硕士学位论文 产d r i v e r s b l o c k l lr w _ b l l 【c i n t 眈t t h a t _ r e q u e s tf i r s t ( s 批u c tr e q u e s t 饥gi mu p t o d a t e ,c h a r * n a m e ) , s t r t t c tb u f f e r _ h e a d + b h ; 矿他 = r e q 一 6 聊,- n u l l ) , r e q - b h = b h - b r e q n e x t ;净将记录块扶任务队确中脱链i b h 一 b j e q m x t = n u l l ; b h b _ e n d _ i o ( b h , u p t o d a t e ) ;产调角善后处理函数i | 该函数中通过对指针的设置将记录块从“任务队列”中脱离出来,然后通 过函数指针b e n d i o 调用记录块的善后处理函数,在上节介绍的1 1 一r w b l o c k 函 数中该指针被设置为e n db u f f e r _ i o _ s y n c 。 p 1 s b u f f e r c v o i d e n t b u f f e r i o _ s y n c ( s t r u c tb u f f e rh e a d 场危m tu p t o d a t e ) , m a r k _ b u f f e ru p t o d a t e ( b h , u p t o d a t e ) : 标记为u p t o d a t e , u n l o c k _ b u f f e r ( b h ) ; 标记为u n l o c k f p u t _ b h ( b h ) :p 递减使甬i - 我| , 此处的参数u p t o d a t e 为l ,这里就是将记录块标记为u p t o d a t e 表示其内容已 经和磁盘上同步,实际上这一步操作只是对于读操作有效,因为在读之前 b h _ u p t o d a t e 标志位为o 。而对于写操作,在第l 阶段完成时就已经做了此标记, 只不过此处再标记一次也无妨。 然后就是将记录块解锁,表示该记录块已经完成了第3 阶段的操作。最后 调用p u t _ b h 递减该记录块的使用计数,当系统内存紧缺时,内核就会将使用计 数为0 并且b h _ d h t y 标记为0 的记录块回收以供它用。 四川大学硕士学位论文 4 3 3 数据监控方案 基于对l i n u x 读写处理流程的分析,作为存储处理流程的第一阶段,写入缓 存的处理过程与上层文件系统相关,因此,此阶段不适合作为本地数据监控的 操作入口。而作为最后一个阶段,磁盘的操作过程又涉及大量存储物理设备的 底层驱动与操作,也不适合作为数据监控的入口点。作为存储处理流程的第二 阶段,记录块的提交过程中,不仅与上层文件系统无关而且仅属于逻辑层次的 处理过程,因此,本文选择在存储过程中的第二阶段,即记录块提交的处理阶 段作为实施数据监控的监控点。 通过对l i n u x 的存储处理流程进行分析知道,在处理过程的第二阶段,每笔 写操作最终都以记录块的形式提交到写操作目标设备所对应的i o 请求队列上。 在l i n u x 系统中,每个块设备驱动程序都至少拥有一个i o 请求队列,在任意给 定时刻,该队列包含了内核想在该驱动程序的设备上完成的所有f o 操作,因此, 在目标设备的请求队列上监控数据,将可以监控到针对目标设备的所有写操作。 而且作为存储处理流程中一个相对独立的操作对象,l i n u x 系统提供一系列功能 强大的处理函数接口,实现对请求队列的操作。因此,本文选择f o 请求队列作 为实施本地数据变化的监控点,并通过新i o 请求处理函数,对请求队列进行特 殊处理,实现对本地目标设备的数据监控。 4 4 远程异步重放的设计 从本地监控到备份数据单元后,由本地镜像模块l m m 和远程镜像模块 r m m 配置完成数据的远程异步重放。此过程包括了数据缓存、数据传输、写操 作重放几个主要处理过程。 下面主要介绍数据缓存、数据传输过程的差错控制及写操作重构的设计。 4 4 1 数据缓存 由于本地镜像网关与远程镜像网关之间通过非专线或i n t e m e t 相连,为缓减 由于本地数据生成与远程数据传输速度的差异而对本地服务器造成的性能及存 储效率影响,本文在镜像系统中设计了数据缓存器。 四川大学硕士学位论文 数据缓存器的设计应达到如下目标: 缓存数据能快速保存入缓存器:缓存器引入的目的在于减小远程网络对 本地服务器的性能及存储效率影响,引入数据缓存器后,对本地服务器 的效率影响主要决定于备份数据向缓存器的传输及数据保存入数据缓 存器的开销,因此,为提高数据缓存器的操作效率,本文将数据缓存器 设计于本地镜像网关上 夺缓存数据的存储安全性:缓存数据保存入缓存器后,要保证缓存器所在 的主机关机后缓存数据也不丢失,所缓存数据必须在主机下次开机后仍 能正常读到,因此,本文将数据缓存器设计于磁盘上 缓存数据保存及读取的顺序性:为保证远程镜像数据的有效性,要求缓 存器中的数据必须严格按其在本地监控得到的顺序进行存放。另外,除 对缓存器进行存储操作外,当远程网络连接正常时,需从缓存器中严格 按存储的顺序读出所缓存的数据并发送到远程镜像模块。当缓存器中缓 存的数据在远程完成备份时,此缓存的数据单元变成无用数据。为此, 本文将缓存器设计为循环队列。 夺另外,为使各镜像任务相对独立,简化缓存器的维护与管理,提高缓存 器的操作效率,本文将缓存器直接设计于磁盘分区上,并针对每一镜像 任务都分配相应的缓存分区作为缓存队列。 4 4 2 远程重放 根据对l i n u x 系统中数据存储机制及本地端数据监控的设计方案,本文将 本地数据变化在远端的重放操作设计于在存储流程的第二阶段( 记录块提交) 实施,在重放过程中,根据数据重放方法,镜像系统的远端严格按时间先后顺 序解析本地传输过来的数据变化情况,在备份主机中得到可确定数据生成操作 的有用信息,并根据这些信息生成一个针对远端目标设备的有效数据生成操作, 将其在备份主机中提交 远程重放的关键之处在于其处理本地备份数据单元时,还原数据变化操作 的顺序必须与这些数据变化操作在本地主机中发生的顺序严格一致。远程重放 功能的具体实现由远程镜像模块完成。 四川大学硕士学位论文 4 4 3 差错控制 差错控制方法为数据的远程镜像提供了实时的差错检测保证,在远程镜像 系统中,差错控制的实施由本地镜像模块与远程镜像模块配合完成,计算数据 摘要的算法采用了m d 5 算法,镜像系统对远程镜像数据的差错控制严格按照本 文3 3 节所述的算法思想实施,保证了远端数据的有效性。 4 5配置管理功能的设计 远程镜像系统通过配置管理模块提供了强大的配置管理功能。远程镜像系 统以内核模块的方式实现,其运行于内核态,因此,对镜像系统实施配置管理 需涉及到l i n u x 所提供的内核模块与用户空阃的交互机制。 l i n u x 为内核模块与用户空间进行数据交换提供了多种方法,常用的实现方 法有:1 通过字符设备;2 通 f f l p r o c 文件;3 通过特定系统调用。通过对以上方 法的分析与比较,本文选用,p r o c 文件系统作为用户与镜像系统交互数据、实现 镜像系统配置管理功能的方法。 p r o c 文件系统是一种特殊的、由程序创建的文件系统,其安装接点一般都 固定为p r o c ,内核利用p r o c 文件系统向外界输出信息,并通过p r o c 文件向用户 提供了修改内核变量的接口。 p r o c 文件系统中的所有文件都是特殊文件,这些文件的内容不存在于实际 的存储设备上,只在读写的时候才根据相应的系统信息动态生成出来。但是, 对应用程序而言,与普通文件一样,对p r o c 文件系统的操作可使用操作普通文 件相同的o p e n 、r e a d 、w r i t e 等系统命令与函数调用。p r o c 文件系统与普通文件 系统的主要区别在于内核中的处理方法,p r o c 下面的每个文件都被关连到若干 内核函数上,这些函数通常是文件的“读处理”及“写处理”函数。“读处理” 函数负责在p r o c 文件被读取时,动态生成文件的内容。“写处理”函数负责在用 户改变p r o c 文件内容时,动态改变内核相关变量的值。类似于普通文件的读写 属性,每个p r o c 文件也拥有自己的可读,可写属性,大部分p r o c 文件只提供用户 查询系统运行状态功能,只具有可读属性,而不允许外界修改其内容,这些p o r e 文件只与”读处理”函数关连。 p r o c 文件系统是目前l i n u x 系统中实现内核信息的查询与配置的主要方法, 4 6 四川大学硕士学位论文 p r o c 目录下包括了与l i n u x 系统各方面运行状态相关的大量p r o c 文件项。除系 统固有的p r o c 项外,动态安装模块还可以在p r o c 目录下动态创建文件,实现自 己的p r o c 项,作为模块与用户进程的交互方法。 鉴于p r o c 文件系统的强大功能,远程镜像系统的配置管理模块采用p r o c 文 件系统实现,通过所实现的p r o c 项提供了对远程镜像系统及各镜像任务组的配 置、管理功能。 4 6小结 提出了远程异步镜像系统的实现目标及其总体实现方案,根据镜像系统中 所需实现的主要功能,将远程异步镜像系统划分为本地监控模块、本地镜像模 块、远程镜像模块及配置管理模块等主要功能模块,并根据对t _ , m u x 内核及其存 储流程的分析,确定了实施本地数据监控、数据重放及配置管理功能等的关键 思路。 四川大学硕士学位论文 5 远程异步镜像系统的实现 5 1系统概述 5 1 1 物理架构 远程镜像系统实施数据远程镜像的物理拓扑如图5 1 所示: 本 地 数 据 中 心 攀藜 蘸 配置 震霎雾 数据 数据 镜顼 服务 服务 丽奚 器1 嚣2 管理 回国囡 主机 谭甲币 凰 i l ii 占交换机 本地篡毫 八 上1 远程网关 【i w c e r n “) 、厂 图5 i 远程镜像系统拓扑结构 远 程 数 据 中 心 图5 1 描述了远程镜像系统对本地数据服务器实施远程镜像的拓扑结构。本 地数据中心由本地数据服务器( 一台或多台) 、本地镜像网关、交换机及本地网 关组成。远程数据中心包括远程镜像网关、远程镜像服务器( 一台或多台) 、交 换机及远程网关。 本地镜像网关与远程镜像网关运行l i n u x 系统,本地数据服务器与远程镜像 服务器可以是多种操作系统,如u n i x 、l i n u x 、w m d o w s 等。本地数据服务器与 本地镜像网关之间建立高速稳定的网络连接,通过本地高速镜像系统实现本地 四川大学硕士学位论文 数据服务器与本地镜像网关之间的本地高速数据镜像。本地数据中心与远程数 据中心之间通过i m p - a c t 连接,本文所实现的远程异步镜像系统架构于本地镜像 网关与远程镜像网关上,实现了数据从本地镜像网关到远程镜像网关的远程异 步镜像。 。镜像数据及奉地到远端的逻辑结构如图5 2 所示: 本地数据服务器 本地镜像网关 远程镜像网关 图5 2 本地数据远程镜像示意图 如图5 2 所求,对本地数据实施远程镜像时,本地数据服务器的本地设备与 本地镜像网关上相应的本地镜像设备通过本地高速镜像系统实现高速的数据实 时镜像,远程异步镜像系统监控得到本地镜像设备上的所有数据变化,并在远 端对应的远程镜像设备上实施重放,实现了本地数据的远程镜像。远程异步镜 像系统中的海量数据缓存器缓减了本地数据生成速度与远程传输网络带宽之间 的矛盾,减少了远程镜像系统对远程传输带宽的要求,使远程镜像系统能适应 多种远程网络状况。 5 1 2 实现概述 基于对l i n u x 2 4 2 0 系列内核的分析,本文以l i n u x 内核模块的方式实现了 远程异步镜像系统。本镜像系统以c 语言实现,分为镜像本地端与镜像远端两 个l i n u x 内核模块,实施远程镜像时,镜像本地端与远端分别加载于本地镜像网 关与远程镜像网关上,实现了数据从本地镜像网关到远程镜像网关的远程异步 镜像。 四川大学硕士学位论文 远程异步镜像系统的数据镜像流程如图5 3 所示: 图5 3 远程数据镜像流程 远程异步镜像系统的镜像本地端加载于本地镜像网关上,镜像系统的本地 主要实现了对本地镜像设备的写操作监控、备份数据缓存及数据的远程发送功 能,镜像系统的远端加载于远程镜像网关上,实现了备份数据的接收、写操作 重放功能。 根据系统设计过程中的功能模块划分,镜像系统的本地端包括了本地数据 监控模块、本地镜像模块、配置管理模块等主要模块,镜像系统远端主要包括 了远程数据镜像模块。下面将详细介绍本镜像系统中各功能模块的具体实现。 5 2本地监控模块 5 2 1 模块介绍 本地监控模块l d m 实现于远程镜像系统的本地端,l d m 主要实现如下功 四川大学硕士学位论文 能:1 完成本地镜像设备i o 请求队列处理函数的替换及还原操作2 截获并 处理本地镜像设备的所有写操作( 本地数据变化) ,提取标识写操作的有用信息, 封装成备份记录。3 将备份记录按顺序传送给到本地镜像模块。 本地监控模块的主要工作流程如图5 4 所示: 图5 4 本地监控模块工作流程图 如图5 4 所示,当用户通过配置管理模块指示l d m 开始对本地镜像设备实 施监控后,l d m 即对本地镜像设备的i o 请求处理函数实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中移铁通有限公司玉溪分公司华宁支撑服务中心招聘(云南)笔试参考题库附答案解析
- 2025江苏苏州高新区(虎丘区)城乡发展局公益性岗位招聘1人考试备考试题及答案解析
- 2025广东惠州龙门县龙田镇招聘村“两委”干部储备人选6人笔试参考题库附答案解析
- 2025浙江丽水松阳县“乡村运营师”人才引进1人笔试参考题库附答案解析
- 2025浙江省旅游投资集团人才招聘17人(第四批)考试备考试题及答案解析
- 2025贵州黔南州猴场镇第三次招聘城镇公益性岗位人员3人实施考试备考试题及答案解析
- 2025年菏泽市定陶区卫健系统公开招聘工作人员招聘计划调剂笔试模拟试题及答案解析
- 网络文学IP与旅游产业融合发展研究报告
- 高架钢结构桥梁安装安全方案
- 2025安徽合肥凯欣教育集团招聘2人考试备考题库及答案解析
- 铭复乐IV期临床方案介绍
- ks-9000气体报警控制器使用说明书
- 《SPC统计过程控制》课件
- GB/T 14153-1993硬质塑料落锤冲击试验方法通则
- (完整版)人教版八年级下册《道德与法治》期末测试卷及答案【新版】
- 并购贷款业务培训
- 北京大学人民医院-医疗知情同意书汇编
- 建设集团有限公司安全生产管理制度汇编
- 牙体牙髓病最全课件
- 交通信号控制系统检验批质量验收记录表
- 疫苗运输温度记录表
评论
0/150
提交评论