虚拟概述¶
调教心得¶
vmware workstation 17¶
密钥:
NZ4RR-FTK5H-H81C1-Q30QH-1V2LA
MC60H-DWHD5-H80U9-6V85M-8280D
windows上安装虚机后 通过Serial来访问 可以在设置里面添加串行端口
使用命名管道来访问 \.\pipe\mibo 其中 **\.\pipe** 是 固定语法 mibo可以替换成任意字符
而后使用对应工具即可正常访问
需要注意的是,如果没有提示错误,但是也不打印信息,可能是内核->串口的打印未开启
使用 echo "OK" > /dev/ttyS0 s1、s2、s3等来确定那个是VM的输出,
找到后在引导信息中添加 console=ttyS0,115200即可正常打印
虚拟化分类¶
寄居虚拟化架构¶
寄居虚拟化架构指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。类似vmware workstation
裸金属虚拟化架构¶
裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。
操作系统虚拟化¶
容器
比较¶
| 比较 | 寄居虚拟化 | 裸金属 | 系统虚拟 |
|---|---|---|---|
| 优点 | 简单、易于实现、开发难度点 | 虚拟化不依赖宿主机操作系统支持多种操作系统性能极强 | 简单、易于实现管理开销低 |
| 缺点 | 管理开销大、性能损耗大 | 虚拟层内核开发难度大 | 多容器共享同一操作系统 |
| 厂家 | Vmware workstation、Oracle virtual box | Microsoft hyper-v、Citrix xen、Vmware vsphere ESXI | docker |
计算资源的虚拟化,可以归结为三个方面¶
- CPU虚拟化
- 内存虚拟化
- IO虚拟化
其中I/O虚拟化,又可以引申出两个重要的分支 存储虚拟化,网络虚拟化
存储虚拟化 -> 1、裸设备.逻辑卷 2、存储设备虚拟化 3、文件系统+主机存储虚拟
网络虚拟化 -> 1、虚拟网卡,端口 2、虚拟交换机
虚拟化技术分类 对象分类¶
| 分类 | 目的 |
|---|---|
| CPU虚拟化 | 目标是使虚拟机上的指令能被正常执行,且效率接近物理机 |
| 内存虚拟化 | 目标是能做好虚机内存空间之间的隔离,使每个虚机都认为自己拥有了整个内存地址,且效率也能接近物理机 |
| IO虚拟化 | 目标是不仅让虚机访问到他们所需要的IO资源,而且要做好它们之间的隔离,更重要的是减轻由于虚拟化所带来的开销 |
虚拟化技术分类 技术过程分类¶
| 分类 | 目的 |
|---|---|
| 全虚拟化 | 使用VMM实现CPU、内存、设备IO的虚拟化,而guest OS和计算机系统硬件都不需要进行修改。该方式兼容性好,但会给处理器带来额外的开销 |
| 半虚拟化 | 使用VMM实现CPU和内存虚拟化,设备IO虚拟化由guest OS实现。需要修改guest OS,使其能够与VMM协同工作。该方式兼容性差,但性能较好。 |
| 硬件辅助虚拟化 | 借助硬件(主要是处理器)的支持来实现高效的全虚拟化 |
开源虚拟化架构基础¶

kvm框架¶
KVM虚拟化的核心主要由以下两个模块组成:
1) KVM内核模块,它属于标准Linux内核的一部分.是一个专门提供虚拟化功能的模块,主要负责CPU和内存的虚拟化,包括:客户机的创建、虚拟内存的分配、CPU执行模式的切换、vCPU寄存器的访问、vCPU的执行。
2) QEMU用户态工具,它是一个普通的Linux进程,为客户机提供设备模拟的功能. 包括模拟BIOS, PCI/PCIE总线、磁盘、网卡、显卡、声卡、键盘、鼠标等。同时它通过 ioctl系统调用与内核态的KVM模块进行交互。

kVM 工作原理¶
用户模式的qemu利用libkvm通过ioctl进入内核模式,kvm模块未虚拟机创建虚拟内存,虚拟CPU后执行VMLAUCH指令进入客户模式。加载Guest OS并执行。如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS的执行,退出客户模式出行异常处理,之后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。

QEMU¶
QEMU原本就是一个著名的开源虚拟机软件项目,而不是KVM虚拟化软件的一部分。 与KVM不同,QEMU最初实现的虚拟机是一个纯软件的实现,通过二进制翻译来实现虚 拟化客户机中的CPU指令模拟,所以性能比较低 但是,其优点是跨平台,QEMU支持在 Linux、Windows、FreeBSD , Solaris, MacOS等多种操作系统上运行,能支持在QEMU本 身编译运行的平台上就实现虚拟机的功能,甚至可以支持客户机与宿主机并不是同一个架构 (比如在x86平台上运行ARM客户机)。作为一个存在已久的虚拟机监控器软件,QEMU的 代码中有完整的虚拟机实现,包括处理器虚拟化、内存虚拟化.以及KVM也会用到的虚拟 设备模拟(比如网卡、显卡、存储控制器和硬盘等)。
libvirt中的三个重要概念¶
节点:是一个物理机器,上面可能运行着多个虚拟化客户机。Hypervisor和domain都运行在节点上。
Hypervisor:虚拟机监控器(VMM),如kvm,xen,vmware等,它可以虚拟化一个节点让其运行多个客户机。
域(domain):是在hypervisor上运行的一个客户机操作系统实例。
Virsh工具¶
一些控制方法
