kvm的vm如何迁移?

为了方便区分宿主主机与虚拟,我们修改主机的hostname。
[ ~]# hostnamectl set-hostname kvm #修改宿主主机的主机名为kvm
[ ~]#hostnamectl set-hostname kvmhost1 #修改宿主主机的主机名为kvmhost1
修改完后对系统进行重启生效。

第一种:克隆
1.克隆虚拟机:在克隆虚拟机时,需要关闭虚拟机或者挂起,才能进行克隆。
[ ~]# virt-clone -o kvmtest -n kvmtestovf -f /var/lib/libvirt/images/kvmtestovf.img
Allocating ‘kvmtestovf.img‘ | 20 GB 00:01:06

Clone ‘kvmtestovf‘ created successfully.
参数解析:
-o :指定源虚拟机
-n :命名新克隆的虚拟机
-f :指定新克隆虚拟机的存放位置
克隆完成后,在生成硬盘映像文件的同时,也会克隆虚拟机的配置文件。
[ ~]# ls /etc/libvirt/qemu
kvmtestovf.xml kvmtest.xml networks
[ ~]#
[ ~]# virsh list –all #查看所有虚拟机
Id Name State

kvmtest shut off
kvmtestovf shut off
2.恢复:
[ ~]# virsh start kvmtestovf #启动克隆机
Domain kvmtestovf started
[ ~]# virsh console kvmtestovf #进入克隆机
注:如果虚拟机与克隆机同时开启,可能会在使用VNC连接时出现某一个无法连接,这是由于端口5900被占用,需要修改其中某一台的VNC连接端口。

第二种:快照
1.创建一个用于保存快照文件的目录
[ ~]# mkdir /var/lib/libvirt/images/save
拍摄快照:拍摄快照需要虚拟机处于开启状态,否则无法拍摄快照
[ ~]# virsh save --bypass-cache kvmtest /var/lib/libvirt/images/save/kvmtest_save –running
[ ~]# du -m /var/lib/libvirt/images/save/kvmtest_save #查看快照文件,以m显示文件大小
测试:
[ ~]# virsh start kvmtest #启动kvmtest虚拟机
[ ~]# virsh console kvmtest #进入虚拟机
[ ~]# mkdir -p /kvm/date/images #在虚拟机中创建文件夹
232 /var/lib/libvirt/images/save/kvmtest_save
在虚拟机中创建文件,测试还原效果。
[ ~]# mkdir -p /kvm/date/images
[ ~]# cd /kvm/date/images/
[ images]# touch test.txt
[ images]# ls
test.txt
[ images]# pwd
/kvm/date/images
[ images]#

2.恢复快照:恢复快照需要虚拟机处于关闭状态,否则无法恢复
[ ~]# virsh restore /var/lib/libvirt/images/save/kvmtest_save --bypass-cache –running
[ ~]# virsh console kvmtest
Connected to domain kvmtest
Escape character is ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-327.el7.x86_64 on an x86_64

kvmhost1 login: root
Password:
[ ~]# ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[ ~]#
KVM之虚拟机几种备份方法(快照/克隆/导出)
未找到KVM目录,已恢复到初始状态。

第三种:导出:
[ ~]# virsh dumpxml kvmtest > /etc/libvirt/qemu/kvmtest_clone.xml
查看导出文件
[ ~]# ls /etc/libvirt/qemu
kvmtest_clone.xml kvmtestovf.xml kvmtest.xml networks
复制磁盘
[ ~]# cp /var/lib/libvirt/images/kvmtest.qcow2 /var/lib/libvirt/images/kvmtest_clone.qcow2
修改配置文件:
[ ~]# vim /etc/libvirt/qemu/kvmtest_clone.xml
注:由于此时的虚拟机还未注册,所以暂时不支持virsh edit 编译,所以只能用vi/vim进行编辑
修改以下内容:
1.自定义修改name标签
<name>kvmtest</name>修改为<name>kvmtest_clone</name>

2.修改虚拟机的UUID
任意修改其中一个值,与原有的区分开。
<uuid>6b124ca5-9adc-40ac-b0b3-a9eeefead161</uuid>修改为<uuid>6b124ca5-9adc-40ac-b0b3-a9eeefead163</uuid>
3.修改disk标签
<disk type=‘file‘ device=‘disk‘>
<driver name=‘qemu‘ type=‘qcow2‘/>
<source file=‘/var/lib/libvirt/images/kvmtest.qcow2‘/>
<target dev=‘vda‘ bus=‘virtio‘/>
<address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x0‘/>
</disk>
修改为
<disk type=‘file‘ device=‘disk‘>
<driver name=‘qemu‘ type=‘qcow2‘/>
<source file=‘/var/lib/libvirt/images/kvmtest_clone.qcow2‘/>
<target dev=‘vda‘ bus=‘virtio‘/>
<address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x0‘/>
</disk>
注:根据自己磁盘存放路径修改file值
4.修改VNC端口
<graphics type=‘vnc‘ port=‘5904‘ autoport=‘no‘ listen=‘0.0.0.0‘>
vnc port 唯一值,不要重复。
注:如果创建的虚拟机时使用console方式连接的在xml文件中是没有graphics项
KVM之虚拟机几种备份方法(快照/克隆/导出)

注册虚拟机
[ ~]# virsh define /etc/libvirt/qemu/kvmtest_clone.xml

[ ~]# virsh start kvmtest_clone

可能由于磁盘空间不够启动时出现以下错误:
[XFS] kernel: XFS (dm-0): xfs_log_force: error -5 returned

相关推荐