一种优化的基于LVM的远程复制方法与流程

文档序号:12123408阅读:1226来源:国知局
一种优化的基于LVM的远程复制方法与流程

本发明涉及云计算存储技术领域,特别涉及一种优化的基于LVM的远程复制方法。



背景技术:

LVM(Logical Volume Manager,逻辑卷管理)是linux系统中一种动态管理存储设备的管理机制,它通过将底层物理设备抽象封装,向上层提供与普通块存储相同的连续存储空间。LVM提供了完备的用户态及内核态管理机制,同时LVM技术中提供的动态数据迁移、mirror、snapshot等特性,可以为数据复制系统提供完整的框架。

NBD(Network Block Device,网络块设备)通过提供client和server服务,将远程主机提供的磁盘空间在本地当作块设备使用。NBD是一个内核模块,它通过定义在内核接口,可以和linux系统中其他块设备管理器(如LVM)无缝对接。

远程复制技术就是将源设备端的数据,通过远程连接复制到一个或多个目标设备端技术。该技术常用于容灾系统中,它通过利用地理上的分散性,当一个地区的数据丢失后,可以通过远端的数据快速恢复。

基于上述情况,本发明提出了一种优化的基于LVM的远程复制方法。



技术实现要素:

本发明为了弥补现有技术的缺陷,提供了一种简单高效的优化的基于LVM的远程复制方法。

本发明是通过如下技术方案实现的:

一种优化的基于LVM的远程复制方法,其特征在于:基于LVM远程复制架构包括LVM I/O Analysis模块,LVM I/O Process模块和LVM Remote Replication模块三部分;所述LVM I/O Analysis模块对上层应用的I/O请求解析进行优化,对于读请求直接访问本地数据,对于写请求则发送到本地及远程设备处理模块;所述LVM I/O Process模块对LVM中的Mirror接口进行优化,更改写请求的I/O处理流程,通过先记录日志再更新数据的方法,将数据分别发送到本地及远程设备;所述LVM Remote Replication模块对NBD模块进行更改,使之与LVM的内核结构对接,实现数据的远程发送;同时,由于NBD报文是经由TCP/IP传输的,所述LVM Remote Replication模块还对TCP/IP网络的参数也进行了优化,调整TCP/IP网络中的tcp_sack,tcp_timestamps,tcp_low_latency,tcp_westwood和tcp_bic参数,使之更有效到适用于远程复制场景。

所述LVM I/O Analysis模块负责对上层应用发起的I/O请求过滤,通过改变lvm_make_request_fn()函数对I/O请求进行分类,读请求或与复制无关的请求直接交由LVM自身机制从盘中读取,写请求则调用LVM I/O Process模块的接口进行处理;所述LVM I/O Process模块负责构建I/O的流程,同时与Remote Replication模块对接;所述LVM Remote Replication模块负责远程复制的数据一致性定义及数据的远程传输;将I/O请求在主端经由LVM Remote Replication模块处理后,发送到远程设备端并成功提交日志写到数据盘后,更新本地的日志信息并提交给LVM I/O Process模块;当LVM I/O Process模块中的mirror收到本地及远程的返回消息后,向应用层返回写成功。

所述LVM I/O Process模块对写请求的I/O处理流程,首先将I/O请求记录到日志信息中,然后将BIOS复制两份,一份发送到本地的数据盘,另一份发送到请求队列中,最后调用Remote Replication模块接口,利用多线程处理将数据发送到对端;当接收到本地及远程设备两个请求完成后,向上层应用返回请求处理成功。

所述LVM Remote Replication模块对远程复制的数据一致性定义是指采用实时同步的方式,即上层应用发出的多个写请求必须等待主端和备端的数据同时写入方可继续执行;当请求到来时,先按照请求顺序提交日志,写日志成功后再写数据盘,写数据盘时,按照顺序依次写盘,只有写日志及写数据盘同时成功提交后,才按照请求提交顺序更新日志信息,最后通知上层请求完成;

所述LVM Remote Replication模块对数据的远程传输是基于NBD模块完成的,首先对主端和备端通过nbd_init函数初始化并连接,然后利用do_nbd_request函数从请求队列中读取相应的请求,使用报文结构中的handle域装载发送到备端;调用nbd_do_it循环等待并调用nbd_read_stat读取备端的写盘状态;当读写请求完成后,则从请求队列中删除请求并向上层返回成功。

所述LVM Remote Replication模块对TCP/IP网络的参数的优化包括利用tcp_sack参数启用有选择应答模式,提升乱序报文的回复,只发送丢失的报文;利用tcp_timestamps参数启用TCP时间戳,更精确控制报文重发;关闭tcp_low_latency参数和选用tcp_westwood参数通过吞吐量评估对带宽的整体利用情况进行优化;为了快速长距离的传输启用tcp_bic参数的Binary Increase Congestion,更好利用传输网络的GB级速度。

本发明的有益效果是:该优化的基于LVM的远程复制方法,可以用于云计算领域的远距离容灾系统中,不需要特殊的物理环境,只需对原有的IP网络作相应的改进,以完全软件的方法将数据远程复制到另一个远端设备,提升了数据在远程复制中的稳定性、安全性及传输效率。

附图说明

附图1为本发明基于LVM远程复制架构结构示意图。

附图2为本发明LVM I/O Process模块处理流程示意图。

附图3为本发明LVM Remote Replication模块IO流程优化示意图。

附图4为本发明LVM Remote Replication模块处理流程示意图。

附图5为本发明LVM Remote Replication模块中NBD子模块报文结构示意图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图和实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

该优化的基于LVM的远程复制方法,基于LVM远程复制架构包括LVM I/O Analysis模块,LVM I/O Process模块和LVM Remote Replication模块三部分;所述LVM I/O Analysis模块对上层应用的I/O请求解析进行优化,对于读请求直接访问本地数据,对于写请求则发送到本地及远程设备处理模块;所述LVM I/O Process模块对LVM中的Mirror接口进行优化,更改写请求的I/O处理流程,通过先记录日志再更新数据的方法,将数据分别发送到本地及远程设备;所述LVM Remote Replication模块对NBD模块进行更改,使之与LVM的内核结构对接,实现数据的远程发送;同时,由于NBD报文是经由TCP/IP传输的,所述LVM Remote Replication模块还对TCP/IP网络的参数也进行了优化,调整TCP/IP网络中的tcp_sack,tcp_timestamps,tcp_low_latency,tcp_westwood和tcp_bic参数,使之更有效到适用于远程复制场景。

所述LVM I/O Analysis模块负责对上层应用发起的I/O请求过滤,通过改变lvm_make_request_fn()函数对I/O请求进行分类,lvm_make_request_fn()函数的主要功能是对将Mapped Device通过地址映射到底层的Target Device,并将映射的地址返回给系统,读请求或与复制无关的请求直接交由LVM自身机制从盘中读取,写请求则调用LVM I/O Process模块的接口进行处理;所述LVM I/O Process模块负责构建I/O的流程,同时与Remote Replication模块对接,整个LVM I/O Process模块是基于LVM的mirror特性更改实现的,mirror特性是将I/O请求分别发送到本地及复制卷中;所述LVM Remote Replication模块负责远程复制的数据一致性定义及数据的远程传输;将I/O请求在主端经由LVM Remote Replication模块处理后,发送到远程设备端并成功提交日志写到数据盘后,更新本地的日志信息并提交给LVM I/O Process模块;当LVM I/O Process模块中的mirror收到本地及远程的返回消息后,向应用层返回写成功。

所述LVM I/O Process模块对写请求的I/O处理流程,首先将I/O请求记录到日志信息中,然后将BIOS复制两份,一份发送到本地的数据盘,另一份发送到请求队列中,最后调用Remote Replication模块接口,利用多线程处理将数据发送到对端;当接收到本地及远程设备两个请求完成后,向上层应用返回请求处理成功。

请求队列是对I/O请求的缓冲。引进该机制是因为远程复制的I/O需要发送到远程设备上的传输速度与本地存储速度相差很大,为了提升整体I/O写的性能,考虑将I/O请求存放到队列中,利用多线程处理将数据发送到对端,从而优化系统整体的写请求处理。

所述LVM Remote Replication模块对远程复制的数据一致性定义是指采用实时同步的方式,即上层应用发出的多个写请求必须等待主端和备端的数据同时写入方可继续执行;当请求到来时,先按照请求顺序提交日志,写日志成功后再写数据盘,写数据盘时,按照顺序依次写盘,只有写日志及写数据盘同时成功提交后,才按照请求提交顺序更新日志信息,最后通知上层请求完成;

所述LVM Remote Replication模块对数据的远程传输是基于NBD模块完成的,首先对主端和备端通过nbd_init函数初始化并连接,然后利用do_nbd_request函数从请求队列中读取相应的请求,使用报文结构中的handle域装载发送到备端;调用nbd_do_it循环等待并调用nbd_read_stat读取备端的写盘状态;当读写请求完成后,则从请求队列中删除请求并向上层返回成功。

所述LVM Remote Replication模块对TCP/IP网络的参数的优化包括利用tcp_sack参数启用有选择应答模式,提升乱序报文的回复,只发送丢失的报文;利用tcp_timestamps参数启用TCP时间戳,更精确控制报文重发;关闭tcp_low_latency参数和选用tcp_westwood参数通过吞吐量评估对带宽的整体利用情况进行优化;为了快速长距离的传输启用tcp_bic参数的Binary Increase Congestion,更好利用传输网络的GB级速度。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1