迁移之前先搞定虚拟化驱动
[方式一]
https://cloud.tencent.com/document/product/213/17815
下载后virtio_64_1.0.9.exe下载后的锁定要右键点属性解除下,否则双击没反应
为了日后下载的文件没有锁定,可以执行这个注册表命令规避
代码语言:bash复制reg add "HKCUSOFTWAREMicrosoftWindowsCurrentVersionPoliciesAttachments" /v SaveZoneInformation /t REG_DWORD /d 1 /f
reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesAttachments" /v SaveZoneInformation /t REG_DWORD /d 1 /f
如果源端是阿里云机器,还需要执行脚本删除下阿里云驱动
http://windows-1251783334.cos.ap-shanghai.myzijiebao.com/clean_aliyun_RedHatVirtIODrivers.ps1
针对阿里云的情况,我已经把删除阿里云驱动、集成腾讯云驱动搞成了一个压缩包,解压后运行根目录里的.ps1脚本即可
http://windows-1251783334.cos.ap-shanghai.myzijiebao.com/Install_QCloudVirtIO_new.zip 操作参考录屏
[方式二]打开系统cmd命令行,cd /d ".inf所在目录"
pnputil -i -a netkvm.inf
pnputil -i -a viostor.inf
http://windows-1251783334.cos.ap-shanghai.myzijiebao.com/Install_QCloudVirtIO_new.zip
备注:阿里云近期有变化,58007/58009驱动zip包解压后用pnputil -i -a *.inf方式导入不了阿里云了
用virtio_64_1.0.9.exe里面提取出来的zip包可以,我已经集成脚本融合成Install_QCloudVirtIO_new.zip
[方式三]winpe里用dism命令
单个安装示例:选对盘符,选对路径,原系统的Windows目录是哪个盘符就写哪个盘符
http://windows-1251783334.cos.ap-shanghai.myzijiebao.com/Install_QCloudVirtIO_new.zip
备注:阿里云近期有变化,58007/58009驱动zip包解压后用pnputil -i -a *.inf方式导入不了阿里云了
用virtio_64_1.0.9.exe里面提取出来的zip包可以,我已经集成脚本融合成Install_QCloudVirtIO_new.zip
代码语言:txt复制命令示例:
Dism /Add-Driver /Image:"C:" /Driver:"D:softInstall_QCloudVirtIOWin10_Win11_2016_2019_2022amdviostor.inf" /ForceUnsigned
Dism /Add-Driver /Image:"C:" /Driver:"D:softInstall_QCloudVirtIOWin10_Win11_2016_2019_2022amd\netkvm.inf" /ForceUnsigned
dism /image:c: /get-drivers
dism /image:c: /remove-driver /driver:oemx.inf
Dism /Add-Driver命令注意事项:比如我把.wim挂载到c:mountwinpe1了
带引号,语法是/Image:"C:",无,例如:
Dism /Add-Driver /Image:"c:mountwinpe1" /Driver:"E:58007new_fromguoxin_2024.3.21_amd64viostor.inf" /ForceUnsigned
Dism /Add-Driver /Image:"c:mountwinpe1" /Driver:"E:58007new_fromguoxin_2024.3.21_amd64netkvm.inf" /ForceUnsigned
不带引号,语法是/Image:C:,有,例如:
Dism /Add-Driver /Image:c:mountwinpe1 /Driver:"E:58007new_fromguoxin_2024.3.21_amd64" /recurse /ForceUnsigned
遍历安装示例(建议上面的精准安装方式,不建议遍历安装)
代码语言:bash复制Dism /Add-Driver /Image:"C:" /Driver:"C:VirtIO_Win_58007Win10_2016_2019amd64" /recurse /ForceUnsigned
Dism /Image:"C:" /Get-Drivers
特殊情况很多,并不能100%保证迁移过去驱动就一定是OK的,你可以先看完整篇文档,如果你有winpe,基本上都能靠自己闭环解决,晚点我会搞个制作winpe的视频/文档。不想自己制作winpe,去搞个http://www.winbaicai.com/ 、https://www.laomaotao.net/ 生成winpe.iso也可以用。
在线迁移的话,可以参考https://cloud.tencent.com/developer/article/2136337
在线迁移过程中,主要靠公网传输几十G甚至更大的数据,慢、诸多影响因素,最终可能失败,并且全程源端服务器业务基本停了,还不如直接使用离线导入的方式,我个人比较喜欢使用离线迁移的方式,省事、成功率高、节省时间、排障方便,本文档主要介绍使用disk2vhd离线迁移,大致思路就是:用disk2vhd导出.vhd文件上传到cos再导入自定义镜像。
当然,导出虚拟化文件的方式比较多,比如starwind、disk2vhd等。
disk2vhd是微软出品,可以放心使用,下载地址:https://download.sysinternals.com/files/Disk2vhd.zip
starwind也很好,可参考https://cloud.tencent.com/developer/article/1843176
disk2vhd命令可能被阿里云进行安全拦截或者第三方安全软件拦截,注意规避。
disk2vhd导出.vhd的注意事项
①VSS(Volume Shadow Copy Service)是前提,但VSS服务是Windows系统自带的,一般都是正常的,基本可以忽略
②如果是在winpe里操作,原系统盘此时相当于winpe的一块没有业务的数据盘,此时不要勾选Use Volume Shadow Copy、不要选Use Vhdx
③如果是直接在系统运行的情况下操作,需要勾选Use Volume Shadow Copy,但不要选Use Vhdx
④导出的时候,注意.vhd文件保存的位置,比如导出磁盘0,需要把磁盘0的所有分区都勾选,导出到磁盘0之外的分区上,一定不要选错保存的位置
详情参考https://cloud.tencent.com/document/product/213/17815#.E5.AF.BC.E5.87.BA.E9.95.9C.E5.83.8F
导出后就可以上传到COS了,COS上传完成后,文件会有个对应的URL,然后就可以用这个URL导入自定义镜像了,但对镜像文件本身有一些要求,详见下图
重点注意下:不支持UEFI GPT,仅支持BIOS MBR
导入镜像前,先详细阅读官网文档:https://cloud.tencent.com/document/product/213/4945
导入自定义镜像时的注意事项
上图的基本要求肯定得先满足了,下面说的是这个大前提下的其他注意事项
①导入的时候,选就近区域,比如想在上海地区买cvm,那就选上海
②选64位系统
③选接近的系统版本(这只是个标签而已,无关紧要,选哪个都行,但标签毕竟是为了好区分,所以还是尽量选接近的吧)
不支持NT5内核的系统,支持NT6或以上内核版本的系统(cmd命令行执行ver命令就能看到,例如下图就是NT10.0)
比如2008R2选2008、2012R2选2012、2016/2019/2022/Win10/Win11都选2016
不支持2003*系统,不支持XP*系统
Tencent Cloud only support [OS disk type = "BIOS MBR"] ,not support [OS disk type = "UEFI GPT"],not support Server2003*, if you try to import Server2003*, the result will be failure.
Tencent Cloud allows customer to import images:
NT6.0 (Windows Vista/Server 2008,theoretically speaking,support,but we haven't tested it thoroughly)
NT6.1(Win7/Server 2008R2,we have tested it)
NT6.2(Win8/Server2012,theoretically speaking,support,but we haven't tested it thoroughly)
NT6.3(Win8.1/Server2012R2,we have tested it)
NT10.0(Server2016/Server2019/Server2022/Win10/Win11/Windows Server vNext ,we have tested it)
④选强制导入
cloudbase-init不是必须的,主要管重置密码、设置hostname等,如果有需要,可以先导入后再安装,建议提交安装TAT,TAT设置密码很方便,不需要重启机器,可参考https://cloud.tencent.com/developer/article/2145058
2018年6月后创建的vpc,在其中购买cvm时,只要你的镜像没有禁用dhcp、不是静态IP配置,会自动dhcp分配ip的。
除过从现有系统导出.vhd,如果是纯净版系统需求,也可以自己通过vmware制作,可参考https://cloud.tencent.com/developer/article/1836962
如果用导入镜像搞的Windows机器进不去系统,出现INACCESSIBLE_BOOT_DEVICE或no bootable device、booting from harddisk,一般是启动引导有问题,分这几种情况:
1、INACCESSIBLE_BOOT_DEVICE这个报错大概率是硬盘驱动的问题
需要在winpe里用dism命令搞定驱动
用dism命令集成下虚拟化驱动
以Win10_Win11_2016_2019_2022为例(NT10.0的驱动一样)
单个驱动安装示例:选对盘符,选对路径,原系统的Windows目录是哪个盘符就写哪个盘符
Dism /Add-Driver /Image:"C:" /Driver:"C:新建文件夹VirtIO_Win_58007VioStorWin10_2016_2019amd64viostor.inf" /ForceUnsigned
Dism /Add-Driver /Image:"C:" /Driver:"C:新建文件夹VirtIO_Win_58007NetKVMWin10_2016_2019amd64netkvm.inf" /ForceUnsigned
遍历安装示例:路径到系统分支的顶层目录即可
Dism /Add-Driver /Image:"C:" /Driver:"C:新建文件夹VirtIO_Win_58007VioStorWin10_2016_2019" /recurse /ForceUnsigned
Dism /Add-Driver /Image:"C:" /Driver:"C:新建文件夹VirtIO_Win_58007NetKVMWin10_2016_2019" /recurse /ForceUnsigned
2、特殊提一下导入的2008系统报0x0000007B的问题
参考https://cloud.tencent.com/developer/article/2141822
3、recovery模式不能用的问题,因为winre.wim没集成虚拟化硬盘驱动
参考https://cloud.tencent.com/developer/article/1998997
4、如果挂winpe看到系统盘EFI分区则需要改造成BIOS MBR
参考https://cloud.tencent.com/developer/article/2075580改造成BIOS MBR的,需要注意的是:UEFI GPT的即便在winpe里搞成BIOS MBR了,如果没在winpe里顺带用dism处理虚拟化驱动,重启是会遇到INACCESSIBLE_BOOT_DEVICE的问题。
正常来说,在最前边有个几百兆的启动引导分区,被客户删掉了或者把激活点到后面的分区了,这种就是两步走,先右键确认第一个分区是激活分区,然后用nt boot auto fix选第一个分区的盘符(不一定是C:,以具体的为准)修复即可。总之,这2步都执行下,稳妥。
这是前边几百M删了,需要分两步修复启动引导的情况:
这是前边几百M没删,但是右键不是激活分区导致的进不去:
这是导出.vhd时,忘记勾选前边的启动引导分区了,只勾选了系统所在那个分区,没勾选前边的启动引导分区:
导出后,在磁盘管理器里附加上看一下导出的对不对
6、其他导入镜像的特殊情况,需要虚拟化文件的COS链接定位
比如是.vhd的,下载到同地域cvm,从磁盘管理器里附加上.vhd文件看下其分区和内容到底对不对 把数据盘的.vhd强制导入镜像买机器的,这种你再怎么修复启动引导都进不去系统
比如是.vmdk的,搞到vmware虚拟机看看能不能启动
还有些情况,原本导出的文件系统就是有问题的
7、还有一种特殊情况,部分cvm的启动引导问题是系统盘和数据盘磁盘顺序反转引起的
系统盘本应是磁盘0变成了磁盘1
数据盘本应是磁盘1变成了磁盘0
从而出现系统不能启动的情况报错no bootable device
临时办法是关机 → 解挂数据盘 → 开机 → 挂载数据盘