存储层的数据复制 现在的存储设备发展得已经比较成熟。特别是中高端产品,一般都具有先进的数据管理功能。远程数据复制功能几乎是现有中高端产品的必备功能。要实现数据的复制需要在生产中心和灾备中心都部署1套这样的存储系统,数据复制功能由存储系统实现。如果距离比较近(几十公里之内)之间的链路可由两中心的存储交换机通过光纤直接连接,近距离可以使用光纤连接,距离超过200公里的距离则可使用INTERNET通过TCP/IP方式实现连接,这种方案应用服务器的性能基本没有影响。目前这种容灾方案稳定性高、对服务器性能基本无影响,是容灾方案的主流选择。 4.2.3 处理PnP管理器请求 PnP管理器管理设备的添加和删除和查询设备的特性。存储器设备过滤驱动需要处理设备启动、设备删除和分页内存资源使用请求。 IRP_MN_START_DEVICE 当PnP管理器为设备分配了硬件资源时发送这种类型的IRP,这种请求首先被设备堆栈中的下层设备对象处理后再依次向上层传递。在驱动框架中处理开启设备的流程如图4.6所示: 4. 实现异步请求 在驱动程序中可以创建IRP来实现与其他设备对象的通讯。在内核中,与第二章中所讨论的IRP类型所对应的常用创建方法方法有: IoBuildAsynchronousRequest 创建异步IRP,新创建的IRP将和当前IRP异步的方式完成。 IoBuildSynchronousFsdRequest 创建同步IRP,其它的IRP将在新创建的IRP执行完成后继续执行。 IoBuildDeviceIoControlRequest 创建一个同步IRP_MJ_DEVICE_CONTROL或IRP_MJ_INTERNAL_DEVICE_CONTROL请求。 根据数据镜像技术的特点,再传入写入数据的时候,应当将其立即复制,并将其镜像写入目标位置。在这里本文选择的方式是异步卷镜像方式,可以参见2.3节。由于本文为进一步实现远程逻辑卷镜像做铺垫研究,所以,同时在考虑到会进一步实现远程情况下的延迟存在,选择了异步写方式。虽然同步卷镜像方式在本地可以高效地实现,但是在存在远程传输延迟以及更复杂的环境的情况下,同步方式的写时镜像实现将十分困难。以下是实现异步写操作的核心代码。 |