我的笔记
Proxmox - 物理机Windows10如何虚拟化成虚拟机(P2V)
Windows10重装系统是非常简单的事情,但如何拷贝迁移旧系统数据是个难题,如果你有虚拟化的软件,那么把现有的Windows虚拟化成虚拟机是个保留资料的最佳方案
大意步骤
- 使用分区助手DiskGenius(免费版即有这个功能)热迁移当前操作系统成VMDK格式的虚拟机磁盘文件
- 创建一个硬件上类似于当前物理机器配置的虚拟机
- 将VMDK文件上传至你的PVE中,再转换VMDK磁盘文件成PVE能识别使用的QCOW2磁盘文件
- 导入磁盘文件到PVE的存储卷中,新建虚拟机并使用这个磁盘文件
首先,我们下载可以将当前操作系统热迁移成VMware磁盘格式的DiskGenius免费版
随后打开软件,在菜单栏-工具中选中 将当前操作系统迁移至VMware虚拟机中,选好输出格式与输出内容即可,这里假设输出文件名为 Windows10.vmdk
输出文件之后上传至PVE中,此步随意,可以用scp/smb等方式上传,上传成功之后,使用如下方法转换文件格式
qemu-img convert -O qcow2 Windows10.vmdk ../sdd/Windows10.qcow2
创建一个硬件上类似于当前物理机器配置的虚拟机,无需创建虚拟机硬盘(光驱也不需要)
最后,导入已转换完成的文件到存储卷中,102是新创建的虚拟机ID, local-Thin为卷名
qm importdisk 102 Windows10.qcow2 local-Thin
注:部分Windows10是UEFI方式启动,在PVE中要设置好以UEFI方式启动,否则可能识别不到硬盘
Virtualization Technology Windows 2021-01-26 13:04:06
Hyper-v 导入硬盘文件到指定的虚拟机
在宿主机上使用如下指令,format的格式自选
qm importdisk [你的虚拟机ID(例如100)] [你的硬盘文件] local-Thin --format=qcow2
Virtualization Technology 2020-08-10 13:12:34
Hyper-v 虚拟机迁移至 Proxmox
在Hyper-v选出导出你的虚拟机快照(或虚拟机本身或直接拿磁盘文件都可以),这里假设我有一个Windows7虚拟机要转移到Proxmox上,则导出Windows7虚拟机到D盘根目录下
导出后找到磁盘文件(如果是导出则在导出的文件夹下的Virtual Hard Disks内),文件名往往是 虚拟机名称.VHDX,将这个文件发送到你的Proxmox机器上,放至有权限的任意目录,我的Windows7
scp d:\\Windows7.VHDX root@10.0.0.1:/tmp/
- SSH登录到Proxmox宿主机上,并使用如下命令检查你上传的Hyper-V磁盘文件是否有问题
qemu-img check -r all Windows7.vhdx
打开Proxmox网页并创建一个虚拟机,按照你原本虚拟机的配置进行选择,只需更改磁盘配置为一个1G大小的磁盘文件,创建完成之后记住这个文件的名字,后面我们直接转换上传的VHDX文件来替换这个1G大小的虚拟机磁盘,创建后如下图所示
在你的Proxmox找到第4步创建的虚拟机磁盘文件名,命令如下,找到后顺便删了
root@chancel:/tmp# find / -name '*101-disk-0.qcow2'
/var/lib/vz/images/101/vm-101-disk-0.qcow2
root@chancel:/tmp# rm -f /var/lib/vz/images/101/vm-101-disk-0.qcow2
- 转换原本的虚拟机磁盘文件(VHDX)成Proxmox的QCOW2格式,并且保证输出到刚才创建
root@chancel:/tmp# qemu-img convert -O qcow2 Windows7.vhdx /var/lib/vz/images/101/vm-101-disk-0.qcow2
- 启动你的虚拟机
Virtualization Technology 2020-07-25 21:49:20
KVM - network 'default' is not active
Linux下尝试启动Windows实例的时候无法正常启动并显示如下错误信息
Error starting domain: Requested operation is not valid: network 'default' is not active
根据提示可以了解到default网络没有启动,可用以下方法启动
# chancel @ chancel-cp in ~ [15:03:33]
$ sudo virsh net-list --all
[sudo] password for chancel:
Name State Autostart Persistent
----------------------------------------------
default inactive no yes
# chancel @ chancel-cp in ~ [15:03:37]
$ sudo virsh net-start default
Network default started
$ sudo virsh net-autostart default
Network default as autostart
Virtualization Technology 2019-08-06 15:39:59