一、解释说明
        英方软件属于内核态,捕获到的数据是应用程序与操作系统之间交互的所有I/O写入,对于频繁的小I/O,英方的处理方式是,每一个I/O处理为4KB数据包进行传输。因此,当英方看到的大小与源端实际增量差别较大时,一般与第三方软件写数据的方式有直接关系,如果是大量小I/O的写入设计,会出现传输量与文件增量不一致的情况。






二、排查方法
   在生产端,执行如下检查操作:
1、查看磁盘挂载情况
             df -h

2、查看目前磁盘数据量
               iostat -m

3、查看变化的是哪些文件
               lsof | grep 复制路径  

4、再次查看当前磁盘数据量,结合步骤1、对比步骤2得出变化的文件大小
               iostat -m


 分析方法举例:


5、查看文件准确的变化量
              repset -Q perdbg
              debugctl work task 规则uuid


         如上图所示,增量数据产生后,不传输,直接写缓存。

6、CDP辅助

        还可以针对监控目录,在控制台对应的规则中勾选开启CDP,使用CDP功能进行辅助排查,更加清楚和明了捕获到的每一次I/O操作是什么,大小是多大,从而判断是什么原因导致的产生不正常的缓存。如下图所示,可见所举案例的每次 I/O只有1字节 写入,即使一个很小的文件,也会产生大量的I/O。这样的写入方式,不用英方时,机器的负载就已经非常吃力,系统性能被拉得很低。
         综上所述,应用程序开发得好与不好,英方还能作为一个很好的验证工具。




 三、处理办法

1、可自行修改文件处理软件的文件写入方式;
2、若没有条件或能力修改软件代码,可使用英方的一致性比较工具做定时备份,可达到分钟级容灾备份;
3、待英方后续版本对小I/O捕获的处理方式进行优化。