物理机 P2V 全量迁移到 Proxmox VE

发布于 2026-03-27 22:35 1879 字 10 min read

Madobi Nanami avatar

Madobi Nanami

Nanami 的个人技术博客,记录网络、运维、虚拟化与逆向的实践。

博主家里现在有两条入网宽带, 如果只在一个系统上部署网络出口相关业务, 那么只能同时使用一条宽带的上行, 没法做到充分利用两条宽带的上行. 因此, 博主决定将自己的网络出入口子服务器也换成 Proxmox VE, 这样既能通过防火墙规则和负载均衡同时使用两条宽带的上行作为网络出口, 也可以更加方便的管理服务器. 但是, 如果想在迁移的同时, 不丢失原有服务器上安装的操作系统和环境, 该怎么操作呢?...

前言

博主家里现在有两条入网宽带, 如果只在一个系统上部署网络出口相关业务, 那么只能同时使用一条宽带的上行, 没法做到充分利用两条宽带的上行. 因此, 博主决定将自己的网络出入口子服务器也换成 Proxmox VE, 这样既能通过防火墙规则和负载均衡同时使用两条宽带的上行作为网络出口, 也可以更加方便的管理服务器. 但是, 如果想在迁移的同时, 不丢失原有服务器上安装的操作系统和环境, 该怎么操作呢? 本篇文章将会为你带来全量迁移的最佳方案

需求

  • 移动存储器 >= 服务器系统盘数据区
  • 服务器硬盘 >= 64GB

开整

1. 全量备份硬盘数据

  • 在移动存储器上安装任意 Linux Live CD, 这里推荐使用 SystemRescue, 或者使用 Ventoy 将多个 ISO 整合
  • 进入 Live 环境后, 列出所有磁盘
lsblk
  • 找到你的移动存储器, 将其挂在至 /mnt/usbdisk 目录
mkdir /mnt/usbdisk
mount /dev/<device> /mnt/usbdisk
  • 使用 dd 工具创建完整镜像
dd if=/dev/<device> of=/mnt/usbdisk/backup.img bs=1M status=progress

注意:此过程耗时较长 (约每 100GB 数据耗时 30-60 分钟), 注意防止服务器断电以免数据损坏

  • 使用 qemu-img 工具将镜像转换至 qcow2 格式
qemu-img convert -f raw -O qcow2 -c /mnt/usbdisk/backup.img /mnt/usbdisk/backup.qcow2

注意:此过程耗时依旧较长, 注意防止服务器断电以免数据损坏

  • 待转换完成后, 备份阶段结束

2. 安装 Proxmox VE

这里我们采用手动安装的方式, 以免官方安装器使用非预期的磁盘数据格式

引用: 记一次手动安装 Proxmox VE, 配置多路 iSCSI 与 NAT 转发的经历 » 悠笙の开发日记

  • 配置 Hostname Proxmox VE 要求为当前的主机名配置一个指向非回环地址的 Hosts:

The hostname of your machine must be resolvable to an IP address. This IP address must not be a loopback one like 127.0.0.1 but one that you and other hosts can connect to.

例如, 我的服务器内网地址为 192.168.1.5, 公网地址为 112.32.***.***, 则 /etc/hosts 配置文件应该如下:

127.0.0.1       NanamiWork-SubServer
127.0.1.1       NanamiWork-SubServer.lan        NanamiWork-SubServer
192.168.1.5     NanamiWork-SubServer
112.32.***.***  NanamiWork-SubServer

# The following lines are desirable for IPv6 capable hosts
::1     NanamiWork-SubServer ip6-NanamiWork-SubServer ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

如果您不想让您的服务器可以在公网被直接访问, 也可以不添加公网信息

  • 安装 Proxmox VE 软件源

Debian 13 使用了 Deb822 格式, 因此直接参考 USTC 的 Proxmox 镜像站 即可:

cat > /etc/apt/sources.list.d/pve-no-subscription.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
  • 将 keyring 安装至 /usr/share/keyrings
cd /usr/share/keyrings
wget https://www.iyoroy.cn/usr/uploads/2025/11/4102711242.zip
apt install unzip -y
unzip 4102711242.zip
rm 4102711242.zip
  • 更新软件包
apt update
apt upgrade -y
  • 安装 Proxmox VE 内核
apt install proxmox-default-kernel
reboot

使用 uname -a 查看系统信息, 如果内核版本以 -pve 或类似结尾, 则安装成功

  • 安装 Proxmox VE 相关软件包
apt install proxmox-ve postfix open-iscsi chrony

配置过程中会需要设置 postfix 邮件服务器, 官方解释: 如果您的网络中有邮件服务器, 则应将 postfix 配置为 Satellite system . 然后, 您现有的邮件服务器将成为中继主机, 将 Proxmox VE 发送的电子邮件路由到其最终收件人. 如果您不知道在此处输入什么, 请仅选择 Local only , 并保持系统 hostname 不变.

  • 安装完成后应该可以使用 https://<IP Addr>:8006 访问 WebUI. 如果成功访问, 则安装成功.

用户名: root, 密码: 您的 root 用户密码

  • 删除旧的 Debian 内核与 os-prober
apt remove linux-image-amd64 'linux-image-6.1*'
update-grub
apt remove os-prober

移除 os-prober 不是必须的, 但是官方建议这么做, 因为它可能会误将虚拟机的引导文件认成多系统的引导文件, 导致将不该加的一些东西加到引导列表中.

  • 至此, Proxmox VE 安装完成

3. 创建虚拟桥接网卡

  • 登录 Proxmox VE WebUI, 定位至 Datacenter —> <Hostname> —> System —> Network 选项卡
    Network
    Network
  • 单击 Create, 选择 Linux Bridge
  • 在弹出的对话框中输入你需要的 Name, 然后在 Bridge ports 中输入该虚拟网卡桥接的物理网卡

注意:

  • 如果你想将该物理网卡作为 Debian 物理机系统的接入网卡, 则你需要在该对话框中配置 IPv4/CIDR, Gateway(IPv4), IPv6/CIDR(可选), Gateway(IPv6)(可选)
    Example
    Example
  • 一定不要在物理网卡上配置服务器的固定 IP 地址, 否则可能会导致虚拟机无法联网等一系列问题!!
  • 单击 OK 创建网卡

4. 恢复原始服务器系统

4.1 创建虚拟机

  • 登录 Proxmox VE WebUI, 单击右上角 Create VM, 按照需求配置虚拟机名称, 是否开机启动等, 随后点击 Next
  • 在 OS 选项卡, 选择 Do not use any media, 然后单击 Next
  • 在 System 选项卡, 启用 Qemu Agent, 按照需求选择是否将 BIOS 改为 OVMF (UEFI), 然后单击 Next
  • 在 Disks 选项卡, 单击左侧 scsi0 右边的垃圾桶图标, 删除默认创建的磁盘, 然后单击 Next
  • 在 CPU 选项卡, 将 Type 改为 host, 然后根据需求分配核心数 (Cores). 如果核心数较多, 可以启用 NUMA, 配置完成后单击 Next
  • 在 Memory 选项卡, 根据需求分配内存, 然后单击 Next

注意: 内存分配不应超过物理内存的 80%, 否则会有内存溢出的风险

  • 在 Network 选项卡, 根据需求选择刚刚创建的虚拟网卡, 然后单击 Next

注意: 如果您的原始系统为 Windows, 您可能需要将网卡型号变更为 Intel E1000 或 Intel E1000E

  • 到了最后的 Confirm 选项卡, 确认配置无误后直接创建. 等待底部 Tasks 中的 VM 100 - Create 的状态变为 OK 后, 虚拟机创建完成

4.2 恢复原始物理机磁盘镜像

  • 登录服务器 SSH, 使用该命令列出所有磁盘
lsblk
  • 找到你的移动存储器, 并将其挂载到 /mnt/usbdisk
mkdir /mnt/usbdisk
mount /dev/<device> /mnt/usbdisk
  • 将先前创建的 qcow2 镜像文件复制到服务器
cp /mnt/usbdisk/backup.qcow2 /var/lib/vz/images/100/vm-100-disk-1.qcow2

注意: 此过程持续时间可能较长, 请保证服务器不断电, 以免造成数据损坏

  • 复制完成后, 使用该命令将磁盘导入至对应虚拟机中
qm set 100 --scsi0 /var/lib/vz/images/100/vm-100-disk-1.qcow2
  • 使用该命令设置启动顺序
qm set 100 --boot order=scsi0
  • 执行完成后在 WebUI 中选中对应的虚拟机并启动该虚拟机
  • 如果虚拟机正常启动到了宿主机之前的系统, 则恢复完成!

5. 安装 Qemu-Agent

  • 登录虚拟机 SSH, 安装 qemu-agemt
sudo apt install qemu-guest-agent
  • 启动并配置开机启动
sudo systemctl enable qemu-guest-agent
sudo systemctl start qemu-guest-agent
  • 返回 WebUI 虚拟机的 Summary 页面, 如果看到正确显示了 IP 地址, 则安装成功
    IPs
    IPs

至此, 整个 P2V 迁移就结束了


结语

  • 本人非专业 Linux 运维, 如有错误或疏漏, 请直接指出, 谢谢!
  • 如果觉得该文章有帮助, 请将其分享给身边有需要的人, 感谢!

相关阅读

随机文章

加载中...