Linux有问必答:如何在虚拟机上配置PCI直通

提问:我想要分配一块物理网卡到用KVM创建的虚拟机上。我打算为这台虚拟机启用网卡的PCI直通。请问,我如何才能在virt-manager里面通过PCI直通方式来增加一个PCI设备到虚拟机上?

如今的hypervisor能够高效地在多个虚拟操作系统间共享和模拟硬件资源。然而,虚拟资源共享不是总能使人满意,甚至在虚拟机性能是重点考量时,或者是虚拟机需要硬件DMA的完全控制时,应该避免共享。一项名叫“PCI直通”的技术可以用在一个虚拟机需要独享PCI设备时(例如:网卡、声卡、显卡)。本质上,PCI直通穿透了虚拟层,直接将PCI设备放到虚拟机里,而其他虚拟机则不能访问该设备。

开启“PCI直通”的准备

如果你想要为一台HVM实例开启PCI直通(例如,一台KVM创建的全虚拟化的虚拟机),你的母系统(包括CPU和主板)必须满足以下条件。如果你的虚拟机是半虚拟化的(由Xen创建),你可以跳过这步。

为了在 HVM虚拟机上开启PCI直通,系统需要支持VT-d (Intel处理器)或者AMD-Vi (AMD处理器)。Intel的VT-D(“英特尔直接I/O虚拟化技术”)是适用于最高端的Nehalem处理器和它的后继者(例如,Westmere、Sandy Bridge的,Ivy Bridge)。注意:VT-d和VT-x是两个独立功能。intel/AMD处理器支持VT-D/AMD-VI功能的列表可以查看这里

在确认你的设备支持VT-d/AMD-Vi后,还有两件事情需要做。首先,确保VT-d/AMD-Vi已经在BIOS中开启。然后,在内核启动过程中开启IOMMU。IOMMU服务,是由VT-d/AMD-Vi提供的,可以保护虚拟机访问的主机内存,同时它也是全虚拟化虚拟机支持PCI直通的前提。

Intel处理器中,通过将“intel_iommu=on传给内核启动参数来开启IOMMU。参看这篇教程了解如何通过GRUB修改内核启动参数。

配置完启动参数后,重启电脑。

添加PCI设备到虚拟机

我们已经完成了开启PCI直通的准备。事实上,只需通过virt-manager就可以给虚拟机分配一个PCI设备。

打开virt-manager的虚拟机设置,在左边工具栏点击‘增加硬件’按钮。

选择从PCI设备表一个PCI设备来分配,点击“完成”按钮

最后,启动实例。这样,主机的PCI设备已经可以由虚拟机直接访问了。

常见问题

在虚拟机启动时,如果你看见下列任何一个错误,这个错误有可能由于母机VT-d (或 IOMMU)未开启导致。


  1. Error starting domain: unsupported configuration: host doesn't support passthrough of host PCI devices


  1. Error starting domain: Unable to read from monitor: Connection reset by peer

请确保"intel_iommu=on"启动参数已经按上文叙述开启。

原文发布时间为:2015-06-05

本文来自合作伙伴“Linux中国”

时间: 2024-08-26 23:18:21

Linux有问必答:如何在虚拟机上配置PCI直通的相关文章

linux系统问题,虚拟机上的linux上网问题

问题描述 linux系统问题,虚拟机上的linux上网问题 电脑win7,ip为192.168.200.102 虚拟机虚拟网卡 vm8:192.168.204.1 linux系统 ip: 192.168.204.3 网关设置无问题,上网方式为NAT,为什么我的win7可以ping通虚拟机网卡和linux, 但是linux系统只能ping通虚拟机网卡,ping不通win7的ip? 解决方案 windows,跟Linux机器之间互通本来就支持不够好,ping不同很正常,看能不能互相访问文件等 解决方

Linux系统下Apache虚拟主机配置的步骤

说明: Apache版本:httpd-2.2.31 Apache安装目录:/usr/local/apache 目的: 配置Apache虚拟主机 具体操作: 1.修改Apache主配置文件 cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf-bak #修改之前先备份 vi /usr/local/apache/conf/httpd.conf #修改 找到# Virtual hosts这一行,添加以下两行: In

Python脚本判断 Linux 是否运行在虚拟机上_python

在 WebHostingTalk 论坛上有些国外奸商会把虚拟机当作独立服务器卖,去年7月份的时候就有一位中国同胞上当受骗,并在 WHT 上发帖声讨,证据确凿,甚至连服务商自己也承认,回帖达355篇.这家独立服务器/VPS 提供商 HostATree.com 居然大胆的把 OpenVZ VPS 这种一看就知道是虚拟机的虚拟机当作独立服务器卖,晕,至少也要弄个 VMWare/KVM/Xen HVM 吧(更难发现是虚拟机),用 OpenVZ 这种容器也太欺负人了:)昨天恰好收到网友一封邮件问到了如何判

Linux有问必答:如何在VMware ESXi虚拟机上设置静态MAC地址

Linux有问必答:如何在VMware ESXi虚拟机上设置静态MAC地址 问题:我想给VMware ESXi上的一台虚拟机分配一个静态的MAC地址.然而当我开始这么做的时候,虚拟机就不能启动了,并且抛出了一个这样一个错误"00:0c:29:1f:4a:ab is not an allowed static Ethernet address. It conflicts with VMware reserved MACs"(00:0c:29:1f:4a:ab不是一个合法的静态以太网地址.

服务器-win7网页上访问不到虚拟机上linux的ip

问题描述 win7网页上访问不到虚拟机上linux的ip 上图是linux虚拟机的网卡配置,下图是ipconfig 我想在win7下的浏览器上通过ip访问linux的服务器但是说找不到,通过ftp来打开也说找不到,不能正常连接,请问大神我这网络配置出什么问题了 解决方案 1.查看虚拟网卡是否被禁用了(如果被禁用就打开) 2.连接网络-->选择桥接 3.重启linux 4.关闭防火墙, ---->命令: service iptables stop 5.查看linux的ip ----> 命令

Linux 有问必答:如何在 Ubuntu 上配置网桥

Linux 有问必答:如何在 Ubuntu 上配置网桥 Question: 我需要在我的Ubuntu主机上建立一个Linux网桥,共享一个网卡给其他一些虚拟主机或在主机上创建的容器.我目前正在Ubuntu上使用网络管理器(Network Manager),所以最好>能使用网络管理器来配置一个网桥.我该怎么做? 网桥是一个硬件装备,用来将两个或多个数据链路层(OSI七层模型中第二层)互联,以使得不同网段上的网络设备可以互相访问.当你想要互联一个主机里的多个虚拟机器或者以太接口时,就需要在Linux

linux操作系统-为什么在Win7下无法通过Samba连接到本机虚拟机上的Linux系统?

问题描述 为什么在Win7下无法通过Samba连接到本机虚拟机上的Linux系统? Linux装的是Red Hat 5,并且已经做了关于Samba的正确配置,添加了用户并修改了密码,samba服务也已经启动!在win7可以通过ping命令ping通linux系统,同样使用SecureCRT工具也可以连接到linux系统,但使用Samba就是连不上,系统提示Windows无法访问,求各位高手给予指点,不甚感激! 解决方案 我想问你samba你咋安装的...我的6.0的只有samba-winbind

虚拟机上的linux系统挂载u盘并复制文件【图文教程】

我们的虚拟机中操作系统是无图形界面 的CentOs 在没有配置网络的情况下,现在需要把文件复制到虚拟机上的linux系统上面,我这里就使用了u盘挂载的方式,获得了U盘中的文件. 1.虚拟机VMware中设置USB的属性 编辑虚拟中系统信息 USB的三个信息必须全部勾选 2.开启VMware的USB服务 记得查看一下是否开启改USB服务(没注意,坑了好久才查找原因),我的电脑右键->管理->服务和应用程序 ->VMware USB Arbitration Service右键->开启服

Linux下vsftp的重新安装和配置虚拟用户

Linux下vsftp的重新安装和配置虚拟用户 重新安装和配置虚拟用户 以下都是在root用户下进行的 #tar zxvf vsftpd-2.0.5.tar.gz --解压 #cd vsftpd-2.0.5.tar.gz --解压后进入vsftpd-2.0.5.tar.gz目录 # mkdir /usr/share/empty/ --VSFTPD默认设置需要一个空目录:/usr/share/empty # mkdir /var/ftp/ --如果容许匿名用户(anonymous),那么你将需要一