linux下配置和安装KVM虚拟机的步骤
最近要在外网搞一套监控系统,正好有一台服务器配置比较高,也没跑什么重要的业务,就拿来划了一个KVM虚拟机,可能是平时各种虚拟机用的比较多,配置起来感觉比想象中简单的多,简单记录下过程
准备工作
宿主机为centos6.864位,检查宿主机CPU是否支持虚拟化:
cat/proc/cpuinfo|egrep'(vmx|svm)'|wc-l;
结果大于0表示支持
安装kvm
KVM核心软件包:
yuminstallkvmlibvirtpython-virtinstqemu-kvmvirt-viewerbridge-utils
如果服务器上有桌面环境,想使用图形界面管理器virt-manager,可以安装完整的KVM环境:
yumgroupinstallVirtualization'VirtualizationClient''VirtualizationPlatform''VirtualizationTools'
验证内核模块是否加载:
lsmod|grepkvm
启动虚拟机管理接口服务:
/etc/init.d/libvirtdstart
设置开机启动:
chkconfiglibvirtdon
启动libvirtd后,会自动创建了一个网卡,并启动dnsmasq服务,用来为虚拟机分配IP地址
创建虚拟机
下载虚拟机要安装的ISO系统镜像文件,之后需创建存储池,指定在宿主机上虚拟机磁盘的存储位置,创建存储目录:
mkdir-p/opt/kvm
定义一个储存池和绑定目录:
virshpool-define-asvmspool--typedir--target/opt/kvm
建立并激活存储池:
virshpool-buildvmspool virshpool-startvmspool
使用存储池创建虚拟机,并通过vnc连接:
virt-install\ --hvm\#全虚拟化 --name=zabbix\#虚拟机名字 --ram=4096\#分配内存 --vcpus=4\#分配CPU数 --cdrom=/opt/kvm/iso/CentOS-7-x86_64-DVD-1511.iso\#使用的ISO --virt-type=kvm\#虚拟机类型 --diskpath=/opt/kvm/zabbix.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100\#磁盘大小,格式 --networknetwrok=default\#网络设置,defalut为NAT模式 --accelerate\#KVM内核加速 --graphicsvnc,listen=0.0.0.0,port=5922,password=123123\#vnc配置 --force\ --autostart
之后使用vnc客户端连接宿主机IP:5922,即可使用图形安装系统;也可以选择nographics模式,无需vnc在命令行下安装,建议使用vnc
安装完成后会生成:
- 虚拟机的配置文件:/etc/libvirt/qemu/zabbix.xml
- 虚拟硬盘文件:/opt/kvm/zabbix.qcow2
- NAT网络配置文件:/etc/libvirt/qemu/networks/default.xml
配置网络
KVM可以配置两种:
- NAT网络:虚拟机使用宿主机的网络访问公网,宿主机和虚拟机能互相访问,但不支持外部访问虚拟机
- 桥接网络:虚拟机复用宿主机物理网卡,虚拟机与宿主机在网络中角色完全相同,支持外部访问
配置NAT网络
默认会有一个叫default的NAT虚拟网络,查看NAT网络:
virshnet-list--all
如果要创建或者修改NAT网络,要先编辑default.xml:
virshnet-editdefault
重新加载和激活配置:
virshnet-define/etc/libvirt/qemu/networks/default.xml
启动NAT网络:
virshnet-startdefault virshnet-autostartdefault
启动NAT后会自动生成一个虚拟桥接设备virbr0,并分配IP地址,查看状态:
brctlshow
正常情况下libirtd启动后就会启动virbr0,并自动添加IPtables规则来实现NAT,要保证打开ip_forward,在/etc/sysctl.conf中:
net.ipv4.ip_forward=1 sysctl-p
启动虚机并设置自动获取IP即可,如果想手动指定虚拟机IP,要注意配置的IP需在NAT网段内
配置桥接网络
系统如果安装了桌面环境,网络会由NetworkManager进行管理,NetworkManager不支持桥接,需要关闭NetworkManger:
chkconfigNetworkManageroff chkconfignetworkon serviceNetworkManagerstop servicenetworkstart
不想关闭NetworkManager,也可以在ifcfg-br0中手动添加参数"NM_CONTROLLED=no"
创建网桥:
virshiface-bridgeeth0br0
创建完后ifconfig会看到br0网桥,如果eth0上有多个IP,更改下相应的文件名, 如:ifcfg-eth0:1改为ifcfg-br0:1
编辑虚拟机的配置文件,使用新的网桥:
virsheditzabbix
找到网卡配置,改为:
<interfacetype='bridge'> <macaddress='52:54:00:7a:f4:9b'/> <sourcebridge='br0'/> <modeltype='virtio'/> <addresstype='pci'domain='0x0000'bus='0x00'slot='0x03'function='0x0'/> </interface>
我是用的br0,为虚拟机添加多块网卡只需复制多个interface,并确保macaddress和PCI地址不同即可
重新加载配置:
virshdefine/etc/libvirt/qemu/zabbix.xml
重启虚拟机:
virshshutdownzabbix virshstartzabbix
之后使用VNC连接虚拟机并设置下网络即可
常用操作
KVM相关操作都通过vish命令完成,参数虽然多,但是功能一目了然,很直观
创建虚拟机快照:
virshsnapshot-create-as--domainzabbix--nameinit_snap_1
也可以简写成:
virshsnapshot-create-aszabbixinit_snap_1
快照创建后配置文件在/var/lib/libvirt/qemu/snapshot/zabbix/init_snap_1.xml
查看快照:
snapshot-listzabbix
删除快照:
snapshot-deletezabbixinit_snap_1
排错
1、ERRORFormatcannotbespecifiedforunmanagedstorage.
virt-manager没有找到存储池,创建储存池即可
2、KVMVNC客户端连接闪退
使用realvnc或者其它vnc客户端连接kvm闪退,把客户端设置中的ColourLevel值设置为rgb222或full即可
3、virshshutdown无法关闭虚拟机
使用该命令关闭虚拟机时,KVM是向虚拟机发送一个ACPI的指令,需要虚拟机安装acpid服务:
yum-yinstallacpid&&/etc/init.d/acpidstart
否则只能使用virshdestroy强制关闭虚拟机
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。