virtio驱动分析之libvirt层的参数配置

libvirt虚拟化技术介绍 一、libvirt简介 libvirt是目前使用最为广泛的对kvm虚拟机进行管理的工具和应用程序接口,而且一些常用的虚拟机管理工具(如virsh,virt-install,virt-manager等)和云计算框架平台(QpenStack,OpenNebula,Eucalyptus等)都在底层使用libvirt的应用程序接口。 尽管libvirt项目最初是为Xen支持也是非常得好,libvirt支持多种虚拟化方案,即支持包括KVM,QEMU,Xen,VMware,VirtualBox等在内的平台虚拟化方案 阅读详情

 一直在研究kvm的para-virtualization driver - virtio,可能是太熟的原因吧,今天突然发现不知道咋在libvirt层配置kvm采用virtio驱动了,问题在于,看到下面这个配置文件,我竟不能确定此配置是否是采用了virtio驱动,先来看下配置文件的virtio相关的部分:

  1. <disk type='file' device='disk'>
  2.     <source file='/data0/0/21/disk.0'/>
  3.     <target dev='vda'/>
  4.     <driver name='qemu' type='qcow2' cache='default'/>
  5. </disk>

     于是,我就google一个网上的采用virtio驱动的配置文件:

  1. <disk type='file' device='disk'>
  2.             <driver name='qemu' cache='none'/>
  3.             <source file='/opt/images/win7.img'/>
  4.             <target dev='vda' bus='virtio'/>
  5.           </disk>
    然后,问题就更多了:

   (1)是不是在target item中增加bus='virtio'就说明采用了virtio驱动

   (2)google的这个例子的image文件win7.img是什么格式的,我的例子可以从driver item的type参数看出是qcow2,google的例子怎么看出来?(可能有人会说,可以通过file命令来查看),但是这并不符合我的风格,写个配置文件必须能解决所有疑问才行,要file下才知道啥意思,那只能说这个配置文件写的太失败了。

    带着以上问题,我阅读了下libvirt documents,下了如下总结。

1. <disk/>配置项说明

    disk常用的配置参数:type,device,snapshot等

(1)type属性可以设置为:file,block,dir,network等值,这主要取决于底层的实现

(2)device属性用来表示Guest OS看来,disk表现为什么类型的设备,其值为:floppy,disk,cdrom,lun等,默认值为disk

(3)snapshot属性用来描述与磁盘快照相关的功能时的一些默认的行为:

  • snapshot='internal',表示snapshot与data存储在同一个文件中,比如一个qcow2文件,即镜像和数据是一体的,没有单独的snapshot文件
  • snapshot='external',表示镜像文件和data分离存储,即有单独的snapshot文件
  • snapshot='no',表示禁止disk的snapshot的功能

      read-only的disk不支持快照的功能,另外,这些属性是否生效还要取决于hypervisor。

2. <source/> 说明

   source常用的配置参数:dev,file,dir,protocol等,如果disk的type='file',那么source的file属性指向image文件的完整路径;如果disk的type='block',那么source的dev属性指向host上的某个设备,如/dev/sdb;如果disk的type='dir',那么source的dir指向host上的某一个目录,此目录用来做vm的镜像;如果disk的type='network',那么source的protocol参数,该参数用来指定访问remote image的协议,其值可以为:nbd,rbd,sheepdog或gluster,此时,另外一个mandatory属性必须设置为remote端的哪一个volume/image将被使用

(1)file attribute

  1. <disk type='file' device='disk'>
  2.             <driver name='qemu' type='qcow2'/>
  3.             <source file='/data2/vms/ubuntu.qcow2'/>
  4.             <target dev='vda' bus='virtio'/>
  5.         </disk>

(2)dev attribute

  1. <disk type='block' device='lun'>
  2.       <driver name='qemu' type='raw'/>
  3.       <source dev='/dev/sda'/>
  4.       <target dev='sda' bus='scsi'/>
  5.       <address type='drive' controller='0' bus='0' target='3' unit='0'/>
  6.     </disk>

(3)dir attribute (use a directory as floppy)

  1. <disk type='dir' device='floppy'>
  2.           <source dir='/tmp/test'/>
  3.           <target dev='fda' bus='fdc'/>
  4.           <readonly/>
  5.         </disk>

(4)protocol attribute

  1. <disk type='network'>
  2.       <driver name="qemu" type="raw" io="threads" ioeventfd="on" event_idx="off"/>
  3.       <source protocol="sheepdog" name="image_name">
  4.         <host name="hostname" port="7000"/>
  5.       </source>
  6.       <target dev="hdb" bus="ide"/>
  7.       <boot order='1'/>
  8.       <transient/>
  9.       <address type='drive' controller='0' bus='1' unit='0'/>
  10.     </disk>

3. <target/> 说明

   target item用来说明disk所挂载的总线的类型,此总线是guest os中看到的总线类型,比如从guest os中看到的硬盘是ide还是scsi的,这取决于设备挂载的总线。 target常用的attribute有:dev和bus.

(1) dev attribute

  disk设备的logical name,比方说:hdx,sdx,vdx等

(2) bus attribute

  此用来描述仿真的设备的类型,其值可以为:ide,scsi,virtio,xen,usb,sata等,此attribute value可以通过dev的value来推断 出来,如果dev='hdb',那么bus='ide';如果dev='vda',那么bus='virtio'

4. <driver/>说明

  this item更详细的描述了hypervisor为disk提供的driver,其common used attribute包括:name,type,cache等

(1)name attribute

    对于kvm来说,name has an unique value - 'qemu',xen可以支持很多值,不错详细介绍。

(2)type attribute

   kvm支持raw,qcow2,qed,bochs等多种镜像格式,不同的镜像格式对应着不同的驱动类型。另外,kvm是目前支持的镜像格式最全的一种hypervisor。

(3)cache attribute

   cache控制着guest os对disk的cache机制,cache的方式有:default,none,writethrough,writeback,directsync,unsafe等,cache的类型影响着guest os的性能,所以需要根据实际应用场景来选择,比较常用的类型为:none,writethrough,writeback.

   至于三种cache的区别和原理,请参见《kvm 存储栈分析 》一文!

   至此,virtio的问题已经解决!感觉以后必须随时做好笔记,加深对某些问题的理解,要不然时间已久就全忘了。

   在下面的文章中将会详细的分析virtio驱动框架及其原理,希望有兴趣的同学一起讨论学习!

IO虚拟化——virtio 原理 1. 为什么是 virtio 2. virtio 的架构 3. virtio 数据流交互机制 4. 总结 virtio 是一种 I/O 半虚拟化解决方案,是一套通用 I/O 设备虚拟化的程序,是对半虚拟化 Hypervisor 中的一组通用 I/O 设备的抽象。提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware等)之间的通信框架和编程接口,减少跨平台所带... 阅读详情

相关推荐

Libvirt初探和创建虚拟机

Libvirt初探和创建虚拟机Libvirt初探Libvirt配置文件Libvirt的使用创建虚拟机 Libvirt初探 Libvirt配置文件 libvirt相关的配置的配置文件一般存放在安装目录的 /etc/libvirt/ 目录之中,如果是默认安装路径,配置文件路径如下: [root@localhost ~]# cd /usr/local/etc/libvirt/ [root@localho...

sukysun的博客 2824

libvirt详解

**提要:**虚拟云实现的三部曲:虚拟化技术实现–>虚拟机管理–>集群资源管理(云管理)。 libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。 1、什么是libvirt Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。位于虚拟机和云管理中间的一个抽象管理层。它包括一个API库,一个守护程序(libv

weixin_42752248的博客 1万+

IO半虚拟化-Virtio学习笔记

IO半虚拟化-virtio学习笔记

qq_42824983的博客 1750

虚拟化技术 — Libvirt 异构虚拟化管理组件

IP 地址伪装规则,使得 VMs 可以使用 Host 的 IP 地址访问外部网络,但外部网络无法主动访问到 VMs,因为 VMs 对于外部网络而言是不可见的。随着循环次数的增加,所需要复制的 dirty pages 就会明显减少,而复制所耗费的时间就会逐渐变短,那么内存就有可能没有足够的时间发生变化。在 Tunnel 传输模式下,同一份数据需要被拷贝多次,并且所有的流量都通过一个端口,在大内存、高业务(快速增加 RAM 脏数据)的场景下,同样的网络带宽,Tunnel 传输模式迁移速率较慢。

烟云的计算 4133

Libvirt中windows虚拟机的动态内存管理

Libvirt支持对虚拟机进行内存动态扩展,但是windows虚拟机首先需要安装virtio-win驱动。

Lain 3234

PRPD图谱分析从入门到精通:5种典型放电模式的识别手册

本文详细解析PRPD图谱分析技术,重点介绍电晕放电、悬浮放电等5种典型放电模式的识别方法。通过37组真实案例对比,提供关键识别区和诊断流程图模板,帮助工程师快速掌握变电站设备状态监测的核心技能,提升绝缘缺陷诊断准确率。

weixin_29214199的博客 467

windows2008安装virtio驱动用于libvirt监控

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34008805的博客 1664

手把手教你用STM32实现三相永磁同步电机FOC控制(附代码)

本文详细介绍了基于STM32的三相永磁同步电机(PMSM)FOC控制实现方法,涵盖硬件设计、软件架构、参数调试及完整代码解析。通过磁场定向控制(FOC)算法,实现高效精准的电机控制,适用于工业自动化、电动汽车等领域。文章还提供了硬件选型建议、电流采样方案对比及PID参数整定技巧,助力开发者快速掌握FOC控制技术。

weixin_29168675的博客 96

一文读懂Virtio-mem

virtio-mem介绍

qq_39106559的博客 2233

AI原生应用架构师指南:系统化思维框架解析

随着ChatGPT、Stable Diffusion等AI技术的普及,「AI原生应用」(AI-Native Application)已从概念走向实践。传统应用以「功能逻辑」为核心(比如用代码写死的购物车规则),而AI原生应用以「数据+模型」为核心(比如根据用户行为动态推荐商品)。本文的目的是为架构师提供一套系统化思维框架如何区分「伪AI应用」和「真AI原生应用」?数据、模型、业务场景三者如何协同设计?架构师需要关注哪些关键技术节点?如何避免「为了AI而AI」的陷阱?

AI Python 编程之道的博客 491

[QMT量化交易小白入门]-四、如何筛选优质可转债,并进行下单操作

通过上述步骤,成功地使用Python代码完成了可转债的筛选、数据处理和下单操作。当然,这只是一个基础的示例,实际投资中还需要考虑更多因素,如市场环境、资金管理、风险控制等。希望本文能为各位投资者提供一些有价值的参考,助力大家在投资道路上走得更远。

木头大左的博客 1732

3个关键步骤彻底解决virtio-win Windows虚拟化驱动安装问题

virtio-win项目为KVM/QEMU虚拟化环境提供完整的Windows半虚拟化驱动支持,涵盖磁盘、网络、显卡、输入设备等关键硬件组件。这个开源驱动套件对于在Linux虚拟化平台上运行Windows虚拟机至关重要,能显著提升I/O性能和系统响应速度。然而在实际部署中,许多系统管理员和技术决策者面临驱动安装失败、兼容性问题等挑战,本文将通过深度技术分析提供专业解决方案。 ## 🔍 问题诊断:

gitblog_00771的博客 1072

从0开始图形学(光栅化)

从0开始图形学

A112459的专栏 2395

Win2003虚拟机virtio驱动的安装

Win2003虚拟机virtio驱动的安装 安装目的:增加拷贝大文件的速度,同时解决拷贝时卡的问题。 安装环境:在物理服务器已经配置好kvm+qemu+libvirt的虚拟环境,并制作好win2003虚拟机。 安装内容:virtio磁盘驱动、virtio网卡驱动 驱动文件:virtio-win-1.1.16.iso 前提条件:必须先制作好普通驱动的win2003虚机,能正常启动虚机,正常进入该系统进行操作。 Win2003虚机相关文件:/home/win2003.img...

rxwoffice的博客 904

【CT/电镜 重建教程 1.1】层析成像的精确实空间迭代重建算法(RESIRE)

在此,我们报告了RESIRE算法的发展用于准确的断层重建。与实空间迭代算法相比,RESIRE使用傅里叶切片定理或Radon变换作为正向投影,使用线性变换作为反向投影,两者都具有高精度。与EST和GENFIRE相比,RESIRE是一种实空间迭代算法,可以在并行计算中实现快速运行时间。

2401_87064292的博客 1062

基于机器学习的电视剧类型点击量数据分析研究

1. 背景介绍 1.1 流媒体平台的兴起与电视剧市场的繁荣 近年来,随着互联网技术的飞速发展,流媒体平台如Netflix、Disney+、腾讯视频等迅速崛起,成为人们观看影视内容的主要渠道。电视剧作为流媒体平台上的重要内容类型,其点击量数据蕴含着丰富的用户偏好和市场趋势信息。

AI天才研究院 1050

如何高效构建VirtIO Windows驱动RPM包:5步解决虚拟化驱动分发难题

你是否在为Windows虚拟机部署VirtIO驱动而烦恼?手动管理数十个驱动文件、处理不同Windows版本兼容性、构建标准化安装介质,这些繁琐的工作是否消耗了你大量时间?virtio-win-pkg-scripts项目正是为解决这些痛点而生,它提供了一套完整的自动化工具链,将复杂的驱动打包过程简化为几个简单步骤。 **virtio-win-pkg-scripts**是专门用于打包VirtIO

gitblog_00048的博客 820

基于通义千问2.5-7B-Instruct的技术深度解析

通义千问2.5-7B-Instruct是一个基于Transformer架构的大型语言模型,具有70亿参数。它通过自注意力机制和前馈神经网络处理输入序列,能够捕捉长距离依赖关系,适用于多种NLP任务。微调是指在预训练模型的基础上,使用特定任务的数据进行进一步训练,以使模型更好地适应特定任务。微调可以显著提高模型在特定任务上的性能。通义千问2.5-7B-Instruct是一个强大的语言模型,适用于多种NLP任务。通过深入理解其架构、微调方法和核心代码,可以更好地应用于实际场景。

zhangjiaofa的专栏 1569

kvm-qemu-libvirt-virtio的理解

virtio 是一种 I/O 半虚拟化解决方案,是一套通用 I/O 设备虚拟化的程序,是对半虚拟化 Hypervisor 中的一组通用 I/O 设备的抽象。提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware等)之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率。#在完全虚拟化的解决方案中,guest VM 要使用底层 host 资源,需要 Hypervisor 来截获所有的请求指令,然后模拟出这些指令的行为,这样势必会带来很多性能上的开销。

lingshengxiyou的博客 351

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

利用libvirt给虚拟机添加virtio磁盘驱动

虚拟机启动时候默认是没有virtio驱动的(默认为ide)。 默认disk的xml文件如下 <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/home/remote_iso/vm3.qcow2'/> <target dev='hda' bus

Jason_Linux 5037

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

virtio-win Windows虚拟化驱动深度解析:技术实现与兼容性优化实践

在现代化的虚拟化环境中,Windows作为主流的企业级操作系统,其性能表现直接影响到虚拟化平台的用户体验和业务效率。传统模拟设备的性能瓶颈催生了半虚拟化技术的快速发展,而virtio-win项目正是这一技术演进的核心产物。该项目为KVM/QEMU虚拟化平台提供了完整的Windows半虚拟化驱动套件,涵盖网络、存储、显示、输入输出等关键硬件组件。 然而,在实际部署过程中,技术团队经常面临驱动兼容性

gitblog_00094的博客 677

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

libvirt中使用 virtio 总线类型

采用virtio的目的是提高虚拟机的性能,KVM在I/O虚拟化方面,传统的方式是使用QEMU纯软件的方式来模拟I/O设备(模拟的网卡、磁盘、显卡等等),其效率并不非常高。在KVM中,可以在客户机中使用半虚拟化驱动(Paravirtualized Drivers,PV Drivers)来提高客户机的性能(特别是I/O性能)。目前,KVM中实现半虚拟化驱动的方式是采用了virtio这个Linux上

chenyulancn的专栏 4883

how to configure libvirt to use virtio with KVM guests

Contents [hide] 1 Virtio 1.1 Requirements1.2 Network driver1.3 Disk (block) device driver1.4 External links [edit] Virtio So-called "full virtualization" is a nice feature because

sdulibh的专栏 1244

virtio-win虚拟化驱动兼容性问题深度解析与优化方案

virtio-win项目为KVM/QEMU虚拟化环境提供了全面的Windows半虚拟化驱动支持,包括网络、存储、输入设备等关键组件。在实际生产环境中,驱动兼容性问题常常成为影响虚拟化平台稳定性的关键因素,本文通过场景分析、问题定位、解决方案和技术验证四个维度,深入探讨虚拟化驱动兼容性问题的根本原因与优化策略。 ## 场景分析:虚拟化环境中的驱动兼容性挑战 在基于KVM/QEMU的虚拟化平台中,

gitblog_00181的博客 396
上一篇: linux断电后,出现fsck失败的解决方法
下一篇: 采用eclipse + gdb来搭建调试qemu源码的环境
刘军卫
博客等级 码龄19年 1143粉丝 245原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值