一、实验目的:
1、掌握虚拟机静态迁移的方法和步骤
2、掌握虚拟机动态迁移的方法和步骤
3、掌握kvm中存储池的使用方法
二、实验步骤:
1、利用最初创建的快照克隆两台CentOS服务器,已经安装过虚拟机的服务器命名为xxx-node1,克隆的两台分别命名为xxx-node2和xxx-nfs。(xxx为自己姓名拼音)
2、在xxx-node2上安装kvm。
[root@zq2 data]# yum -y install kvm qemu-kvm-tools qemu-kvm tunctl bridge-utils libvirt virt-manager virtinstall virt-viewer virt-v2v libguestfs-tools
3、在xxx-node1上查看已安装的虚拟机列表,参考命令
[root@node1~]# virsh list –all
确定虚拟机关闭状态
[root@zq data]# virsh list --all
在xxx-node1上利用命令导出centos虚拟机的配置文件,导出的配置文件名为centos.xml,参考命令如下
[root@ node1~]# virsh dumpxml centos >centos.xml
准备迁移centos2虚拟机,查看该虚拟机配置的磁盘文件
[root@zq data]# virsh domblklist centos2
导出配置文件
[root@zq data]# virsh dumpxml centos2 >/root/centos2.xml
[root@zq data]# cd ~
[root@zq ~]# ll
4、在xxx-node2上创建和xxx-node1上相同的目录,然后利用scp命令将磁盘镜像文件和配置文件从xxx-node1复制到xxx-node2上,参考命令
[root@ node1~]# scp /data/centos.img192.168.8.20:/data/
[root@ node1~]# scp /data/centos.qcow 192.168.8.20:/data/
查看虚拟机磁盘文件并拷贝到目标虚拟主机
[root@zq ~]# scp /data/centos2.img 192.168.13.40:/data
5、在xxx-node2上利用命令创建虚拟机,参考命令
[root@node2 ~]# virsh define /data/centos.xml
[root@zq2 data]# virsh define /etc/libvirt/qemu/centos2.xml
6、在xxx-nfs上安装配置nfs服务器,并将目录/data共享出来,共享权限为rw,同时修改/data目录权限,设置other有写入权限。
[root@nfs ~]# ll -d /data
drwxrwxrwx 2 root root 4096 Oct 20 20:35 /data
[root@ nfs ~]# cat /etc/exports
/data 192.168.8.0/24(rw)
安装NFS服务
[root@zq3 data]# yum install nfs* rpcbind
配置NFS服务,编辑/etc/exports文件:
[root@zq3 ~]# vim /etc/exports
启动NFS服务:
[root@zq3 ~]# systemctl restart nfs.service
[root@zq3 ~]# systemctl restart rpcbind.service
在NSFServer上查看nfs运行情况
[root@zq3 ~]# netstat -tunlp|grep -E '(rpc|nfs)'
显示指定NFS服务器输出目录列表(也称为共享目录列表):
[root@zq3 data]# showmount -e 192.168.13.50
[root@zq3 ~]# chmod -R a+w /data/
7、在xxx-node1和xxx-node2上都将nfs共享文件夹挂载在/mnt/data目录下
[root@node1~]# mount 192.168.8.30:/data /mnt/data/
[root@node2~]# mount 192.168.8.30:/data /mnt/data/
在node1上的操作
[root@zq ~]# mkdir /mnt/data
[root@zq ~]# mount 192.168.13.50:/data /mnt/data
[root@zq ~]# df
为了重启后仍然有效,将挂载信息写入/etc/fstab中:
[root@zq ~]# vim /etc/fstab
查看结果:
[root@zq ~]# umount /mnt/data/
[root@zq ~]# mount -a
[root@zq ~]# df
在node2上做相同的配置
[root@zq2 data]# mkdir /mnt/data
[root@zq2 data]# mount -t nfs 192.168.13.50:/data /mnt/data
[root@zq2 data]# df
为了重启后仍然有效,将挂载信息写入/etc/fstab中:
[root@zq2 data]# vim /etc/fstab
[root@zq2 data]# cat /etc/fstab
查看结果:
[root@zq2 data]# umount /mnt/data
[root@zq2 data]# mount -a
[root@zq2 data]# df
8、在xxx-node1上将虚拟机centos2的磁盘文件目录修改到/mnt/data,同时将对应的磁盘文件复制到/mnt/data目录下。
将磁盘文件复制到/mnt/data目录下:
[root@zq data]# cp centos2.qcow2 /mnt/data/
[root@zq data]# ll /mnt/data
修改虚拟机配置文件,将虚拟机磁盘文件使用nfsserver中的磁盘文件:
[root@zq data]# virsh edit centos2
9、然后启动虚拟机并配置IP地址,然后在物理主机中ping该虚拟机地址
修改文件权限:
[root@zq data]# chmod a+w /mnt/data/centos2.qcow2
[root@zq data]# ll /mnt/data
启动虚拟机
[root@zq data]# virsh start centos2
[root@zq data]# virsh list --all
在nfsserver中ping 该虚拟机的ip地址
[root@zq3 data]# ping 192.168.13.10
10、利用命令完成动态迁移,参考命令
[root@node1~]#virsh migrate --live --verbose centos2 qemu+ssh://192.168.8.20/system tcp://192.168.8.20
[root@zq data]# virsh migrate --live --verbose centos2 qemu+ssh://192.168.13.40/system tcp://192.168.13.40
在节点node2中查看结果,发现虚拟机已经在运行
[root@zq2 data]# virsh list --all
查看ping有没有中断,查看结果ping只是延时增加,并没有中断
11、在xxx-node2中查看有没有虚拟机配置文件
[root@zq2 data]# ll /etc/libvirt/qemu
并没有发现配置文件。
12、在xxx-node2上利用命令将配置文件导入,参考命令
[root@node2 ~]# virsh dumpxml centos >/etc/libvirt/qemu/centos.xml
[root@zq2 data]# virsh dumpxml centos2 >/etc/libvirt/qemu/centos2.xml
13、在xxx-node1上创建基于文件的存储池
[root@zq data]# mkdir -p /data/vmfs
[root@zq data]# cd /data
[root@zq data]# ll
14、定义存储池与其目录,创建已定义的存储池,并查看结果,激活并自动启动已定义的存储池
定义存储池与其目录
[root@zq data]# virsh pool-define-as vmdisk --type dir --target /data/vmfs
创建已定义的存储池,并查看结果
[root@zq data]# virsh pool-build vmdisk
[root@zq data]# virsh pool-list --all
激活并自动启动已定义的存储池
[root@zq data]# virsh pool-start vmdisk
[root@zq data]# virsh pool-autostart vmdisk
[root@zq data]# virsh pool-list --all
在存储池中创建虚拟机存储卷,根据创建的虚拟机存储卷安装虚拟机在存储池中创建虚拟机存储卷
[root@zq data]# virsh vol-create-as vmdisk centos4.qcow2 4G --format qcow2
[root@zq data]# cd vmfs/
[root@zq vmfs]# ll
[root@zq vmfs]# qemu-img info centos4.qcow2
根据创建的虚拟机存储卷安装虚拟机
[root@zq vmfs]# virt-install --name=centos4 --os-variant=RHEL7 --ram 512 --vcpus=1 --disk path=/data/vmfs/centos4.qcow2,format=qcow2,size=10,bus=virtio --accelerate --cdrom /data/centos-7.iso --vnc --vncport=5930 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
16、存储池相关管理命令,在存储池中删除虚拟机存储卷,取消激活存储池,删除存储池定义的目录,取消定义存储池
在存储池中删除虚拟机存储卷
[root@zq vmfs]# virsh vol-delete --pool vmdisk centos4.qcow2
取消激活存储池
[root@zq vmfs]# virsh pool-destroy vmdisk
删除存储池定义的目录
[root@zq vmfs]# virsh pool-delete vmdisk
取消定义存储池
[root@zq vmfs]# virsh pool-undefine vmdisk