创建网桥:
brctl addbr brw0 && brctl addif brw0 enp5s0f1 && ifconfig brw0 192.168.151.225/24 && ifconfig enp5s0f1 0.0.0.0
echo 1 > /proc/sys/net/ipv4/ip_forward
创建虚拟机镜像:
qemu-img create -f qcow2 win7_1_100g.qcow2 100G
安装win7虚拟机系统
virt-install --name win1 \ | 虚拟机名称 |
--boot cdrom,menu=on \ | 设置启动选项 |
=--os-type=windows \ | 设置虚拟机类型 |
--cpu host \ | 使用host CPU特性 |
--ram 12288 \ | 给虚拟机配置12G内存 |
--vcpus=10 \ | 给虚拟机配置10个cores |
--accelerate \ | 设置加速特性 |
--cdrom=/disk2/win7_pro_sp1_x64.iso \ | 设置安装的光盘源 |
--disk path=/disk2/virtio-win-0.1.102_amd64.vfd,device=floppy \ | 设置软盘安装磁盘驱动viostor,否则虚拟机无法找到硬盘。驱动加载也可以使用virsh attach-disk在安装的过程中动态加载,win7的驱动最好使用0.1.102的版本,其它版本测试无法使用 |
--disk path=/disk1/kvm/win7_1_100g.qcow2,format=qcow2,bus=virtio \ | 设置虚拟机磁盘镜像 |
=--bridge=brw0,model=virtio \ | 设置虚拟机的虚拟网口 |
--mac=00:3e:a8:01:11:30 \ | 设置虚拟网口的MAC地址 |
=--hostdev=pci_0000_03_00_1 \ | 设置虚拟机通过PCI passthrough获取一个PCIE网卡(HOSTDEV是随着libvirt使用的一个节点设备名(具体设备如’virsh nodedev-list’的显示的结果)) |
--vnc --vncport=9901 --vnclisten=192.168.151.225 | 设置连接的VNC地址 |
重新启动一个窗口动态加载ISO镜像:
virsh attach-disk win1 /disk2/virtio-win-0.1.102-2.iso hda --type cdrom --mode readonly //动态加载该ISO会自动卸载win7的ISO,因此使用该方法加载virtio-win-0.1.102-2.iso之后安装成功viostor驱动之后还要执行下面的命令,再次加载win7的iso镜像。
virsh attach-disk win1 /disk2/win7_pro_sp1_x64.iso hda --type cdrom --mode readonly //动态加载win7的ISO镜像
系统安装完成以后需要加载virtio-win-0.1.102-2.iso安装网络驱动:NetKVM,网络通了以后就可以随意安装软件了。
虚拟机的克隆
virt-clone \ | |
--original win1 \ | 已有虚拟机的名称 |
--name win2 \ | 新克隆虚拟机的名称 |
--file /disk1/kvm/win7_2_100g.qcow2 \ | 新克隆虚拟机的镜像 |
--mac 00:1e:a8:01:11:31 \ | 新克隆虚拟机的虚拟网口MAC地址 |
--auto-clone |
克隆以后的虚拟机需要编辑相应的xml文件:vi /etc/libvirt/qemu/win2.xml
修改VNC端口信息
<graphics type='vnc' port='9901' autoport='no' listen='192.168.151.225'>
<listen type='address' address='192.168.151.225'/>
</graphics>
修改pass through的PCIE网卡地址
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</hostdev>
修改CPU拓扑(这里直接将Host CPU传递给虚拟机使用,win7默认只能识别到两个socket):
<cpu mode='host-passthrough'>
<topology sockets='2' cores='5' threads='1'/>
</cpu>
修改完XML文件以后需要使用define让其生效:virsh define /etc/libvirt/qemu/win2.xml
修改windows系统账户名和密码
拉起虚拟机win1:virsh start win1
设置虚拟机自动启动
virsh autostart win1
virsh autostart win2