云迁移工具常见问题以及解决方法
各个模块的日志文件:
a. conductor(控制服务):
/var/log/cmigrate/conductor.log
/var/log/cmigrate/stdout.log # 所有发到安超的openapi请求(包括参数,返回值)都记录在这里。
/var/log/cmigrate/stderr.log
b. transport(中转服务):
/var/log/cmigrate/transport.log
/var/log/cmigrate/transport_stdout.log
/var/log/cmigrate/transport_stderr.log
/var/log/cmigrate/v2v/v2v_${taskId} # 如果需要执行v2v的话,每个任务都有一个
c. vmware(vmware 无代理日志, 和transport部署在同一台虚机中):
/var/log/cmigrate/vmware.log
/var/log/cmigrate/vmware_stdout.log
/var/log/cmigrate/vmware_stderr.log
/var/log/cmigrate/vixDiskLib-*.log (vmware接口调用相关的一些日志)
d. packer(linux源端代理):
/var/log/cmigrate/packer.log
/var/log/cmigrate/stdout.log
e. packer(windows源端代理):
C:\cmigrate\log\packer.log
C:\cmigrate\log\packer_stdout.log
C:\cmigrate\log\packer_stderr.log
离线迁移,日志在 X: 盘。
windows离线迁移时,系统内有安装PuTTY、WinSCP、AnyDesk等工具,可以通过windows开始菜单进入。
1、无代理迁移计算数据大小失败,“Error caused by file /vmfs/volumes/e24134fd-e433sdw2/samplevm/samplevm.vmdk”
原因:querychangeddiskareas接口失败,一般出现这种故障是因为vadp开启cbt时要求虚机之前没有任何快照
解决方法:
1. Disable CBT using tools in http://220.231.216.27/cmigrate/tools/v2.3.0/cbt
2. Take a snapshot
3. Delete all snapshot
示例:
1. 在云迁移部署的虚机内执行wget http://220.231.216.27/cmigrate/tools/v2.3.0/cbt
2. chmod 777 cbt
3. ./cbt 出现使用方式
4. ./cbt -vcenter=172.16.9.200 -user=administrator@vsphere.local -passwd=Huayun@123 -uuid=4221d200-fc6a-5ac2-9f4f-55ed194811e9 -op=disable
5. 然后到vcenter上为该虚机创建快照,然后删除所有快照。
上述第4步中的uuid即为 任务详情中的vmware虚机uuid。
2、无代理静创建默快照失败
原因:
导致这个问题的原因可能有多种,下列仅仅是已知的可能原因。
1. vmware虚拟机没有虚拟机光驱设备,添加后即可创建静默快照。
3、windows迁移后目标端dhcp不到ip
原因:
源端配置了静态ip,所以没打开dhcp client服务
解决方法:
目标机器的服务里面打开dhcp client服务
4、Windows迁移后目标端磁盘offline
云迁移时的现象:
windows迁移到目标端后,cmd终端一直卡在“3. start to correct volume letter” 阶段。
原因:
源端san策略没有配置成onlineall
解决方法:
在磁盘管理器中手动对目标端进行磁盘上线操作。
5、windows 2003 迁移后目标端分区不自动分配盘符
原因:
注册表子项HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Mountmgr\NoAutoMount没有关闭
解决方法:
手动分配盘符
6、迁移到云平台的windows 2008/7 及更高版本的windows系统,启动时报错,错误代码是 0xc0000428,并且错误内容是windows无法验证\windows\system32\winload.exe的数字签名
原因:
这种场景由于windows操作系统一直在更新,无法做到持续更新迁移工具的windows boot分区数据以及mbr信息
解决方法:
1. 下载 windows packer离线iso镜像(核心是win10 pe),上传到云平台iso镜像
[下载地址](http://10.192.13.183/cmigrate/v2.0.0/packer-offline-windows-2.0.0.iso)
3. 对迁移云平台上的目标云主机挂载该iso镜像,开机进入win10pe
4. 打开cmd命令行,执行 "bcdboot.exe C:\windows /s D:\ " 进行boot的修复。
注: 该命令中C:\是指云主机的windows系统分区,D:\是指云主机的windows启动分区,两个盘符都可能会发生变化
5. 关闭云主机,卸载iso镜像,然后开机,此时系统如果没有其他问题可以正常启动
7、windows离线迁移时,v2v报错 "The disk contains an unclean file system (0, 0)." 或者 "read-only file system."
原因:
1. 强制关机导致文件系统中的数据没有完全刷新到硬盘中。
2. win10等具有fastboot功能的系统,正常关机时并不会把所有数据都刷新的文件系统中。
解决办法:
1. 强制关机的情况下,重新启动到源系统,正常关机。
2. 对于win10等具有fastboot功能的系统,启动到源系统,使用命令行 `powercfg /h off` 关闭fastboot,然后关机。
备注:
迁移完成后,使用命令行 `powercfg /h on` 开启fastboot。
8、windows无代理迁移时,v2v报错 "The disk contains an unclean file system (0, 0)." 或者 "read-only file system."
原因:
有可能是未安装vm-tools导致内存中的数据没有完全刷新到硬盘中。
解决办法:
虚机安装vm-tools。
9、windows 系统分区不是C分区迁移时,目标虚机启动报 "在系统启动时至少有一个服务或驱动程序产生错误"
原因:
虚拟化引入的virt tools first boot service 固定从c:/Program Files目录启动,系统分区不是C分区的时候会找不到相应的目录导致服务启动失败。
解决方法:
1. 在dos命令行,进入系统分区下的Program Files\Guestfs\Firstboot目录,手动执行“rhsrvany.exe -s firstboot”
2. 服务管理中将这个服务禁用
10、exsi/vmware上的 windows2003使用离线iso迁移时,离线镜像无法启动
原因:
由于windows 2003中只有 vmware ide驱动,并且此驱动在win10中不再支持,所以离线无法启动。
解决办法:
windows2003关机后,更改vmware上磁盘驱动为scsi,在从离线镜像启动。
备注:
迁移完成后,关闭离线镜像系统,然后更改vmware上磁盘驱动为ide,再启动windows2003。
11、windows系统迁移到云平台后报 0x0000007B 蓝屏
可能原因:
1、windows上有杀毒软件,请关闭杀毒软件后再次尝试。
2、windows2008及以上版本可能开启了相关的policy,详见解决办法。
3、windows2003 SP1,详见第12条case。
4、源端是位于xen等半虚拟化平台的虚机,云迁移不支持该种情况。
解决方法:
对于windows2008开启了相关policy的处理方式,详见如下链接:
https://docs.microsoft.com/uk-UA/troubleshoot/windows-server/deployment/stop-0x0000007b-error-group-policy-setting
https://docs.microsoft.com/en-us/windows/client-management/manage-device-installation-with-group-policy
12、windows 迁移到云平台后,发生黑屏:
原因:
下列仅为可能的已知的原因。
1. 该虚机中显卡驱动不支持,可以先把平台上该虚机的显卡改为qxl试一下。
13、linux xorg桌面无法启动错误修复方案:
原因:
可能是xorg的显卡配置不适合
解决方法:
重新生成 xorg.conf 配置文件
1. cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
2. Xorg -configure
3. cp -f `pwd`/xorg.conf.new /etc/X11/xorg.conf
如果还有问题,需要找stack组的同事支持。
14、linux 源系统安装virtio驱动到boot image
为suse等不支持virt-v2v的系统使用。
在源主机上执行如下命令:
1. wget http://220.231.216.27/cmigrate/tools/install_virtio_drvs_to_initramfs.sh
2. sh install_virtio_drvs_to_initramfs.sh
15、windows 在线迁移出现OutOfMemory
原因:
下列仅为可能的已知的原因。
1. wmic工具有问题,在cmd执行wmic,在wmic中执行LOGICALDISK和PARTITION命令,查看是否会出现OutOfMemory。已知可能会问题的系统:windows2018 R2,windows2012 R2.
2. 源主机内存太小,或源主机所在宿主机内存耗尽。
解决方法:
1. 使用离线迁移。离线迁移基于win10 pe,wmic比较稳定。
2. 参照部署文档,调高源主机内存。