menu Chancel's Blog
rss_feed lightbulb_outline

我的笔记

Proxmox - 物理机Windows10如何虚拟化成虚拟机(P2V)

Windows10重装系统是非常简单的事情,但如何拷贝迁移旧系统数据是个难题,如果你有虚拟化的软件,那么把现有的Windows虚拟化成虚拟机是个保留资料的最佳方案

大意步骤

  1. 使用分区助手DiskGenius(免费版即有这个功能)热迁移当前操作系统成VMDK格式的虚拟机磁盘文件
  2. 创建一个硬件上类似于当前物理机器配置的虚拟机
  3. 将VMDK文件上传至你的PVE中,再转换VMDK磁盘文件成PVE能识别使用的QCOW2磁盘文件
  4. 导入磁盘文件到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

  1. 在Hyper-v选出导出你的虚拟机快照(或虚拟机本身或直接拿磁盘文件都可以),这里假设我有一个Windows7虚拟机要转移到Proxmox上,则导出Windows7虚拟机到D盘根目录下

  2. 导出后找到磁盘文件(如果是导出则在导出的文件夹下的Virtual Hard Disks内),文件名往往是 虚拟机名称.VHDX,将这个文件发送到你的Proxmox机器上,放至有权限的任意目录,我的Windows7

scp d:\\Windows7.VHDX root@10.0.0.1:/tmp/
  1. SSH登录到Proxmox宿主机上,并使用如下命令检查你上传的Hyper-V磁盘文件是否有问题
qemu-img check -r all Windows7.vhdx
  1. 打开Proxmox网页并创建一个虚拟机,按照你原本虚拟机的配置进行选择,只需更改磁盘配置为一个1G大小的磁盘文件,创建完成之后记住这个文件的名字,后面我们直接转换上传的VHDX文件来替换这个1G大小的虚拟机磁盘,创建后如下图所示

  2. 在你的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
  1. 转换原本的虚拟机磁盘文件(VHDX)成Proxmox的QCOW2格式,并且保证输出到刚才创建
root@chancel:/tmp# qemu-img convert -O qcow2 Windows7.vhdx /var/lib/vz/images/101/vm-101-disk-0.qcow2
  1. 启动你的虚拟机

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

1 of 1 | A total of 4