KVM(Kernel-based Virtual Machine)包含一个为处理器提供底层虚拟化、可加载的核心 模块kvm.ko(kvm-intel.ko或kvm-amd.ko),使用QEMU(QEMU-KVM)作为虚拟机上层 控制工具。KVM无需改变Linux或Windows系统就能运行。
KVM就是内核的一个模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就 是一个普通的Linux进程,通过对这个进程的管理,就可以完成对虚拟机的管理
QEMU本身并不是KVM的一部分,其本身是一个著名的开源虚拟机软件,与KVM不同, QEMU是一个纯软件的实现,所以性能低下。但是,其优点是可以模拟很多硬件。
以盖房子为例,KVM可以理解为开发商,房子盖的很好,但是不会装修;QEMU可以理解为 装修公司,房子盖的不好,但是装修做的很好;所以我们采用KVM盖房子(硬件虚拟化,实 现CPU和内存计算资源的模拟),使用QEMU装修(软件模拟,实现网卡、显卡、存储控制器 和硬盘等)。
KVM只是一个内核的模块,没有用户控件的管理工具,KVM虚拟机可以借助QEMU的管理工 具来管理,QEMU也可以借助KVM来加速,提升虚拟机的性能
Libvirt是一套开源的虚拟化的管理工具,Libvirt的设计目标是通过相同的方式管理不同的虚拟 化引擎,比如KVM、Xen、Hyper-V、VMware ESXi等。目前大多数场景使用Libvirt管理 KVM
Libvirt主要由3部分组成:
①一套API的lib库,支持主流的编程语言,包括C、Python等。
②Libvirtd服务。
③命令行工具virsh
虚拟机是运行在物理服务器上的一个完整的系统,它包含 有自己的虚拟CPU、内存、磁盘和网卡等虚拟硬件资源。
虚拟硬件信息在虚拟机的配置文件中定义。
操作系统和应用程序在虚拟机中的运行方式与它们在普通 物理机上的运行方式没有任何区别。
虚拟机的xml描述文件存储在物理机/etc/libvirt/qemu中, xml文件描述了此虚拟机中的硬件配置信息。 MyVM.xm
基于X86处理器的虚拟化
X86架构存在17条敏感的非特权指令,运行时不会产生异常,这些指令在客户操作系统上的执行 会破坏整个系统
基于VMX处理器的虚拟化
硬件辅助虚拟化解决敏感非特 权指令无法陷入问题的解决思 路:引入VMX模式(Virtual Machine eXtension)
基于VMCS处理器的虚拟化
客户机状态域:保存非根模式下VCPU运行状 态;
宿主机状态域:保存根操作模式下CPU的运行 状态;
VM执行控制域:控制VM-Exit操作发生时的行 为,比如某些敏感指令、异常和中断是否产生 VM-Exit操作;
VM-Entry控制域和VM-Exit控制域:对VM- Entry和VM-Exit操作的具体行为进行控制规定;
VM-Exit信息域:存放VM-Exit产生的原因
虚拟CPU
每个VM分配一个时间片,轮流执行,在虚拟化应用环境中,高效利用CPU资源
每个虚拟机(VM)都是虚拟机操作系统内核 的一个进程,每个进程被分配一个时间段(时 间片),即允许VM运行的时间
每个虚拟机(VM)都是虚拟机操作系统内核 的一个进程,每个进程被分配一个时间段(时 间片),即允许VM运行的时间
如果VM在时间片结束前阻塞或结束,CPU立 即切换,最大程度利用CPU资源
默认情况下,所有VM被视为同等重要,时间 片长度相同
CPU的工作模式
custom (推荐) :
QEMU模拟 的CPU,类型为qemu64兼容 性好,但不能为虚拟机提供最 优性能,如aes加密等
host-mode:
QEMU模拟的 与主机CPU接近的CPU ,性 能尽可能的与主机CPU接近, 但迁移兼容性较差。
host-passthrough:
透传主 机CPU型号和大部分功能给虚 拟机,性能最优,但迁移兼容 性很差,同一厂家的不同
代 CPU也有可能不能迁移。
内存虚拟化-虚拟机物理地址
内存虚拟化-EPT(Extend Page Table扩展页表)
虚拟机的磁盘类型
KVM使用的虚拟机磁盘主要有如下类型:
IDE硬盘
高速硬盘(Virtio硬盘,默认)
虚拟磁盘类型
虚拟机磁盘支持块设备和文件 两种类型。
对虚拟机磁盘有较高要求时可 以使用块设备,比如Oracle数 据库。
虚拟机磁盘选择文件类型时, 对应的存储卷格式支持智能 (QCOW2)和高速(RAW) 两种格
式,建议使用智能格式 (支持动态分配磁盘空间、快 照等优点)。
智能存储卷
虚拟机的虚拟磁盘使用智能格式时,需要 以文件的方式为虚拟机提供虚拟磁盘。
虚拟磁盘文件使用qcow2文件格式。
Qcow2文件的开始2M为qcow2文件头, 记录了文件大小、L1表实际地址和快照信 息等重要数据
L1表记录了L2表的实际地址信息
L1表记录了L2表的实际地址信息
数据块用于存放虚拟机的数据,默认大小 为2M
输入/输出设备的虚拟化
网卡虚拟化(SR-IOV,Single Root I/O Virtualization and Sharing)技术将一块物理网卡 可以虚拟出多个虚拟网卡;
VT-d(Intel® Virtualization Technology for Directed I/O) 技术将网卡分配给虚拟机。
虚拟网卡
KVM中虚拟机的网卡是通过QEMU模拟实 现的,包括了普通网卡、Intel E1000和 Virtio网卡
普通网卡:模拟了RealTek Link 8139百兆 网卡 l Intel e1000网卡:模拟了Intel 82540E千 兆网卡
Virtio网卡:虚拟化内核平台软件驱动的网 卡,速度最快、功能最全,推荐使用 (CSMP中部分虚拟机默认)
虚拟网卡IO处理
虚拟交换机
虚拟交换机是通过软件模拟的、 具有实体交换机系统功能的网 络平台。
为虚拟机、主机、外部网络提 供网络连接。
每个上行端口对应一个物理适 配器,多对上行端口和物理适 配器时可做聚合,达到链路冗 余。
virsh相关
cat /proc/cpuinfo | grep -E ‘(vmx|svm)’ 确认CPU是否支持虚拟化
virsh list 查看正在运行的虚拟机
virsh list --all 查看所有的虚拟机
virsh start/shutdown windows 开启关闭windows的主机
virsh destroy win7 关闭名字为win7的虚拟机,类似直接给虚拟机关闭电源
virsh reboot win7 重起虚拟机
virsh suspend win7 暂停虚拟机
virsh resume win7 暂停之后恢复虚拟机
virsh define /etc/libvirt/qemu/win7.xml 根据文件定义生成一个虚拟机
virsh undefine win7 取消定义,即删除win7虚拟机
virsh edit win7 编辑虚拟机
systemctl restart libvirtd 重启libvirt-bin
磁盘相关的命令
df –Th 查看分区以及空间使用情况
qemu-img info win7.qcow2 查看名字为win7.qcow2的虚拟机磁盘文件物理信息
qemu-img info win7.qcow2 查看名字为win7.qcow2的虚拟机磁盘文件物理信息
qemu-img create win7-2.qcow2 -f qcow2 5G 创建一个磁盘文件,格式为qcow2,5G大小
qemu-img convert -f raw -O qcow2 123.raw 123.qcow2 将raw格式的磁盘修改为qcow2
qemu-img snapshot -c test2 /vms/2T/ucen 给虚拟机磁盘文件创建快照
qemu-img snapshot –l /vms/2T/ucen 查看虚拟机磁盘文件的快照信息
qemu-img snapshot -a test2 /vms/2T/ucen 使用磁盘文件的快照恢复
qemu-img resize win7.qcow2 +1G 给磁盘文件增加1GB空间(只能增加,不能减小)
qemu-img rebase -u -b /vms/test/VSR_base_1 VSR 设置磁盘的base文件,用于三级镜像 文件切换路径,修改base文件等
网络相关的命令
ovs-vsctl list-br 列出所有网桥信息
ovs-vsctl list-br 列出所有网桥信息
ovs-vsctl add-port vswitch1 eth1 将eth1挂接到vswitch1上
ovs-vsctl list-ports vswitch0 列出挂接到vswitch0上的接口
ovs-vsctl port-to-br eht0 列出已挂接eth
ovs-vsctl show 查看网桥信息
ovs-vsctl del-port vswitch1 eth1 删除网桥vswitch1上挂接的eth1接口
ovs-vsctl del-br vswitch1 删除名为vswitch1的网桥
ifconfig vswitch1 up/down 将网桥vswitch1 开启、
ovs-ofctl dump-flows br-int 查看流表信息
r eht0 列出已挂接eth
ovs-vsctl show 查看网桥信息
ovs-vsctl del-port vswitch1 eth1 删除网桥vswitch1上挂接的eth1接口
ovs-vsctl del-br vswitch1 删除名为vswitch1的网桥
ifconfig vswitch1 up/down 将网桥vswitch1 开启、
ovs-ofctl dump-flows br-int 查看流表信息
service openvswitch-switch status/restart/start/stop #查看、重启、启动、关闭虚拟交换机 服
到此这篇kvm虚拟化原理(kvm虚拟化技术原理)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-docker-k8s/79206.html