在上一篇中我们简单的说明了KVM虚拟化的概念,KVM的CPU虚拟化,内存虚拟化,这一篇我们主要谈一下IO设备的虚拟化。
这里我们有必要先来说明一下计算机中的IO设备有哪些,很多人以为IO设备就是键盘鼠标,打印机,U盘这些外置的设备是IO设备,这当然没错,不过根据传统意义上IO设备的定义是指一切在计算机中输入和输出的所有设备,这些设备还包括硬盘,显卡,声卡,网卡等,都属于IO设备的范畴。
KVM的虚拟化环境中,对IO设备的虚拟化有多种技术方案,如下:
1.全虚拟化 兼容性好,无硬件依赖,但是性能较差2.半虚拟化 型号较好,但是需要安装特定驱动,对旧系统的兼容性差3.硬件辅助虚拟化 性能很好,设备可以共享,是现在比较常用的虚拟化方案。
硬件辅助虚拟化在现在虽然比较常用,但是在实际的使用也存在一些问题,比如多用户使用同一设备,以及需要对系统进行改造,都增加了这种虚拟化的使用成本。
KVM中通过QEMU来模拟硬盘和一些网络设备。我们来看看系统中如何对虚拟设备进行访问: 1.发起IO操作时被KVM的内核捕获,处理后发送到IO共享页并通知QEMU; 2.QEMU获取IO交给硬件模拟代码模拟IO操作,并发送IO请求到底层硬件处理,处理结果返回到IO共享页; 3.然后通知IO捕获代码,返回结果。
KVM中的网络虚拟化:virtio-net
后端驱动由用户空间的QEMU提供,但网络协议栈处于内核中,如果通过内核空间来处理网络IO,可以减少了网络IO处理过程中的多次上下文切换,从而提高网络吞吐量与性能。所以,新的内核中提供vhost-net驱动,使前端网络驱动virtio-net的后端处理任务QEMU改到内核空间执行。
在KVM的IO设备虚拟化中还有一种设备直通的方法,可以将物理设备如:硬盘,网卡,USB设备等直接分配给用户,而不经过QEMU来做处理,比较常见的是使用在显卡的虚拟化上,由于有些虚拟化的环境中对显卡的需求比较高,就可以使用这种显卡直通的方式,就像使用本机的显卡一样。需要注意的是通过这种直通方式分配的硬件不能共享给多个用户使用,并且也不能动态迁移。
相关阅读:
云桌面系统详解一:什么是KVM?
作者:禹龙云 上传时间:2021-05-17 11:27:08
上一篇:<< 云桌面系统详解一:什么是KVM? | 下一篇:云计算和虚拟化常见术语解答 >>