KVM虚拟化技术 笔记(二)

半虚拟化驱动

KVM必须要求有硬件虚拟化辅助技术(Intel VT-x,AMD-V)的hypervisor

(QEMU提供了全虚拟化环境

缺点:每次I/O操作路径较长,有较多的VMentry,VMExit,需要多次上下文切换,也需要多次数据复制,性能较差。)

半虚拟化驱动virtio:利用物理机驱动批量处理虚拟机的I/O请求,效率高。


  1. linux中virtio驱动

内核已自带

CONFIG.*VIRTIO.*=m  #内核编译配置文件与virtio有关的

编译好内核后,查看驱动

# find /lib/modules/2.6.32-279.el6.x86_64/ -name "virtio*.ko"

会显示一些virtio_net.ko virtio_pci.ko virt-ring.ko

查看已加载的

# lsmod|grep virtio

2.安装windows中的virtio驱动

# yum install virto-win

安装后可看到/usr/share/virtio-win/目录下有一个virtio-win.iso文件。

启动win7客户机,

#qemu-system-x86_64 win7.img -smp 2 -m 2048 -cdrom /usr/share/virti-win/virtio-win.iso -vnc :0 -usbdevice tablet

然后进入win7,安装驱动

安装后使用virtio驱动后重新启动


使用virtio_balloon

系统运行时改变内存大小

启动virtio_balloon

编译内核时选项 CONFIG_VIRTIO_BALLOON=m

操作步骤

1)启动客户机

# qemu-system-x86_64 rhel6u3.img -smp2 -m 2048-balloon virtio

2)在客户机中查看内存使用情况

# lspci

查看是否加载驱动

# lspci -s 00:04.0 -v|grep virtio-pci

# free -m

3)在qemu monitor 中查看和改变客户机占用的内存

(qemu) info balloon

balloon:actual=2048

(qemu) balloon 512

(qemu)info balloon

balloon: actual=512

-----

KVM动态调整内存工具:virsh setmem <domain-id or domain-name><Amount of memory in KB>



设备直接分配(VT-d)

VT-d

1)Emulated device :QEMU纯软件模拟设备

2) Virtio device :实现VIRTIO API的半虚拟化驱动的设备

3) PCI device assignment: PCI 设备直接分配

VT-D不需要与Hypervisor(KVM)参与,极大的提高IO性能。

需要硬件支持 VT-D

配置:

1)打开主板VT-D选项

2)编译配置,REDHAT6.3+默认

启动系统后

# dmesg | grep DMAR -i

# dmesg | grep IOMMU -i # 如未打开 那么在内核配置文件中CONFIG_PCI_STUB=m

3)在宿主机中隐藏设备

# modprobe pci_stub

# lsmod | grep stub

ls /sys/bus/pci/drivers/pci-stub/

都有显示回复即可

查看设备的vendorID deviceID 

# lspci -Dn -s 08:00:00

-D domain,-n 用数字显示ID,-s

绑定设备到pci_stub驱动

echo -n "8086 10b9" > /sys/bus/pci/drivers/pci-stub/new_id

echo 0000:08:00.0 > /sys/bus/pci/devices/0000:08:00.0/driver/unbind

echo 0000:08:00.0 > /sys/bus/pci/drivers/pci-stub/bind

# lspci -k -s 08:00.0

设备驱动是intel的e1000e,绑定后为pci_stub


你可能感兴趣的:(KVM虚拟化技术 笔记(二))