文档首页/ 主机迁移服务 SMS/ 常见问题/ 磁盘问题/ 迁移完成后,为什么已迁移数据量小于总数据量?
更新时间:2024-08-31 GMT+08:00

迁移完成后,为什么已迁移数据量小于总数据量?

问题描述

迁移完成后,已迁移数据量小于总数据量。

问题分析

源端总数据量是通过迁移Agent执行df-Th命令搜集得到的,已迁移数据量是通过记录实际已迁移文件的大小累计得到的。

出现已迁移数据量小于总数据量,可能是因为以下几种情况:

  • 情况一:源端有文件被删除,但进程依然存在
    出现这种情况,是因为源端经常使用rm命令或其它软件删除文件,虽然文件被成功删除,但是文件进程依然存在,还占用着磁盘空间。
    1. 在源端服务器,输入df -Th命令,查看源端磁盘使用量和总迁移量是否相同。

    2. 在源端服务器根目录下,输入du -sh *命令,查看实际目录占用量。

      从查询结果可以看出,实际目录占用量小于磁盘使用量,因此出现已迁移数据量小于总数据量。

    3. 在源端服务器,输入如下命令:
      lsof -n / |grep deleted

      如果输出如下图类似结果,则表示有文件被删除,但是进程还存在的情况。

      • 如果迁移任务可以成功迁移,并且目的端也成功启动,未迁移的数据不影响目的端的正常使用,则属于正常迁移,可忽略。
      • (可选)在源端服务器,将lsof -n / |grep deleted命令所罗列的进程结束掉。
      • (可选)选择合适的时间,重启源端服务器,关闭进程。
  • 情况二:有目录不会被迁移

    Linux系统,如下文件夹中的文件不会被迁移:

    /proc/*

    /sys/*

    /lost+found/*

    /var/lib/ntp/proc/*

    总数据量包含以上文件夹内的文件大小,但迁移时不会迁移这些文件。因此会造成已迁移数据量小于总数据量的情况。

    在源端服务器根目录,输入du -sh *命令,查看/proc/*、/sys/*、/lost+found/*、/var/lib/ntp/proc/*等不被迁移目录的占用空间情况。

    如果未迁移的数据大小,与不被迁移目录大小相同,则属于正常迁移,可忽略。

  • 情况三:迁移时,源端有数据发生改变

    迁移时,迁移Agent通过df -Th命令获取每个分区挂载的根目录,遍历根目录进行迁移。

    在迁移时,已迁移的数据不会因为源端数据改变而改变;未迁移的数据如果发生改变,则会迁移改变后的最新数据。

    总数据量记录的数值是第一次扫描源端搜集的信息。在迁移时,源端可能有大量的数据改变(比如源端大量还未迁移的数据被删除),则会造成已迁移数据量小于总数据量的情况。

    您可以在源端与目的端,分别输入df -Th命令比对源端信息和目的端信息。

  • 情况四:源端存在大量空洞文件

    迁移时会忽略空洞文件,如果源端存在大量空洞文件,迁移结束后,已迁移数据量小于总数据量则属于正常迁移,可忽略。

    Linux系统产生空洞文件的途径有很多种,常见如dd命令等。