KVM高级功能部署

虚拟机迁移

静态迁移(拷贝):需要关闭虚拟机

  • 拷贝磁盘镜像和xml配置文件
  • 操作方便

virsh domblklist test01 列出存储路径

动态迁移:基于共享存储的动态迁移

  • 利用共享存储,存磁盘镜像和配置文件
  • 速度快
  • 不用关虚拟机

基于数据块的动态迁移

  • 不用关虚拟机
  • 不需要共享虚拟存储
  • 速度相较于基于共享存储的动态迁移要慢

案例实施

案例环境

主机

操作系统

IP地址

主要软件

kvm01

CentOS7.9 x86_64

192.168.10.201

Qemu-kvm、libvirt

kvm02

CentOS7.9 x86_64

192.168.10.202

Qemu-kvm、libvirt、qemu-kvm-ev

kvmnfs

CentOS7.9 x86_64

192.168.10.101

nfs-utils

利用VNC安装kvm虚拟机 

1.用virt-install 命令安装虚拟机并设置VNC Viewer连接端口

[root@kvm01 ~]# systemctl stop firewalld
[root@kvm01 ~]# systemctl disable firewalld

[root@kvm1 ~]# mkdir -p /data_kvm/store
[root@kvm01 ~]# virt-install -n test01 -r 1024 --vcpus=1 --disk path=/data_kvm/store/test01.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /opt/CentOS-7-x86_64-DVD-2009.iso --vnc --vncport=5901 --vnclisten=0.0.0.0

-n:指定虚拟机的名字。 
-r:指定内存大小。 
--vcpu:指定虚拟 CPU 个数。 
--disk:指定磁盘文件放置位置及大小。 
-w:制定所使用的网桥。 
--autostart:设置虚拟机在宿主机开机时启动。 
-c:指定镜像文件。 
--vncport:通过 vnc viewer 连接的端口。 
--vnclisten:通过 vnc 
--accelerate:当安装qemu客户机时,如果支持可用kvm或kqemu内核加速能力,KVM加速器

2. 在windows宿主机上安装VNC Viewer

3.打开VNC Viewer,新建一个连接,连接上后,安装虚拟机

注意:填写的IP地址(192.168.10.201)是Linux宿主机的IP地址,开放的端口号5901映射到了test01虚拟机。连接成功后,就可以开始安装虚拟机了。

 

4.安装后查看并启动虚拟机

[root@kvm01 ~]# virsh list --all
[root@kvm01 ~]# virsh start test01

5.vnc终端上再次连接test01虚拟机并登录系统

静态迁移 

需要在虚拟机关闭的时候进行

1.导出虚拟机 test01 xml 配置文件

[root@kvm01 ~]# virsh dumpxml test01 > test01.xml 

2.定位虚拟机 test01 的磁盘文件

[root@kvm01 ~]# virsh domblklist test01

3.拷贝配置文件和磁盘文件到目标宿主机 kvm02

现在kvm02上创建磁盘目录
[root@kvm2 ~]# mkdir -p /data_kvm/store

到kvm01上拷贝文件到kvm02上
[root@kvm01 ~]# scp test01.xml 192.168.10.202:/etc/libvirt/qemu/
[root@kvm01 ~]# scp /data_kvm/store/test01.qcow2 192.168.10.202:/data_kvm/store/

4.在kvm02上配置和启动目标虚拟机

//查看被迁移过来的配置文件和磁盘文件 
[root@kvm02 ~]# ls -l /etc/libvirt/qemu
[root@kvm02 ~]# ls -l /data_kvm/store/


//重新定义虚拟机 test01 
[root@kvm02 ~]# virsh list --all

[root@kvm02 ~]# virsh define /etc/libvirt/qemu/test01.xml 
[root@kvm02 ~]# virsh list --all

//启动虚拟机 test01 
[root@kvm02 ~]# virsh start test01
[root@kvm02 ~]# virsh list --all

//连接虚拟机 test01 ,查看主机名
[root@kvm02 ~]# virt-manager

打开虚拟机管理器,查看虚拟机的运行

基于共享存储的动态迁移

1.配置 NFS 共享存储

//打开一个新的服务器kvmnfs ,在 kvmnfs 服务器上面安装 NFS 服务 
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostnamectl set-hostname kvmnfs
[root@localhost ~]# bash
[root@kvmnfs ~]# yum -y install nfs-utils

//两台kvm主机的selinux的状态要一致。


//配置共享目录
[root@kvmnfs ~]# mkdir /data 
[root@kvmnfs ~]# chmod -R 777 /data/
[root@kvmnfs ~]# vim /etc/exports
/data 192.168.10.0/24(rw,sync,no_root_squash)



//启动 NFS 服务 
[root@kvmnfs ~]# systemctl start nfs 
[root@kvmnfs ~]# systemctl start rpcbind 

2. 挂载 NFS 目录

//在kvm01 上查看 NFS 共享目录 
[root@kvm01 ~]# showmount -e 192.168.10.101

//在kvm01 和kvm02上创建 kgc 目录 
[root@kvm01 ~]# mkdir /data_kvm/kgc
[root@kvm02 ~]# mkdir /data_kvm/kgc


//在 kvm01 和kvm02上都挂载共享目录 
[root@kvm01 ~]# mount -t nfs 192.168.10.101:/data /data_kvm/kgc 
[root@kvm01 ~]# mount

[root@kvm02 ~]# mount -t nfs 192.168.10.101:/data /data_kvm/kgc 
[root@kvm02 ~]# mount


//在 kvm01 上设置自动挂载 
[root@kvm01 ~]# vim /etc/fstab
192.168.10.101:/data /data_kvm/kgc nfs defaults 0 0

3.通过现有的磁盘文件生成虚拟机

//拷贝qcow2磁盘文件
[root@kvm01 ~]# cp /opt/CentOS-7-x86_64-GenericCloud-2009.qcow2 /data_kvm/kgc/test02.qcow2


//部署虚拟机
[root@kvm01 ~]# virt-customize -a /data_kvm/kgc/test02.qcow2 --root-password password:aptech


[root@kvm01 ~]# virt-install --name=test02 -r 1024 --vcpus=1 --disk device=disk,bus=virtio,path='/data_kvm/kgc/test02.qcow2',size=10 -w bridge:br0 --virt-type=kvm --boot hd

4.动态迁移

在 kvm01 上执行迁移命令
[root@kvm01 ~]# virsh shutdown test02 
[root@kvm01 ~]# virsh edit test02
<driver name='qemu' type='qcow2' cache='none'/> 		//添加cache='none'

[root@kvm01 ~]# virsh start test02 
Domain test02 started 
[root@kvm01 ~]# virsh list --all

[root@kvm01 ~]# virsh migrate --live --verbose test02 qemu+ssh://192.168.10.202/system tcp://192.168.10.202

迁移之后源宿主机 kvm01 上虚拟机 test02 被关闭,目标宿主机 kvm02 上虚拟机 test02 处于启动状态

5. 生成配置文件

在kvm02上进行

[root@kvm02 ~]# virsh dumpxml test02 > /etc/libvirt/qemu/test02.xml 

//定义虚拟机 test02 配置文件
[root@kvm02 qemu]# virsh define /etc/libvirt/qemu/test02.xml

 基于数据块的动态迁移

1.在kvm01和kvm02上安装依赖包

//设置好阿里的yum源
[root@kvm02 ~]# yum -y install centos-release-qemu-ev 

[root@kvm02 ~]# vim /etc/yum.repos.d/CentOS-QEMU-EV.repo
…………
baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/virt/$basearch/kvm-common/
…………

[root@kvm02 ~]# yum -y install qemu-kvm-ev

//安装完成后重启系统

2. 迁移前准备工作

在kvm01上进行

[root@kvm01 ~]# virsh list --all 
[root@kvm01 ~]# virsh shutdown test01

[root@kvm01 ~]# virt-clone -o test01 -n test03 -f /data_kvm/store/test03.qcow2 

在kvm02主机上创建同名磁盘文件

[root@kvm02 store]# qemu-img create -f qcow2 /data_kvm/store/test03.qcow2 20G

3.在kvm01主机上执行迁移操作

[root@kvm01 ~]# virsh migrate test03 qemu+ssh://192.168.10.202/system --live --persistent --undefinesource --copy-storage-all --verbose

备注
--live:实时迁移
--persistent :将域保留为目标主机物理机器的持久性状态
--undefinesource:删除源主机物理机器上的客户机虚拟机
--copy-storage-all :使用全磁盘复制的非共享存储进行迁移
--verbose:显示迁移的进度

4.验证迁移结果

在kvm02上进行验证,执行virsh list --all

KSM

Linux内核特性称为Kernel Shared Memory(基于内核的共享内存)或Kernel Samepage Merging。KSMD作为守护进程,能够合并内存页面来增加并发虚拟机的数量。KSM 适用于宿主机过载的情况下。KSM 通过减少每个虚拟机实际占用的内存数,可以让多个虚拟机分配的内存数量之和大于物理内存数量。而对于相同类型的虚拟机,在物理内存量不变的情况下,可以在一个宿主机中创建更多虚拟机,从而提高虚拟化部署的密度,同时也可以提高物理资源的利用效率。

检查当前 Linux 系统是否支持 KSM

[root@kvm02 ~]# egrep -i ksm /boot/config-3.10.0-1160.el7.x86_64 
CONFIG_KSM=y

 ksmd服务的配置文件

KSM 的常用配置的作用分别如下所示。

  • max_page_sharing:设置每个 KSM 页面允许的最大共享数量。这个配置设置了重复数据删除限制,以避免虚拟内存 rmap 列表变得太大。max_page_sharing 最小值为 2,因为新创建的 KSM 页面至少有两个共享器。
  • merge_across_nodes:指定是否可以合并来自不同 numa 节点的页面。当设置为 0 时,ksm 只合并物理页面并驻留在同一 numa 节点的内存区域中,可以降低访问共享页面的延迟。
  • pages_to_scan:在 KSM 进程休眠之前会去扫描的内存数量。
  • run:控制 ksmd 进程是否运行,默认值为 0。要激活 ksm 必须设置其值为 1。如果设置为 0,表示停止运行 ksmd, 但会保留已经合并的内存页;如果设置为 1,表示马上运行 ksmd 进程;设置为 2 表示停止运行 ksmd,并分离已经合并的所有内存页,但是保留已经注册为合并的内存区域给下一次使用。
  • sleep_millisecs:设置 ksmd 进程休眠的时间(单位:毫秒),即为 ksmd 进程两次运行之间的间隔。
  • stable_node_chains_prune_millisecs: stable_node“ 中 链 接 的 整 个stable_node“dups”列表被周期性地扫描,以删除陈旧的 stable_nodes。该参数的值用于调节重复扫描的时间(单位:毫秒)。
  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值