Centos7.4安装kvm虚拟机
之前介绍了使用WebVirtMgr或Openstack来部署及管理kvm虚拟机,下面简单介绍centos7.4下使用virt-manager部署及管理kvm虚拟机的做法:
KVM和QEMU的关系
QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT)
, AMD SVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了
另一个独立的虚拟化解决方案:KVM+QEMU。
python-virtinst 创建虚拟机所需要的命令行工具和程序库
virt-manager GUI虚拟机管理工具
virt-
top
虚拟机统计命令
virt-viewer GUI连接程序,连接到已配置好的虚拟机
libvirt C语言工具包,提供libvirt服务
libvirt-client 虚拟客户机提供的C语言工具包
virt-
install
基于libvirt服务的虚拟机创建命令
bridge-utils 创建和管理桥接设备的工具
2)确保BIOS里开启虚拟化功能,即查看是否加载KVM模块
[root@kevin ~]
# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
=========================================================
如果没有加载,运行以下命令:
[root@kevin ~]
# modprobe kvm
[root@kevin ~]
# modprobe kvm-intel
[root@kevin ~]
# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
=========================================================
内核模块导出了一个名为
/dev/kvm
的设备,这个设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间。
[root@kevin ~]
# ll /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 1月 29 11:56
/dev/kvm
3)桥接网络
如果没有brctl命令(用来管理网桥的工具),则需要安装bridge-utils ,
[root@kevin ~]
# yum -y install bridge-utils
[root@kevin ~]
# systemctl restart network
配置KVM的网桥模式
[root@kevin ~]
# cd /etc/sysconfig/network-scripts/
[root@openstack network-scripts]
# cp ifcfg-eno1 ifcfg-br0
[root@openstack network-scripts]
# cat ifcfg-br0
TYPE=
"Bridge"
//
这一行修改为Bridge
PROXY_METHOD=
"none"
BROWSER_ONLY=
"no"
BOOTPROTO=
"none"
DEFROUTE=
"yes"
IPV4_FAILURE_FATAL=
"no"
IPV6INIT=
"no"
IPV6_AUTOCONF=
"yes"
IPV6_DEFROUTE=
"yes"
IPV6_FAILURE_FATAL=
"no"
IPV6_ADDR_GEN_MODE=
"stable-privacy"
NAME=
"br0"
//
修改设备名称为br0
#UUID="fdbad04f-dae3-440e-8a8b-01d6a7bc9fe0" //这一行注释
DEVICE=
"br0"
//
修改设备为br0
ONBOOT=
"yes"
IPADDR=
"192.168.10.210"
PREFIX=
"24"
GATEWAY=
"192.168.10.1"
DNS1=
"8.8.8.8"
[root@openstack network-scripts]
# cat ifcfg-eno1
TYPE=
"Ethernet"
BRIDGE=br0
//
添加这一行
PROXY_METHOD=
"none"
BROWSER_ONLY=
"no"
BOOTPROTO=
"none"
DEFROUTE=
"yes"
IPV4_FAILURE_FATAL=
"no"
IPV6INIT=
"no"
IPV6_AUTOCONF=
"yes"
IPV6_DEFROUTE=
"yes"
IPV6_FAILURE_FATAL=
"no"
IPV6_ADDR_GEN_MODE=
"stable-privacy"
NAME=
"eno1"
UUID=
"fdbad04f-dae3-440e-8a8b-01d6a7bc9fe0"
DEVICE=
"eno1"
ONBOOT=
"yes"
#IPADDR="192.168.10.210" //注释掉这几行
#PREFIX="24"
#GATEWAY="192.168.10.1"
#DNS1="8.8.8.8"
重启网卡服务
[root@openstack network-scripts]
# systemctl restart network
查看网卡
[root@openstack network-scripts]
# brctl show
bridge name bridge
id
STP enabled interfaces
br0 8000.0894ef518b22 no eno1
virbr0 8000.52540095d7c2
yes
virbr0-nic
查看ip信息
[root@openstack network-scripts]
# ifconfig |head -20
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.210 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::a94:efff:fe51:8b22 prefixlen 64 scopeid 0x20<link>
ether 08:94:ef:51:8b:22 txqueuelen 1000 (Ethernet)
RX packets 856 bytes 52981 (51.7 KiB)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 120 bytes 23450 (22.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 08:94:ef:51:8b:22 txqueuelen 1000 (Ethernet)
RX packets 10077 bytes 793083 (774.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1184 bytes 228415 (223.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16
eno2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 08:94:ef:51:8b:23 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
[root@openstack network-scripts]
# ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55
time
=2.08 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55
time
=1.80 ms
........
4)安装libvirt及kvm
libvirt是管理虚拟机的API库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机。
[root@kevin ~]
# yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64 libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64
libvirt-java.noarch libvirt-python.x86_64 libiscsi-1.7.0-5.el6.x86_64 dbus-devel virt-clone tunctl virt-manager libvirt libvirt-python python-virtinst
由于要用virt-manager图形化安装虚拟机,所以还需要安装X-window(这个在前面部署VNC环境里就已经安装了)
[root@kevin ~]
# yum groupinstall "X Window System"
安装中文字符,解决界面乱码问题
[root@kevin ~]
# yum install -y dejavu-lgc-sans-fonts
[root@kevin ~]
# yum groupinstall -y "Fonts"
启用libvirt
[root@kevin ~]
# systemctl enable libvirtd
[root@kevin ~]
# systemctl start libvirtd
test-win2008.xml
[root@openstack qemu]
# cp test-win2008.xml /opt/
[root@openstack qemu]
# vim test-win2008.xml //在<devices>标签中添加下面这段配置
<devices>
......
<input
type
=
'tablet'
bus=
'usb'
/>
//
即添加这句话即可!
......
<
/devices
>
[root@openstack qemu]
# virsh define /etc/libvirt/qemu/test-win2008.xml
定义域
test
-win2008(从
/etc/libvirt/qemu/test-win2008
.xml)
然后重启虚拟机后,发现虚拟机中的鼠标就会好事了,打开VNC查看虚拟机界面后默认情况下虚拟机中的鼠标指针和实体机的鼠标指针就是重合的,且两者运动速度也是同步的,
这下就彻底解决了鼠标指针漂移/不同步的情况了!
"重定向USB设备(R)"。(特别注意:如下选择将usb设备挂载到虚拟机上后,不要关闭这个挂载界面,否则usb挂载动作就会结束!)
查看虚拟机,发现指定的USB设备已经挂载到该虚拟机上了!
如果要卸载该虚拟机上挂载的这个USB设备,即在"重定向设备usb(R)"里将这个USB设备去掉,然后"确定"即可!
kvm虚拟机日常操作命令梳理:http://www.cnblogs.com/kevingrace/p/5570504.html