kvm的搭建,请参考以前的文章:https://blog.youkuaiyun.com/Bilise/article/details/104660754
kvm的常用命令:https://blog.youkuaiyun.com/Bilise/article/details/104686639
静态迁移
kvm1主机IP:192.168.100.64
kvm2主机IP:192.168.100.60
一、静态迁移(需将kvm虚拟机关机)
1、查看kvm虚拟机的储存位置
[root@kvm1 newdisk]# virsh domblklist centos7.0
Target Source
------------------------------------------------
vda /home/newdisk/centos7.0.qcow2
hda -
2、迁移目标虚拟机的配置文件
[root@kvm1 newdisk]# virsh dumpxml [目标虚拟机名] > /data/centos7.xml //后为导出目标路径与命名配置文件
3、将需要迁移的虚拟机的配置文件和磁盘文件转移到另一台主机上(目标机子需要有足够的磁盘空间)
在另一台机子上创建一个放kvm虚拟机和配置文件的目录
[root@kvm2 ~]# mkdir /home/newdisk/kvm
在所需迁移的机子上执行
scp [导出的kvm虚拟机配置路径][目标用户]@[目标ip]:[所创的放kvm虚拟机目录]
例:
[root@kvm1 ~]# scp /data/centos7.xml root@192.168.100.60:/home/newdisk/kvm
root@192.168.100.60's password:
centos7.xml 100% 6324 1.8MB/s 00:00
scp [kvm虚拟机存放路径] [目标用户]@[目标ip]:[所创的放kvm虚拟机目录]
4、修改一下/home/newdisk/kvm/Centos7.xml文件中的的路径
5、定义启动虚拟机
virsh dumpxml [虚拟机名] > [虚拟机名].xml
virsh define [虚拟机名].xml
在迁移目标的机子上执行
[root@kvm2 ~]# virsh dumpxml centos7.0 > /home/newdisk/centos7.xml
[root@kvm2 ~]# vish defind /data/newdisk/centos7.xml
动态迁移
一、配置nfs服务端
1、安装服务:
[root@kvm1 ~]# yum install nfs-utils rpcbind
安装完后查看nfsnobody用户在不在:
[root@kvm1 ~]id nfsnobody
2、启动NFS相关服务:
(1)启动rpc服务:
[root@kvm1 ~]# systemctl start rpcbind
[root@kvm1 ~]# systemctl enable rpcbind
(2)查看rpc端口:
[root@kvm1 ~]# netstat -tnulp|grep rpc
(3)查看端口映射情况:
[root@kvm1 ~]# rpcinfo -p localhost
(4)启动nfs服务:
[root@kvm1 ~]## systemctl start nfs
[root@kvm1 ~]## systemctl enable nfs
3、挂载新磁盘到/data/nfs目录
(1)添加一块新磁盘
(2)分区格式化后挂载:
[root@kvm1 ~]## mkfs.ext4 /dev/sdc
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdc is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
设置开机自动挂载
[root@kvm1 ~]## vi /etc/fstab
/dev/sdc /data/nfs ext4 defaults 0 0
手动挂载全部预设磁盘(否则需重启才能自动挂载)
[root@kvm1 ~]# mount -a
(3)配置共享目录/data/nfs
[root@kvm1 ~]# vi /etc/exports
/data/nfs *(rw,sync,insecure,no_root_squash)
[root@kvm1 ~]# exportfs -rv //生效配置
exporting *:/data/nfs
[root@kvm1 ~]# showmount -e localhost //检查共享目录
Export list for localhost:
/data/nfs *
4、配置nfs客户端
1.安装客户端:
[root@kvm2 ~]# yum install nfs-utils rpcbind
2.检查能否访问到nfs服务端:
[root@kvm1 ~]# showmount -e 192.168.100.64
Export list for 192.168.100.64:
/data/nfs *
如出现以下反馈结果
[root@kvm1 ~]# showmount -e 192.168.100.64
clnt_create: RPC: Program not registered
解决方法:
[root@kvm1 ~]# rpc.mountd
[root@kvm1 ~]# showmount -e
Export list for raid:
/data/nfs *
3.客户端上挂载nfs共享目录:
[root@kvm2 ~]# mkdir /data/nfs
[root@kvm2 ~]# mount -t nfs 192.168.100.64:/data/nfs /data/nfs
4.将虚拟磁盘拷贝到/data/nfs目录:
[root@kvm1 ~]# cp -rf /home/newdisk/centos7.0.qcow2 /data/nfs
5.做个软连接保证虚拟磁盘存储位置与主节点一致:
[root@kvm2 ~]# ln -s /data/nfs/centos7.0.qcow2 /home/newdisk
[root@kvm2 ~]# ll /home/newdisk/
total 20
lrwxrwxrwx 1 root root 25 Mar 6 22:06 centos7.0.qcow2 -> /data/nfs/centos7.0.qcow2
drwxr-xr-x. 2 root root 4096 Mar 6 02:06 kvm
drwx------ 2 root root 16384 Mar 3 16:00 lost+found
6.在源主机上执行命令 ssh或者tcp只要其中一种可以与目标主机进行连接就行
[root@kvm1 ~]# virsh -c qemu+ssh://root@192.168.100.60/system list --all
7.开始热迁移(在源主机上执行命令)
首先查看kvm虚拟机状态:
在kvm主机上执行:
[root@kvm1 ~]# virsh migrate --live --persistent --verbose test2 qemu+tcp://192.168.100.60/system --unsafe
如果出现以下情况
[root@raid ~]# virsh migrate --live --persistent --verbose centos7.0 qemu+tcp://192.168.100.60/system --unsafe
error: unsupported configuration: Unable to find security driver for model selinux
解决方法:
关闭selinux并重启系统
–verbose指要迁移的主机
–unsafe 跳过安全检测
qemu+tcp 就是使用tcp进行对远程libvirtd进行连接访问,需要修改文件vi /etc/sysconfig/libvirtd,用来启用tcp的端口
# vi /etc/sysconfig/libvirtd
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"
修改文件vi /etc/libvirt/libvirtd.conf来实现
# vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"
重启libvirtd服务生效:
# systemctl restart libvirtd
定义虚拟机配置文件
[root@kvm2 ~]# virsh dumpxml test2 > /etc/libvirt/qemu/test2.xml
[root@kvm2 ~]# virsh define /etc/libvirt/qemu/test2.xml