KVM基础

KVM基础

概述

KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它将Linux内核转变为一个裸机虚拟机监控程序(Hypervisor)。KVM是Linux内核的一个模块,自2007年以来就成为Linux主线内核的一部分。通过KVM,用户可以在单个物理机器上运行多个隔离的操作系统实例,每个实例被称为虚拟机(VM)。

KVM架构

cpu虚拟化:硬件辅助全虚拟化VT-X/AMD-V
内存虚拟化:MMU虚拟化(内存硬件虚拟化)EPT/RVI。影子页表
I/O虚拟化:硬件辅助虚拟化hypercall virtio。passth
存储虚拟化:文件系统+文件映射/分区映射/裸设备映射
网络虚拟化:LBR/OVS。虚拟机交换机linux_bridge

KVM管理工具

在这里插入图片描述
Libvirtd:前端守护进程管理工具

图形化管理工具

virt-manage 虚拟机管理
virt-viewer 虚拟机敞口查看器

命令行管理工具

virsh 安装、查看、修改虚拟机使用
virt-install 安装虚拟机使用
qemu-img 镜像管理
qemu-kvm 安装虚拟机啊

命令行工具使用

virt-install安装虚拟机
#常用参数
--cdrom  <路径>		指定镜像安装路径
--os-type=linux			指定操作系统类型
--os-variant=Fedora18		指定操作系统发行版本
--vcpus=1		指定cpu
--ram=128	指定内存
qemu-image create -f qcow2 <路径>vm03.qcow2	5G	创建磁盘文件
--disk=<文件路径>		指定磁盘路径
--disk=<文件路径>,size=6	创建磁盘文件并指定大小,
--name=vm03			设置虚拟机名称
--network network=default	设置网络
--graphices vnc,listen=0.0.0.0,port=5913	创建vnc
virsh工具使用
virsh shutdown  vm03	关闭虚拟机
virsh destroy vm03	强制断电
virsh undefine vm03	删除虚拟机
virsh list			虚拟机列表查看
virsh start <vmname>	开启虚拟机
virsh reboot <vm-name>	重启虚拟机
virsh reset <vm-name>	强制重启
virsh domuuid <vm-name>	查看虚拟机UUID
virsh suspend uuid		指定UUID暂停虚拟机
virsh resume uuid		恢复虚拟机
qemu-kvm工具使用
qemu-kvm <镜像路径> -m 128 -smg 1 -vnc:1 (5900+1)-name vm02 -drive file=<磁盘文件路径>,if=ide创建的虚拟机不受virsh管理
不会向libvirtd注册

KVM核心功能

虚拟机配置文件

每个虚拟机在创建完成之后需要生成对应的

  1. 虚拟机配置文件-虚拟机元数据 XML文件格式记录,可以被libvirtd调用,对KVM虚拟机开机时就需要去加载配置文件
    a. virt-manage
    b. virt-install
    c. qemu-kvm 不产生元数据-临时创建一个虚拟机
    d. 默认路径/etc/libvirt/etc/libvirt/qemu/vm01.xml -持久化存储配置文件-虚拟机元数据
    e. 运行中的配置文件/run/libvirt/etc/libvirt/qemu/vm01.xml
  2. 磁盘文件(文件系统+文件映射)qcow(img)/qcow2
    a. qemu-img创建磁盘文件
    b. virt-install --disk 指定文件目录创建
    c. 默认路径/var/lib/libvirt/images

虚拟机配置文件内容
XML文件格式通过标签指定数值的意义
/etc/libvirt/etc/libvirt/qemu/vm01.xml

#虚拟机域信息,虚拟机元数据最高级别
<domain type='kvm'>
  所有信息
</domain>
#名字,UUID
<name>vm01</name>
<uuid>qwefwqwefwwefgfew</uuid>
#内存信息
<memory unit='KiB'>123456</memory>
<currentMemory>12345</currentMemory>
#vCPU核心数
<vcpu placement='static'>1</vcpu>
#操作系统信息
<os>
  <type arch="" >hvm</type>
  <boot dev='hd'></boot>
</os>

KVM虚拟机CPU与内存配置

CPU三大模式

命令行启动 virt-install

host-passthourgh(主机直通模式)

Libvirt令KVM把宿主机把CPU指令集透传给虚拟机。虚拟机能够最大限度的使用宿主机的指令集,故虚拟机性能最好,但是在热迁移的时候要求目的主机的CPU和原主机的CPU一致
–cpu host-passthourgh

host-model

Libvirt 根据当前宿主机 CPU 指令集从配置文件 /usr/share/libvirt/cpu_map.xml(cpu类型仓库) 选择一种最相配的 CPU 型号。在这种 mode下,虚拟机的指令集往往比宿主机少,性能相对 host-passthrough 要差一点,但是热迁移时,它允许目的节点 CPU 和源节点的存在一定的差异。
Libvirt对CPU提炼出标准的几种类型,在/usr/share/libvirt/cpu_map.xm1中可以查到。
–cpu host

custom

这种模式下虚拟机 CPU 指令集数最少,故性能相对最差,但是它在热迁移时跨不同型号 CPU 的能力最强。此外,custom模式下支持用户添加额外的指令集。
未增加指令集模式
–cpu Westmere-IBRS
增加指令集模式
–cpu broadwell-IBRS,+vme,+ss,+vmx,+ht,+hypersiovr

CPU拓扑配置

启动参数:
–vcpus 4,sockets=4,cores=l,threads=1
默认是4cpu,1core,1thread
配置参数

<cpu mode='host-passthrough' check='none'>
  <topology sockets='4'cores='1'threads='1'/>
</cpu>

CPU热插拔

需要预先配置KVM虚拟机最大vCPU参数才能使用
启动参数
–vcpus 2,maxvcpus=4
配置参数

<vcpu placement='static' current="2">4</vcpu>

virsh setvcpus vm01 4 --live
检查配置文件
virsh edit vm01
开机状态只能热插不能拔

CPU嵌套虚拟化

宿主机vmx指令集是intel的硬件辅助虚拟化的功能。
如果需要在虚拟机内部使用虚拟化技术需要开启Nested模块
需要将虚拟化指令集透传给虚拟机,生产环境中嵌套虚拟化会大量浪费时间分片,性能只有宿主机的50%-65%
三种cpu启动模式都能支持嵌套虚拟化。
custom需要手动将vmx加到里面。
lsmod | grep -i kvm

#启用Nested
ehco 'opthions kvm_intel nested=1' >/etc/modprobe.d/kvm_nested.conf
#卸载Nested
modprobe -r kvm_intel 

内存热插拔

#启动参数
–memory 512,maxmemory=1024

#配置参数
<memoryunit='KiB'>1048576</memory>
<currentMemoryunit='KiB'>524288</currentMemory>
#热插拔配置-增加到1024M
virsh setmem vm01 1048576 --live

热拔不能超过虚拟机在使用的内存下限。

内存热气球

待更新

KVM虚拟网络设置

虚拟机链接LinuxBridge

默认链接是LinuxBridge

#查看网络
virsh net-list
#编辑网络
virsh net-edit <default>

虚拟机连接OVS

指定virtualport_port=openvswitch

#使用网桥-ovs01
qemu-imgcreate
    -fgcow2
    /var/lib/libvirt/images/vm01.qcow21G
virt-install
--name=vm01\
--cdrom=/var/lib/1ibvirt/images/TinyCore-11.0.iso\
--os-type=linux\
-os-variant=fedora18\
--cpu host
-vcpus2,maxvcpus=4
--memory 512
--disk=/var/lib/libvirt/images/vm01.qcow2
--networkbridge=ovs01,model=virtic,virtualport_type=openvswitch

绑定Macvtap接口

待更新

绑定TunTap接口

待更新

绑定VLAN接口

待更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值