2. 虚拟机迁移准备
现在就可以在源服务器和目的服务器上面启动虚拟机了。
1). 可用镜像准备
通过qemu启动虚拟机,首先需要有一个可用的虚拟机镜像,这个镜像可用直接在网上下载,或者通过iso进行安装(使用virt-manager可以很方便的实现安装)。
2). 在源服务器虚拟机启动
./qemu-system-aarch64 -enable-kvm -name centos -m 4096 -machine virt-2.10,accel=kvm,usb=off,dump-guest-core=off,gic-version=3,pagesize=65536 -cpu host -drive file=/usr/share/AAVMF/AAVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on -kernel /root/haolin/images/vmlinuz-4.5.0-19.el7.aarch64 -initrd /root/haolin/images/initramfs-4.5.0-19.el7.aarch64.img -append 'root=UUID=418538f4-f8a3-4c8f-8c9f-b69f86ade77c ro crashkernel=auto' -hda /root/images/centos_test1.img
这里是我使用的一条启动虚拟机的命令行,由于是在aarch64架构的服务器上启动虚拟机,所以有一些配置项和x86不同,这里大概说明一下配置项的意思
-enable-kvm //使用kvm实现虚拟化
-m 4096 //4G的内存
-machine virt-2.10,accel=kvm,usb=off,dump-guest-core=off,gic-version=3 //禁止了虚拟机的core dump, 关闭了usb功能并且使用了gic v3进行中断请求
-cpu host //cpu模式是host,也就是说虚拟机的cpu型号和服务器一致
-drive file=/usr/share/AAVMF/AAVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on //这个部分是为了支持uefi boot
-kernel /root/haolin/images/vmlinuz-4.5.0-19.el7.aarch64 //指定kernel文件
-initrd /root/haolin/images/initramfs-4.5.0-19.el7.aarch64.img //指定initrd文件
-append 'root=UUID=418538f4-f8a3-4c8f-8c9f-b69f86ade77c ro crashkernel=auto' //磁盘标识
-hda /root/images/centos_test1.img //指定镜像文件
当虚拟机启动后会出现
VNC server running on ::1:5900
这时候就可以用用vncviewer 来访问虚拟机了,如下图。
vncviewer :5900
这时候启动的是qemu-monitor 界面,按ctrl+alt+2可以切换至虚拟机cml界面,(ctrl+alt+1切换回qemu-monitor界面), qemu monitor里面的命令行十分丰富,可以监控虚拟机的各个方面信息,方便调试和debug,后面会对这个进入更深入的介绍。
这时在这台虚拟机的qemu monitor里查看虚拟机状态可以看到
(qemu) info status
VM status: running
(qemu)
3). 在目标服务器启动虚拟机
./qemu-system-aarch64 -enable-kvm -name centos -m 4096 -machine virt-2.10,accel=kvm,usb=off,dump-guest-core=off,gic-version=3,pagesize=65536 -cpu host -drive file=/usr/share/AAVMF/AAVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on -kernel /root/haolin/images/vmlinuz-4.5.0-19.el7.aarch64 -initrd /root/haolin/images/initramfs-4.5.0-19.el7.aarch64.img -append 'root=UUID=418538f4-f8a3-4c8f-8c9f-b69f86ade77c ro crashkernel=auto' -hda /root/images/centos_test1.img --incoming tcp:0:4444
迁移之前,在要迁移的目的服务器上也要启动完全相同的虚拟机,但是多了一个配置项
--incoming tcp:0:4444 //使虚拟机出在migration-listen mode,并且接受来自4444端口的迁移请求和数据
这时在这台虚拟机的qemu monitor里查看虚拟机状态可以看到
(qemu) info status
VM status: paused (inmigrate)
(qemu)