前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转腾讯云】disk2vhd离线迁移服务器

【玩转腾讯云】disk2vhd离线迁移服务器

原创
作者头像
Windows技术交流
修改2024-04-22 17:05:57
12.1K2
修改2024-04-22 17:05:57
举报
文章被收录于专栏:Windows技术交流

迁移之前先搞定虚拟化驱动

[方式一]

https://cloud.tencent.com/document/product/213/17815

下载后virtio_64_1.0.9.exe下载后的锁定要右键点属性解除下,否则双击没反应

为了日后下载的文件没有锁定,可以执行这个注册表命令规避

代码语言:bash
复制
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Attachments" /v SaveZoneInformation /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Attachments" /v SaveZoneInformation /t REG_DWORD /d 1 /f

如果源端是阿里云机器,还需要执行脚本删除下阿里云驱动

http://windows-1251783334.cos.ap-shanghai.myqcloud.com/clean_aliyun_RedHatVirtIODrivers.ps1

针对阿里云的情况,我已经把删除阿里云驱动、集成腾讯云驱动搞成了一个压缩包,解压后运行根目录里的.ps1脚本即可

http://windows-1251783334.cos.ap-shanghai.myqcloud.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.myqcloud.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.myqcloud.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:\soft\Install_QCloudVirtIO\Win10_Win11_2016_2019_2022\amd\viostor.inf" /ForceUnsigned
Dism /Add-Driver /Image:"C:" /Driver:"D:\soft\Install_QCloudVirtIO\Win10_Win11_2016_2019_2022\amd\\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_amd64\viostor.inf" /ForceUnsigned
Dism /Add-Driver /Image:"c:\mountwinpe1" /Driver:"E:\58007new_fromguoxin_2024.3.21_amd64\netkvm.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_58007\Win10_2016_2019\amd64" /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_58007\VioStor\Win10_2016_2019\amd64\viostor.inf" /ForceUnsigned

Dism /Add-Driver /Image:"C:" /Driver:"C:\新建文件夹\VirtIO_Win_58007\NetKVM\Win10_2016_2019\amd64\netkvm.inf" /ForceUnsigned

遍历安装示例:路径到系统分支的顶层目录即可

Dism /Add-Driver /Image:"C:" /Driver:"C:\新建文件夹\VirtIO_Win_58007\VioStor\Win10_2016_2019" /recurse /ForceUnsigned

Dism /Add-Driver /Image:"C:" /Driver:"C:\新建文件夹\VirtIO_Win_58007\NetKVM\Win10_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

临时办法是关机 → 解挂数据盘 → 开机 → 挂载数据盘

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 迁移之前先搞定虚拟化驱动
  • disk2vhd导出.vhd的注意事项
  • 导入自定义镜像时的注意事项
  • 1、INACCESSIBLE_BOOT_DEVICE这个报错大概率是硬盘驱动的问题
  • 2、特殊提一下导入的2008系统报0x0000007B的问题
  • 3、recovery模式不能用的问题,因为winre.wim没集成虚拟化硬盘驱动
  • 4、如果挂winpe看到系统盘EFI分区则需要改造成BIOS+MBR
  • 6、其他导入镜像的特殊情况,需要虚拟化文件的COS链接定位
  • 7、还有一种特殊情况,部分cvm的启动引导问题是系统盘和数据盘磁盘顺序反转引起的
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档