| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> QEMU虚拟机相关概念介绍 -> 正文阅读 |
|
[系统运维]QEMU虚拟机相关概念介绍 |
前言:本文围绕QEMU,介绍虚拟机相关进阶知识。为更好地理解本文,读者最好能够了解虚拟机的基本概念。 1. 虚拟机层次结构示意图 图1.1 虚拟机层次结构 2. Hypervisor Hypervisor介于虚拟机和宿主机操作系统之间,负责对宿主机资源(为方便表述,本文均以硬件资源为例,但实际上被虚拟化的不只有硬件资源)进行虚拟化,并将虚拟化后的硬件资源提供给虚拟机。Hypervisor分为两类: Type-1 Hypervisor:位于操作系统内核空间,具备对宿主机硬件资源的直接访问权限。代表:Microsoft Hyper-V、Linux KVM、VMWare ESXi。 Type-2 Hypervisor:位于用户空间,需要通过操作系统内核才能访问硬件。代表:QEMU、Oracle VirtualBox。 注意: 1. QEMU是Hypervisor,而不是虚拟机本身。 2. 一个Hypervisor之上可以运行多个虚拟机。 3. QEMU的工作模式 图3.1 QEMU的层次与工作模式 如上图所示,QEMU有两种工作模式: 3.1 QEMU本身作为Hypervisor。QEMU与Linux内核交互,从而获取虚拟化后的硬件。这就是前文所述的Type-2 Hypervisor。 交互层次:VM - QEMU - Linux Kernel - Driver - Hardware 3.2 QEMU作为虚拟机与Linux KVM交互的中间层,仅负责传递交互信息,而不发挥Hypervisor的实际功能。真正发挥Hypervisor功能的是Linux KVM。 交互层次:VM - QEMU - Linux KVM - KVM Virtual Driver - Hardware 第二种工作模式能够直接利用KVM,因而效率更高。而第一种工作模式多用于不需要和硬件直接交互的场合,例如在虚拟机中启动虚拟机。 4. libvirtd、libvirt、virt-manager的概念及与QEMU的关系 libvirtd是Linux中的一个守护进程,其使用的是libvirt库。 libvirt与QEMU的关系,类似于Kubernetes与Docker的关系:QEMU负责实际管理一台宿主机上的所有虚拟机;而libvirtd适用于一台宿主机上启用多台虚拟机的场景,它提供了一系列在虚拟机之间进行资源调度的接口,这些接口底层仍然是以QEMU命令来实现的。 virt-manager是libvirt的图形化界面。在virt-manager上的所有操作,都会被映射为libvirt命令;libvirt命令又会被映射为QEMU命令;如果QEMU处于第3节所述的第二种工作模式,那么QEMU命令又会再次被映射为KVM命令。 从图1.1虚拟机分层的视角来看,virt-manager、libvirt、QEMU与KVM都属于Hypervisor层次。结合图3.1可知,前三者都处于用户空间,只有KVM处于内核空间。 5. 磁盘镜像 虚拟机所有计算资源(包括CPU和内存)都是由Hypervisor提供的。但是,Hypervisor无法直接提供虚拟机的存储资源。最常见的提供虚拟机存储资源的方式,是磁盘镜像。 磁盘镜像是一系列可以模拟各种存储设备的文件的总称。最常见的磁盘镜像文件就是.iso文件,它模拟的是一个光驱。当然,不同的磁盘镜像文件还可以模拟硬盘、软盘、磁带、USB设备等各种常见设备类型的驱动。 磁盘镜像本质上是一种虚拟设备,因此它需要专门的驱动程序来解析(换言之,不能直接使用真实存储设备的驱动,来解析磁盘镜像)。在Linux中,回环设备(loop device)能够解析磁盘镜像。Linux对磁盘镜像解析成功后,将会挂载一个虚拟块设备,在这个虚拟块设备上进行的所有操作,与真实设备上完全相同。 磁盘镜像可直接被KVM解析,从而作为虚拟机的磁盘设备。因此,如果是以KVM作为Hypervisor,那么解析磁盘镜像时,并不要求虚拟机中存在回环设备,因为KVM能够直接解析磁盘镜像。 QEMU中常用的磁盘镜像格式是raw和qcow2。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 13:00:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |