5.6.2 基于相同后端镜像的磁盘增量动态迁移
如上图所示,有两台设备一台设备名称为"host1" ,ip地址为IP1, 创建有名为"Guest1"的虚拟机;另一台设备名称为 "host2",ip地址为IP2.现在要将设备"host1"上的虚拟机"Guest1"动态迁移到设备"host2"上(这里首先需要保证设备"host1"和设备"host2"之间路由可达,即可以相互ping通),具体操作如下:
1.1. "host1"设备上的配置
1.使用virsh新建虚拟机,virtdisk指向本地虚拟磁盘/home/kvm-test.qcow2
虚拟机当前运行情况如下:
[root]#virsh
virsh # list
Id 名称 状态
--------------------------
35 Guest1 running
1.2. "host2"设备上的配置
1.与"host1"设备上的虚拟机具有相同路径的kvm-test.qcow2文件
/home/kvm-test.qcow2
开始的时候"host1"设备上的kvm-test.qcow2文件与"host2"设备上的kvm-test.qcow2文件是相同的,在"host1"设备上的 虚拟机运行一段时间之后,两个设备上的qcow2文件不再相同,但是两台设备上的kvm-test.qcow2文件路径必须保持一致,此时的迁移才是基于相同后端镜像的增量动态迁移.(这里需要注意一下kvm-test.qcow2的权限和所在目录权限问题,因为在迁移时virt-manager使用的身份是libvirt-qemu 所以注意赋予kvm-test.qcow2相关的文件和目录读写权限)
1.3. 迁移
1.迁移 在"host1"设备上输入下面命令进行虚拟机迁移,然后输入设备"host2"的root用户密码
[root]#virsh
virsh # migrate kvm-test qemu+ssh://IP2/system tcp://IP2 --unsafe --live --verbose --copy-storage-inc
root@host2's password:
迁移: [ 91 %]
迁移: [100 %]
- virsh migrate –live:动态迁移
- –verbose:显示迁移详情
- kvm-test:需要迁移的虚拟机
- qemu+ssh:通过ssh连接到目的物理机上的system实例,具有最大权限来管理远程节点上的虚拟机资源
- /system: 以root身份进行状态迁移
- tcp:使用tcp连接
- IP2:目的物理机IP地址
- –unsafe:跳过安全检测
- --copy-storage-inc 基于磁盘的增量迁移 (可以替换为参数--copy-storage-all,即为磁盘完全复制迁移)
- 注:可以指定身份访问远程主机,如远程主机用户名为kvm,则可以使用 qemu+ssh://kvm@IP2/system,若不添加kvm,默认使用root访问
等到迁移进度达到100%时,查看本地虚拟机,发现"host1"设备上的"Guest1"虚拟机已经不存在了
[root]#virsh
virsh # list
Id 名称 状态
-------------------
在"host2"设备上查看,结果如下,表明迁移成功.
[root]#virsh
virsh # list
Id 名称 状态
--------------------------
31 Guest1 running
2.固化虚拟机配置文件 在"host2"设备上输入以下命令,固化迁移过来的配置数据,并使用配置数据创建虚拟机;否则迁移后"host2"设备上没有虚拟机"Guest1"的配置文件,关闭"Guest1"后,"Guest1"就没有了,命令如下:
[roo]# virsh dumpxml Guest1 > Guest1.xml
[root]# virsh define Guest1.xml
定义域 Guest1(从Guest1.xml)