笔者去年写的虚拟化部署模拟的那一台物理机器,终于,因为服务器升级整改的原因,淘汰了。现在需要将该机器上运行的web服务、docker服务、蜜罐等等,包括当前时间点的wordpress全部一次性打包到新的服务器。幸运的是,这次我没有使用ubuntu等普通发行版,我使用的是虚拟化平台PVE。故而同理,这个移植方法也适用于,任何拥有KVM的Linux发行版。
首先,需要连接一块硬盘(当然,使用网络传输也是可以的,但是nas太远(50M上下行),pve本着宿主机上服务越少越好的原则也没有开启smb等网络文件传输协议,故我们使用移动硬盘来作为传输介质。
lsblk一下,确定硬盘名称

目标是/dev/sdb1,需要备份的是sda,故而我们mount后直接DD进去(此时是可以直接dd进smb之类的网络传输介质的,如果需要避免pve开机报错,可以吧sda分开成三个硬盘)

dd完后umount一下,接下来将硬盘接入服务器。lsblk一下,并mount一下sda1

此时创建虚拟机,所有设置按物理机设置,或者自定义CPU以及内存。创建时不配置硬盘,创建后,对备份文件执行qm importdisk 111 /var/lib/vz/images/111/vm-111-disk-1.img local
其中/var/lib/vz/images/111/vm-111-disk-1.img
是备份文件的详细路径,例如/mnt/outside/backup.img
其中111
是创建的虚拟机序号
其中local
是你需要承载的存储,例如以下名称

接下来,执行完毕就会发现该硬盘出现在了web页面

设置为IDE设备,并且可以通过移动磁盘,原地TP,将img转换为qcow2,以便压缩空间。

因为物理机采用了uefi,又由于dd时是整块硬盘直接dd,如果你分块了,那么你需要按刚刚的做法导入efi分区,否则你就需要直接设定为uefi模式,并且忽视efi磁盘未创建的提醒

此时开机,直接启动

创建串口,起用xterm.js控制台
编辑/etc/default/grub
修改GRUB_CMDLINE_LINUX_DEFAULT或者GRUB_CMDLINE_LINUX
添加上
console=tty0 console=ttyS0,115200
注意要使用空格隔开

依据你的grub版本执行grub2-mkconfig --output=/boot/grub2/grub.cfg
或者grub-mkconfig --output=/boot/grub/grub.cfg

重启,大功告成
