
# 迁移完成后，为什么已迁移数据量小于总数据量？
#### 问题描述
迁移完成后，已迁移数据量小于总数据量。
#### 问题分析
源端总数据量是通过迁移Agent执行**df-Th**命令搜集得到的，已迁移数据量是通过记录实际已迁移文件的大小累计得到的。
出现已迁移数据量小于总数据量，可能是因为以下几种情况：
- **情况一：源端有文件被删除，但进程依然存在**
  出现这种情况，是因为源端经常使用**rm** 命令或其它软件删除文件，虽然文件被成功删除，但是文件进程依然存在，还占用着磁盘空间。
  1. 在源端服务器，输入**df -Th** 命令，查看源端磁盘使用量和总迁移量是否相同。
     ![](https://support.huaweicloud.com/sms_faq/zh-cn_image_0000001343033428.png "点击放大")
     
  
  2. 在源端服务器根目录下，输入**du -sh \*** 命令，查看实际目录占用量。
     ![](https://support.huaweicloud.com/sms_faq/zh-cn_image_0000001393632905.png "点击放大")
     从查询结果可以看出，实际目录占用量小于磁盘使用量，因此出现已迁移数据量小于总数据量。
     
  
  3. 在源端服务器，输入如下命令：
     ```
     lsof -n / |grep deleted
     ```
     如果输出如下图类似结果，则表示有文件被删除，但是进程还存在的情况。
     ![](https://support.huaweicloud.com/sms_faq/zh-cn_image_0000001393632953.png "点击放大")
     - 如果迁移任务可以成功迁移，并且目的端也成功启动，未迁移的数据不影响目的端的正常使用，则属于正常迁移，可忽略。
     
     - （可选）在源端服务器，将**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** 命令**，**比对源端信息和目的端信息。
  
- **情况四：源端存在大量空洞文件**
  迁移时会忽略空洞文件，如果源端存在大量空洞文件，迁移结束后，已迁移数据量小于总数据量则属于正常迁移，可忽略。
  ![](https://support.huaweicloud.com/sms_faq/public_sys-resources/note_3.0-zh-cn.png)
  Linux系统产生空洞文件的途径有很多种，常见如**dd**命令等。
  
 
