虚拟化基本知识及virtio-net初探

 

QEMU/KVM是在Linux中被广泛使用的虚拟化技术之一,而virtio作为一个半虚拟化I/O事实上的标准[1],是QEMU/KVM在I/O虚拟化部分的默认实现。virtio-net是virtio标准中的网卡设备,被广泛应用。本文将会沿着虚拟化,virtio半虚拟化I/O,virtio-net的基本情况这条路线逐渐深入。

下面在第一节介绍虚拟化的基本知识和虚拟化IO的相关方法,在第二小节介绍引入virtio的必要性和其基本知识,在第三小节介绍virtio-net的相关内容

虚拟化基本知识

虚拟机已经悄然渗透到我们的生活中,随处可见。比如,申请云服务器的时候,我们申请到的机器就是一台虚拟机;在编写完服务端代码,部署我们的服务时,经常采用docker,kata等容器技术;再比如,我们可能需要VMware来创建一个隔离的环境来运行某些恶意的服务;亦或是自制了一个操作系统,但是又不想用硬件调试,那我们就可以用qemu来进行测试;甚至在新能源的车机上,都可能通过虚拟化技术运行着多套操作系统。看到这里,大家可能自然产生了一个疑问,这么多虚拟化的方法有什么异同,各自又有什么特点和适用场景呢?本节将会带领大家走进虚拟化,一窥虚拟化的基本知识,本小节内容和图片参考[2]、[3]、[8]。在深入之前,首先要确定什么是虚拟化。虚拟化的定义是指抽象和模拟计算机的硬件和软件的技术。计算机系统大概可以划分为四个层次:硬件、操作系统、库和用户程序,如下图所示:

而本节开始的描述的虚拟化场景中,都是抽象了这个结构中的某个层次,并为上层服务提供接口。

根据虚拟化层次的不同,我们可以将虚拟化技术划分为不同的种类:

  • 直接对硬件资源进行虚拟化,也叫做系统级虚拟化。是通过模拟和抽象硬件资源,来提供虚拟化的ISA接口。我们常用的VMware,Xen,qemu都是属于这个类型的。
  • 操作系统层次的虚拟化,也叫做轻量级虚拟化,进程虚拟化。操作系统本身就是对硬件的一种虚拟化,容器技术进一步通过namespace、Cgroups和overlayfs来提供对资源的隔离和限制,实现对操作系统的虚拟化。docker容器就是属于这个类型的。
  • 应用层程序运行环境的虚拟化。对API调用进行虚拟化,无论是通过语言运行时还是拦截调用进行转换,都可以实现对宿主机设备的中的API虚拟化的目标。JVM,Wine等技术就属于这个类型。

本文主要讨论系统级虚拟化,下面介绍系统虚拟化的基本知识。

系统虚拟化

首先介绍一下系统级虚拟化知识中会出现的相关名词

  • Guest OS:运行在虚拟机里面的操作系统
  • Host OS:Type-2架构下支持虚拟机运行的操作系统
  • VMM/Hypervisor:表示虚拟机资源管理器,是负责为虚拟机提供虚拟的硬件资源的,前者通常用于Type-2类型的虚拟机场景,后者通常用于Type-1类型的虚拟机场景
  • Type-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达坦科技DatenLord

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值