VirtualBox转换磁盘格式实现虚拟机迁移到物理机

VirtualBox转换磁盘格式实现虚拟机迁移到物理机

  • 背景:
  • 转换硬盘格式
  • 使用iso文件挂载到虚拟机,以iso启动测试
  • 把虚拟硬盘iso写入U盘
  • 台式机启动验证
  • 重新配置sshd,手工迁移增量文件(非必要)
  • 总之,这个转换是成功的,简单总结如下:

背景:

在i5 5200u/4G内存的笔记本win10上运行virtualbox,安装的虚拟机Ubuntu18 linux下再运行一个qemu-system-arm程序,20分钟都出不来登录提示,决定迁移到物理机。
当然,也完全可以在台式机上重新安装。
之前尝试过在另外一个VBox linux虚拟机上,直接挂载文件Ubuntu18和U盘,使用dd命令拷贝的方法,成功迁移到物理机。

转换硬盘格式

.找到虚拟硬盘
C:\Program Files\Oracle\VirtualBox>VBoxManage list hdds

UUID: cf52cde4-684a-41e0-a98f-6a8679b7c947
Parent UUID: base
State: created
Type: normal (base)
Location: D:\xyin\VirtualBoxVHD\Ubuntu18\Ubuntu18.vdi
Storage format: VDI
Capacity: 10240 MBytes
Encryption: disabled

参考:VBoxManage clonemedium 格式

clonemedium [disk|dvd|floppy]
[–format VDI|VMDK|VHD|RAW|]
[–variant Standard,Fixed,Split2G,Stream,ESX]
[–existing]

开始转换,windows下并不能向linux那样直接dd写入硬盘/dev/sdx,看来需要多转换一次。
F:盘格式化为fat32,不支持大文件(VERR_FILE_TOO_BIG)
	C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonemedium disk cf52cde4-684a-41e0-a98f-6a8679b7c947 F: --format RAW
	0%...
	Progress state: VBOX_E_FILE_ERROR
	VBoxManage.exe: error: Failed to clone medium
	VBoxManage.exe: error: Could not create the clone medium 'F:\{a3752791-e8e8-49f1-ba1a-526c175c9883}.iso' (VERR_FILE_TOO_BIG)
	VBoxManage.exe: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component MediumWrap, interface IMedium
	VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCloneMedium(struct HandlerArg *)" at line 1023 of file VBoxManageDisk.cpp
	
C盘创建文件夹,提示无权限(VERR_ACCESS_DENIED)
	C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonemedium disk cf52cde4-684a-41e0-a98f-6a8679b7c947 c:\tmpFile --format RAW
	0%...
	Progress state: VBOX_E_FILE_ERROR
	VBoxManage.exe: error: Failed to clone medium
	VBoxManage.exe: error: Could not create the clone medium 'C:\tmpFile'.
	VBoxManage.exe: error: Raw: cannot create image 'C:\tmpFile' (VERR_ACCESS_DENIED)
	VBoxManage.exe: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component MediumWrap, interface IMedium
	VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCloneMedium(struct HandlerArg *)" at line 1023 of file VBoxManageDisk.cpp
	
把上面的\修改为/也是一样的,工具会自动转换
尝试带目录的时候需要在末尾加斜杠,同时使用管理员运行cmd(可能不是必要的)转换成功
	C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonemedium disk cf52cde4-684a-41e0-a98f-6a8679b7c947 C:/tmpFile/ --format RAW
	0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
	Clone medium created in format 'RAW'. UUID: ca256097-7763-4434-b752-5b169f37522c
	
raw格式生成iso文件,占用磁盘实际大小,但转换很快SATA SSD不到1分钟
	C:\Program Files\Oracle\VirtualBox>dir C:\tmpFile
	2020-08-23  09:53    10,737,418,240 {ca256097-7763-4434-b752-5b169f37522c}.iso
	C:\Program Files\Oracle\VirtualBox>dir D:\xyin\VirtualBoxVHD\Ubuntu18\Ubuntu18.vdi
	2020-08-22  22:17     2,031,091,712 Ubuntu18.vdi

使用iso文件挂载到虚拟机,以iso启动测试

找到任意已有虚拟机,比如coreos,系统-启动顺序只勾选光盘,在存储选择上述转换生成(已自动注册,可以直接选取)的iso文件。

Cannot register the DVD image 'C:\tmpFile\{ca256097-7763-4434-b752-5b169f37522c}.iso' {ae849b43-ed5d-4c41-93b2-7add9fea747b} because a hard disk 'C:\tmpFile\{ca256097-7763-4434-b752-5b169f37522c}.iso' with UUID {ca256097-7763-4434-b752-5b169f37522c} already exists.


这里的iso文件并非归类到虚拟光盘,而是虚拟硬盘,可以在工具下面看到。
存储--控制器--新增虚拟硬盘--选择刚才的iso文件,调整iso对应的端口号,较小的在前面,把启动顺序调整回硬盘。
启动测试,正常登录到Ubuntu系统。

把虚拟硬盘iso写入U盘

rufus-3.9选择设备(u盘盘符)和iso文件写入。硬盘读取速度稳定在50-60MB,大约1分钟左右写入成功。

台式机启动验证

B450主板开机按F11,选择Teclast Cool Flash  USB3.11.00回车,顺利登录进入Ubuntu18,lscpu显示AMD Ryzen 5 3500X 6核处理器,虚拟化为AMD-V,已开启。
sudo lsmod|grep  kvm 已加载kvm_adm模块。
插入网线,配置网络 
	ip ad 查看网卡名为 enp34s0
	sudo vi /etc/netplan/00-installer-config.yaml
		修改网卡名,保持dhcp4:true
	sudo netplan apply 检查ping qq.com正常
但是,但是,sshd服务没有安装,22端口未监听,再去看之前准备的qemu目录都没有
原因是一开始的硬盘拷贝错误了, 之前安装好系统后做了一次 快照,最新的文件应该是快照后的文件
	D:\xyin\VirtualBoxVHD\Ubuntu18\Snapshots\{f4b29d31-7e7e-49d7-b3d7-e8eb1ccd34fd}.vdi

重新配置sshd,手工迁移增量文件(非必要)

sudo vi /etc/apt/source.list 修改之前配置错误的URL的源
sudo apt update
sudo apt install openssh-server
xy@ubuntu18:~$ rsync -av . 192.168.199.128:~  
	//网络互通问题,从虚拟机拷贝到物理机
$ ls |awk -F "_" '{ print "sudo apt install -y " $1 }' > ../b.sh 
	// 把原有的dpkg -i *.deb所有deb修改为apt install
迁移后,3分钟出现登录界面并能正常进入。

总之,这个转换是成功的,简单总结如下:

1、VBoxManage  list hdds确认需要待拷贝的硬盘,如果有快照需要特别注意。
2、克隆硬盘只能生成iso文件 ,但这个文件是虚拟硬盘,不是虚拟光盘
	VBoxManage.exe clonemedium disk cf52cde4-684a-41e0-a98f-6a8679b7c947 C:/tmpFile/ --format RAW
3、使用iso工具刻录到U盘
4、物理机从U盘启动。

你可能感兴趣的:(Linux,虚拟机,linux,ubuntu,运维)