-
kvm高级功能部署
-
kvm虚拟机的迁移与内核同页合并
-
kvm虚拟机迁移的目的
-
当一个服务器承载了很多个虚拟机时,就可以利用迁移达到平衡负载的目的。
-
当需要对服务器的内核等重要组件进行升级时,为了避免升级组件对服务造成影响需要迁移出服务器的虚拟机。
-
跨地域迁移,当个公司设立分公司或者怎么样地域跨度较大就需要迁移。
-
-
迁移的两种方式
-
静态迁移
-
需要关闭虚拟机,速度很慢
-
拷贝磁盘文件与配置文件
-
-
动态迁移
-
基于共享存储的迁移
-
不需要关闭虚拟机,速度很快
-
相当于拷贝配置文件
-
缺点,当虚拟机数据更新过于频繁,超过了内存传输的速度就不适合用该方法。
-
-
基于数据块的迁移
-
不需要关闭虚拟机,速度稍慢,操作简单
-
相当于拷贝磁中的数据,与配置文件
-
-
-
-
实验过程
-
拓扑
-
目标:
-
实现静态迁移
-
实现基于共享存储的动态迁移
-
实现基于数据块的动态迁移
-
实现ksm的内存优化
-
学会多种kvm虚拟机的创建方法
-
-
第一种利用virt-manager实现创建虚拟机
-
第二种利用vnc安装kvm虚拟机
-
准备前奏
- 准备iso系统镜像文件,本案例以CentOS-7-x86_64-DVD-2009.iso为例,将其拷贝到/opt下,确保能有权限访问。
-
处理防火墙与内核安全机制
-
创建磁盘镜像存储目录
- mkdir -p /data_kvm/store
-
利用virt-install创建出虚拟机
-
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(ram):指定内存大小
-
--vcpus=1 ,指定虚拟机的内核数
-
--disk,存储设置
-
path=/data_kvm/store/test01.qcow2
- 指定磁盘镜像存储位置并起名
-
,size磁盘文件的大小10G,注意单位,与磁盘相关设置有多个用","号隔开
-
-
-w指定所使用的网桥
- bridge=br0
-
--virt-type=kvm
- 指定虚拟化技术所使用的平台
-
--accelerate
- kvm加速,是一种优化选项
-
--autostart
- 会跟随主机的启动虚拟机也会启动
-
-c 指定操作系统镜像文件位置
-
--vnc
- 要利用vnc技术一种显示系统与桌面共享系统
-
--vncport
- 指定vnc viewer连接的接口,默认为5901
-
--vnclisten
- vnc监听的地址
-
-
此方法适用于无图形界面的linux操作系统
- 按下回车后会出现错误,意思是没有图形界面可以让vnc连接。这是正常报错,无需关注。
-
在windows桌面安装vnc viewer
-
viewer 查看器
-
以VNC-Viewer-6.17.731-Windows-64bit.exe为例
-
-
安装完成后file右键选择新的连接
-
之后双击建立的连接就可以进入到创建出的虚拟机的桌面。之后走正常流程安装即可
-
在vnc server填写创建虚拟机的主机IP地址与vnc的端口,name随意设立一样是为了方便区分。
-
-
-
安装完成后可以查看是否安装
-
virsh list --all
-
用这种方式安装的虚拟机默认时关闭的状态需要手动开启
- virsh start test01
-
-
启动后利用vnc再次连接,看系统能否正常使用。
-
-
静态迁移
-
利用上述方法创建的虚拟机做静态迁移
-
静态迁移的前提条件,虚拟机是关闭的状态
- virsh shutdown test01
-
导出配置文件
- virsh dumpxml test01 > test01.xml
-
在不知道虚拟机的磁盘文件时可以利用命令定位
- virsh domblklist test01
-
在kvm02上创建对应的目录去承载,需要注意的是一定要与kvm01相对应,因为.xml配置文件中有对应的路径。
- mkdir -p /data_kvm/store
-
然后利用scp将磁盘文件与配置文件拷贝到对应的目录下即可
-
scp test01.xml 192.168.10.202:/etc/libvirt/qemu/
- 拷贝配置文件
-
scp /data_kvm/store/test01.qcow2 192.168.10.202:/data_kvm/store/
- 拷贝磁盘文件
-
-
最后利用配置文件定义虚拟机并启动
-
virsh define /etc/libvirt/qemu/test01.xml
-
virsh start test01
-
-
为了后续实验,可以利用virt-manager,或者vnc登录到该虚拟机查看是否是正常的登录界面
-
vrish list --all
- 该命令列出的running状态不代表虚拟机运行状态
-
-
-
动态迁移
-
基于共享存储动态迁移
-
动态迁移的准备前奏
-
搭建共享存储的服务器,本案例以nfs为例
-
开启一个新的服务器,处理防火墙并安装nfs-utils
-
修改配置文件 /etc/exports
- /data 192.168.10.0/24(rw,sync,no_root_squash)
-
启动nfs
-
systemctl enable nfs --now
-
有时作为依赖的rpcbind服务不会作为依赖被同时开启,可以查看进程,如果没开启单独开启即可
- systemctl enable rpcbind
-
showmount -e localhost
- 该命令可以检查本主机所有的nfs共享目录
-
-
-
在kvm01与kvm02上创建出对应的挂载目录并进行挂载
-
mkdir /data_kvm/kgc
-
mount -t nfs 192.168.10.101:/data /data_kvm/kgc
-
实现永久挂载修改/etc/fstab文件
- 192.168.10.101:/data /data_kvm/kgc nfs defaults 0 0
-
-
第三种虚拟主机的安装方法
-
利用官方发行的qcow2格式的系统镜像文件安装,免去系统安装过程。
- CentOS-7-x86_64-GenericCloud-2009.qcow2
-
将该配置文件上传到挂载好的挂载点中。利用xftp或lrzsz都可。
-
利用libguestfs-tools提供的命令设置镜像密码,默认是没有root的密码的
-
virt-customize -a /data_kvm/store/test02.qcow2 --root-password password:aptech
- customize定制
-
成功设置后会出现四条绿色字样的消息
-
-
利用virt-install安装虚拟机
-
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
-
--name 新虚拟机的名称
-
-r 内存大小
-
--vcpus,分配的内核数量
-
--disk 设置存储设备及其属性
-
device 设备类型
-
cdrom:光盘
-
disk:硬盘
-
floppy:软盘
-
-
bus:磁盘总线类型
-
总线类型是指磁盘与计算机系统之间的物理接口或者通信类型,不同的总线类型决定了磁盘如何与系统其余部分进项数据交换,影响的是磁盘的是数据传输速率,可靠性和成本等。
-
常见的磁盘总线类型
-
sata,支持热插拔
-
scsi,适用于高性能计算环境的磁盘接口标准,价格更高。
-
pcie:用于内部计算机组件的高速扩展总线标准用于内部计算机组件的高速扩展总线标准
-
M.2:小型固态硬盘接口标准,支持sata和pcie的总线标准。
-
-
-
path=
- 新虚拟机存放磁盘镜像文件的位置
-
size=10(G)
- 磁盘镜像文件的大小
-
-w bridge:br0 桥接模式
- network取w
-
--virt-type=
- 使用的虚拟化平台,kvm
-
--boot
- 指定引导的次序,常见的引导次序有光盘(cdrom),硬盘(hd),网络(nhetwork)
-
-
-
等待创建完毕后可以利用工具进项的登录查看
- virsh list --all
-
-
-
-
实现动态迁移
-
在进行迁移之前,要查看两台kvm的虚拟机状态,为了体现动态迁移的优势,可以在开机状态下进行迁移,同时要确保kvm02上没有同名的虚拟机。
-
在进行动态迁移之前要确保驱动器不做缓存
-
关闭虚拟机修改配置参数
-
virsh shutdown test02
-
virsh edit test02
-
<driver name='qemu' type='qcow2' cache='none'/>
-
如果不修改在进行迁移时会报错
-
-
之后开启虚拟机
- virsh start test02
-
-
-
迁移命令
-
virsh migrate --live --verbose test02 qemu+ssh://192.168.10.202/system tcp://192.168.10.202
-
--live 实时迁移,不中断虚拟机运行
-
--verbose:显示迁移进度
-
test02 要迁移的虚拟机名称
-
qemu+ssh
-
用ssh的协议连接目标主机上的QEMU的hypervisor,
- hypervisor:虚拟机监控程序
-
-
/system连接目标主机的libvirtdaemon的system级别
-
-
迁移完成后再两台kvm主机上查看虚拟机状态
-
原虚拟机的状态显示关闭
-
迁移后的虚拟机状态显示运行
-
-
最后需要导出配置文件并定义,方便进行后续的管理
-
virsh dumpxml test02 > /etc/libvirt/qemu/test02.xml
-
virsh define /etc/libvirt/qemu/test02.xml
-
-
-
-
-
基于数据块的动态迁移
-
需要动态迁移的主机需要依赖额外的软件包
-
布置网络yum仓库
-
建议使用ali
-
布置完成后利用该命令生成软件包所需要的yum仓库
-
yum -y install centos-release-qemu-ev
- release:公布,释放
-
-
vim /etc/yum.repos.d/CentOS-QEMU-EV.repo
-
需要修改成国内的源
-
baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/virt/$basearch/kvm-common/
-
禁用国外的mirrorlist源启用baseurl源并修改网址
-
-
-
最后重新建立缓存并安装所需软件包
- yum -y install qemu-kvm-ev
-
该软件安装完成后需要重启系统才能使用,需要注意重启,以及确定防火墙状态
-
-
迁移准备前奏
-
确保hosts文件有条目,能实现域名通信
-
192.168.10.201 kvm01
-
192.168.10.202 kvm02
-
-
为了方便克隆一台虚拟机以作实验
-
virsh list --all
-
virsh shutdown test01
- 关机才能做克隆
-
virt-clone -o test01 -n test03 -f /data_kvm/store/test03.qcow2
- 注意磁盘镜像存储位置,是本地存储,不在是共享目录。
-
-
kvm02
-
也需要有hosts文件的条目
-
要确保没有同名的虚拟机
-
创建出同名的磁盘文件
-
mkdir -p /data_kvm/store
- 要与原虚拟机目录对应
-
qemu-img create -f qcow2 /data_kvm/store/test03.qcow2 20G
- 注意创建时的空间要大于原虚拟机的数据总量
-
-
-
-
kvm01进行迁移操作
-
为了验证不关机进行迁移可以打开要迁移的虚拟机
-
virsh migtate test03 qemu+ssh://192.168.10.202/system --live --persistent --undefinedsource --copy-storage-all --verbose
-
--persistent(持久化)
- 迁移后就作为目标主机的虚拟机的一部分,之后可以进行重启,如果不加该选项,虚拟机的迁移就是临时的,再关闭虚拟机之后有关该虚拟机的配置就会被删除无法重启。还能确保配置同步
-
--undefinesource
- 迁移后删除原虚拟机的定义信息
-
--copy-storage-all
- 复制磁盘中所有内容
-
-
-
最后在两台kvm主机上验证结果
-
-
-
-
KSM内核同页合并
-
KSM是kvm的内核同页合并技术,允许内核在多个进程之间共享相同的内存页,当出现不同时会为其再分配一个新的内存页。当设置合理时可以减少相当多的内存使用率。但是最cpu的负载就会加大。是一把双刃剑。
-
准备前奏
-
查看当前linux系统是否支持ksm
-
egrep -i ksm /boot/config-3.10.0-1160.el7.x86_64
- 要选择正在使用的内核版本
-
CONFIG_KSM=y
- 如果该项是y表示支持
-
-
-
ksm常用配置文件
-
ls -l /sys/kernel/mm/ksm/
-
注意描红处是本案例所需要的
-
-
可以克隆出多台虚拟机同时开启记录下内存使用情况。越多效果越明显。
-
在开启ksm的情况下在开启同样多的虚拟机进行测试,看前后对比。会发现有明显的差别。
-
systemctl start ksm
-
systemctl start ksmtuned
- tuned:调优
-
-
-
-
-
-
kvm高级功能部署
星耀寰宇x2024-08-01 9:32
相关推荐
黑龙江亿林等保2 小时前
云ECS服务器:哈尔滨三级等保的云计算解决方案运维&陈同学11 小时前
【模块一】kubernetes容器编排进阶实战之k8s基础概念科技云报道11 小时前
推动AI云产业向深向实,云·AI·算力创新发展大会即将启幕dessler12 小时前
云计算&虚拟化-虚拟化技术介绍神秘的土鸡12 小时前
丹摩征文活动 | SD3+ComfyUI的图像部署实践云计算DevOps-韩老师16 小时前
【网络云计算】2024第45周周考-分组技能大赛-LVM结合RAID解题思路【RAID结合LVM】林农16 小时前
C03S01-Linux网络基本设置容器魔方18 小时前
KubeEdge 1.19.0版本发布!更完备的节点设备能力,全新的Dashboard体验小安运维日记1 天前
CKA认证 | Day1 k8s核心概念与集群搭建这里是苏同学1 天前
Linux操作系统之软件安装与包管理器工具