type
status
date
slug
summary
tags
category
icon
password
本篇文章主要介绍如何将Hyper-V的VHDX虚拟磁盘导入到PVE(Proxmox Virtual Environment)下,从而实现将OpenWRT直接从Hyper-V平台迁移到PVE平台,避免重新配置的繁琐过程,最大程序保留原OpenWRT系统的可用性。
迁移的原因是原来我的旁路网关所使用的OpenWRT部署在日常使用PC的Hyper-V里。而因为自己买了新的N4100工控机,4个2.5G网口,这样就可以实现全屋2.5G,提升内网的传输速度,同时将软路由(以及附带的旁路网关、旁路由、DNS服务器等等七七八八)从日常使用的PC中分离出去,减少家里网络因为我电脑问题产生的波动,同时日常使用的PC专注用于工作和使用Moonlihgt + Sunshine串流Steam打游戏。而且换了之后,日常使用的PC也可以休眠或者关机,省点电费(并没有)。另外还有就是软路由数据与系统的分离,可以将PVE的备份数据存放在smb挂载的磁盘上,减少All in Boom之后的工作量和损失。
📝 迁移过程
导出Hyper-V虚拟机
在Hyper-V Manager(Hyper-v管理中心)选择想要导出的虚拟机,我们以OpenWRT为例:
右键
→ 导出
,选择存放位置。导出后的文件夹里包括:
Snapshots
、Virtual Hard Disks
、Virtual Machines
,OpenWRT的虚拟机VHDX磁盘位于Virtual Hard Disks
内,例如我的immortalwrt的VHDX为:immortalwrt-23.05.3-x86-64-generic-squashfs-combined-efi.vhdx
,为了便于之后转换和导入操作,可以修改为短一点的名字,例如openwrt.vhdx
,这样在后续输入命令的时候,能够少打点字,同时也减少因为输入名称错误带来的无法导入问题。上传VHDK虚拟磁盘到PVE
由于VHDX不属于ISO镜像或者CT模板,所以无法通过PVE Gui(网页管理器)进行上传,需要自己通过sftp或者共享文件夹的方式上传,例如winscp,可以通过SSH账号密码登录并进行文件传输,文件存放位置选择自己能找到的位置,例如用户目录下。
在PVE上新建虚拟机
这里按照正常的虚拟机创建流程即可,需要注意有三点:
- 如果是
EFI
镜像,需要在BIOS中选择OVMF (UEFI)
,其他镜像选择默认的SeaBIOS
即可。
- 添加网络设备时,需要修改MAC地址为原来在Hyper-V下OpenWRT所使用的虚拟网卡MAC地址,这样可以避免大多数问题,但是例如Zerotier这种需要完全匹配设备信息的,需要单独进行调整:OpenWRT迁移后Zerotier无法连接的解决方案。
- 不需要添加硬盘和磁盘。
完成后不需要启动虚拟机。
将VHDX磁盘转化为qcow2格式
这里需要通过SSH或者PVE Sehll进入节点机终端,并执行转换命令:
-O qcow2
:导出格式为qcow2openwrt.vhdx
:源磁盘镜像文件名称openwrt.qcow2
:导出的磁盘镜像文件名称转换可能需要一点时间,请耐心等待。
挂载Hyper-V虚拟磁盘镜像
这里需要通过SSH或者PVE Sehll进入节点机终端,并执行导入命令:
101
:刚刚新建的PVE虚拟机的VM ID,也就是那个序号。openwrt.qcow2
:刚刚我们转换完的磁盘镜像。nvme
:存储卷名称,例如local
,或者你所添加的其他存储名称。--format=qcow2
:将磁盘以 qcow2
格式导入
导入完成后,在PVE GUI面板,选择创建的新的OpenWRT虚拟机,选择【硬件】,双击未使用的硬盘,然后点击添加,就实现了磁盘由Hyper-V到PVE的完整迁移。🤗 总结归纳
开启虚拟机进行后续测试,目前我的测试结果是:
软件 | 情况 |
OpenClash | 正常 |
MosDns | 正常 |
AdGuard Home | 正常 |
DDNS-GO | 正常 |
Zerotier | 正常 |
Prometheus Exporters | 正常 |
Qos Mate | 正常 |
Zerotier的修复办法也已经同步进行了更新:《OpenWRT迁移后Zerotier无法连接的解决方案》
📎 参考文章
有关OpenWRT安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~