把物理机的Windows Server 2022迁移到PVE

物理机跑了个Windows Server 2022作为AD,现在准备迁移到Proxmox Virtual Environment(PVE),大概记录下步骤

物理机用了UEFI来启动Windows,PVE就不折腾了,直接用了传统的BIOS。所以迁移过程中需要做一些特殊处理。

迁移过程

1、PVE创建一个新的虚拟机(模板选择Default (i440fx))

2、Windows安装Virtio Win驱动

3、Windows安装VMware Converter或者Disk2vhd,用来创建P2V的镜像。

4、Windows导入注册表mergeide.reg

5、创建物理机镜像。可以用第3步提到的两个工具(用一个就够了,看个人喜好选择,Disk2vhd比较瘦身)。参考截图

Disk2VHD
VMWare Converter
VMWare Converter

6、把创建好的.vhdx或者.vmdk丢到PVE可以访问到的地方。比如NAS、比如PVE本地磁盘。

7、把虚拟盘转换成qcow2格式并导入虚拟机

我们假设PVE创建好的虚拟机的ID是100,那么

cd /path/to/vm/image/100 #自己根据PVE实际情况修改路径
qm importdisk 100 /mnt/pve/nas/images/HOST.vmdk VM --format qcow2 # .vmdk的地址和VM根据实际情况填写。VM是PVE的存储目录名字,改成自己的,比如local-lvm

然后就可以看到开始转换了

Formatting '/path/to/vm/images/100/vm-101-disk-0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off preallocation=metadata compression_type=zlib size=120198266880 lazy_refcounts=off refcount_bits=16
transferred 0.0 B of 111.9 GiB (0.00%)
transferred 1.1 GiB of 111.9 GiB (1.00%)
transferred 2.2 GiB of 111.9 GiB (2.00%)
transferred 3.4 GiB of 111.9 GiB (3.00%)
transferred 4.5 GiB of 111.9 GiB (4.00%)
transferred 5.6 GiB of 111.9 GiB (5.00%)

转换完以后,在PVE的虚拟机配置页面,hardware

8、用老毛桃或者其他的PE工具启动,打开磁盘编辑,把除了C盘的其他分区都删除掉,然后把删除后的多余空间都合并到C盘。接着把分区设置为活动分区,分区表从GPT转换成MBR。保存后,打开Windows启动修复,修复一下,看一下C盘下面是否有了boot文件夹和bootmgr文件

9、重新启动,应该可以正常进入Windows了。后面可以把磁盘格式转换为SCSI,效率会更高。

磁盘转换为SCSI

进入PVE控制台,进入虚拟机hardware编辑,选上现有的磁盘(ide0),然后点击detach。接着点击edit,下拉选择SCSI,cache选择write back,discard选上,add

options,boot order,scsi0前面选上enable,然后拉到第一位,OK

之后用Windows安装光盘启动,点击安装,一路下一步,安装选项选择自定义(放心,不会安装上系统的,也不会丢数据。因为你的硬盘驱动没加载,看不到硬盘)

到选择磁盘的时候,看不到磁盘了。点击加载驱动,挂载virtio win的驱动盘,然后选择vioscsi,对应操作系统版本,amd64

下一步加载scsi驱动

驱动加载完成后,就可以看到硬盘了。

但这只是临时加载了驱动,系统还是没有安装上。所以我们要用dism来把驱动装到系统里面。

我们点右上角的叉叉,退出安装程序(如果点下一步就真死火了,会把系统装进去)

点左下角『修复计算机』-『疑难解答』-『命令提示符』,进入cmd

然后输入下面的命令

dism /image:C:\ /add-driver /driver:E:\vioscsi\w10\amd64

重启,顺利进入系统。