云计算服务的底层,虚拟化技术的实现原理
虚拟化技术:
一、
从cpu说起,
intel和amd等cpu制造商
为了提高其cpu对
虚拟化程序的运算速度,
给cpu硬件里面
增加了指令集
VMLAUNCH, VMRESUME, VMEXIT, VMXOFF
这些指令集称为硬件辅助虚拟化技术的指令集。
---------------------------------------------------------------------------------------------------
什么是指令集?
是指令的集合。
什么是指令?
是cpu提供给程序的一个个功能。程序编译成机器码,可以调用这些功能。
这些功能包括,加减乘除、与或非、移动、输入输出,和虚拟机的各项操作。
指令集通常包括多种类型的指令,如:
数据移动指令(如 MOV)
算术运算指令(如 ADD, SUB, MUL, DIV)
逻辑运算指令(如 AND, OR, NOT, XOR)
条件分支指令(如 JMP, JE, JNE)
输入输出指令(如 IN, OUT)
特殊功能指令(如虚拟化支持指令 VMLAUNCH, VMRESUME)
以intel的cpu举例
Intel VT-x (Virtualization Technology for x86)
介绍:
Intel VT-x 是 Intel 处理器提供的硬件辅助虚拟化技术。
它通过提供一组新的指令和扩展现有指令集来支持虚拟化。
关键指令:
VMXON: 启用虚拟化模式。
VMXOFF: 关闭虚拟化模式。
VMREAD: 读取 VMCS(Virtual Machine Control Structure)中的字段。
VMWRITE: 写入 VMCS 中的字段。
VMPTRLD: 加载 VMCS。
VMPTRST: 存储 VMCS。
VMRESUME: 恢复虚拟机执行。
VMLAUNCH: 启动虚拟机执行。
VMEXIT: 退出虚拟机执行。
VMRUN: 运行虚拟机直到下一个事件发生。
程序编译成机器码,发送给cpu
cpu接收到机器码后,通过指令解码器将其解码成一系列微操作(micro-operations)
解码后的微操作被发送到cpu的执行单元进行实际执行。
各种计算之后,把结果返回给程序
程序拿着结果又去干别的事情。
比如把虚拟机启动起来。
---------------------------------------------------------------------------------------------------
二、kvm
什么是kvm?
是内核的一个模块
加载这个模块,就可以调用cpu中的虚拟化指令集。
怎么加载?
modprobe kvm,敲回车,就好了。
linux内核是高度模块化的,跟ansible一样,需要用哪个模块,加载哪个就可以使用。
如何使用kvm模块?
用qemu来使用。
------------------------------------------------------------------------------------------------------
三、qemu
什么是qemu?
是一个程序
可以虚拟出来硬件,比如cpu,内存,硬盘,网卡
怎么虚拟出来的?
找kvm,让kvm调用cpu的虚拟化指令集。
cpu一顿操作
就整出来了
---------------------------------------------------------------------------------------------------------
四、libvert
用户怎么管理虚拟机
用libvert提供的工具箱
libvert是一个程序
提供了API给用户
用户可以使用命令行工具来调用这些API,来管理虚拟机
比如virsh命令,virt-manager命令