欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

linux下配置和安装KVM虚拟机的步骤

程序员文章站 2022-06-14 12:37:45
最近要在外网搞一套监控系统,正好有一台服务器配置比较高,也没跑什么重要的业务,就拿来划了一个kvm虚拟机,可能是平时各种虚拟机用的比较多,配置起来感觉比想象中简单的多,简单...

最近要在外网搞一套监控系统,正好有一台服务器配置比较高,也没跑什么重要的业务,就拿来划了一个kvm虚拟机,可能是平时各种虚拟机用的比较多,配置起来感觉比想象中简单的多,简单记录下过程

准备工作

宿主机为centos 6.8 64位,检查宿主机cpu是否支持虚拟化:

cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l;

结果大于0表示支持

安装kvm

kvm核心软件包:

复制代码 代码如下:

yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils

如果服务器上有桌面环境,想使用图形界面管理器virt-manager,可以安装完整的kvm环境:

复制代码 代码如下:

yum groupinstall virtualization 'virtualization client' 'virtualization platform' 'virtualization tools'

验证内核模块是否加载:

lsmod | grep kvm

启动虚拟机管理接口服务:

/etc/init.d/libvirtd start

设置开机启动:

chkconfig libvirtd on

启动libvirtd后,会自动创建了一个网卡,并启动dnsmasq服务,用来为虚拟机分配ip地址

创建虚拟机

下载虚拟机要安装的iso系统镜像文件,之后需创建存储池,指定在宿主机上虚拟机磁盘的存储位置,创建存储目录:

mkdir -p /opt/kvm

定义一个储存池和绑定目录:

virsh pool-define-as vmspool --type dir --target /opt/kvm

建立并激活存储池:

virsh pool-build vmspool
virsh pool-start vmspool

使用存储池创建虚拟机,并通过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 \ #虚拟机类型
--disk path=/opt/kvm/zabbix.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100 \ #磁盘大小,格式
--network netwrok=default \ #网络设置,defalut为nat模式
--accelerate \ #kvm内核加速
--graphics vnc,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网络:

virsh net-list --all

如果要创建或者修改nat网络,要先编辑default.xml:

virsh net-edit default

重新加载和激活配置:

virsh net-define /etc/libvirt/qemu/networks/default.xml

启动nat网络:

virsh net-start default
virsh net-autostart default

启动nat后会自动生成一个虚拟桥接设备virbr0,并分配ip地址,查看状态:

brctl show

正常情况下libirtd启动后就会启动virbr0,并自动添加iptables规则来实现nat,要保证打开ip_forward,在/etc/sysctl.conf中:

net.ipv4.ip_forward = 1
sysctl -p

启动虚机并设置自动获取ip即可,如果想手动指定虚拟机ip,要注意配置的ip需在nat网段内

配置桥接网络

系统如果安装了桌面环境,网络会由networkmanager进行管理,networkmanager不支持桥接,需要关闭networkmanger:

chkconfig networkmanager off
chkconfig network on
service networkmanager stop
service network start

不想关闭networkmanager,也可以在ifcfg-br0中手动添加参数"nm_controlled=no"

创建网桥:

virsh iface-bridge eth0 br0

创建完后ifconfig会看到br0网桥,如果eth0上有多个ip,更改下相应的文件名,  如:ifcfg-eth0:1改为ifcfg-br0:1

编辑虚拟机的配置文件,使用新的网桥:

virsh edit zabbix

找到网卡配置,改为:

<interface type='bridge'>
 <mac address='52:54:00:7a:f4:9b'/>
 <source bridge='br0'/>
 <model type='virtio'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

我是用的br0,为虚拟机添加多块网卡只需复制多个interface,并确保mac address和pci地址不同即可

重新加载配置:

virsh define /etc/libvirt/qemu/zabbix.xml

重启虚拟机:

virsh shutdown zabbix
virsh start zabbix

之后使用vnc连接虚拟机并设置下网络即可

常用操作

kvm相关操作都通过vish命令完成,参数虽然多,但是功能一目了然,很直观

创建虚拟机快照:

virsh snapshot-create-as --domain zabbix --name init_snap_1

也可以简写成:

virsh snapshot-create-as zabbix init_snap_1

快照创建后配置文件在/var/lib/libvirt/qemu/snapshot/zabbix/init_snap_1.xml

查看快照:

snapshot-list zabbix

删除快照:

 snapshot-delete zabbix init_snap_1

排错

1、error format cannot be specified for unmanaged storage.

virt-manager 没有找到存储池,创建储存池即可

2、kvm vnc客户端连接闪退

使用real vnc或者其它vnc客户端连接kvm闪退,把客户端设置中的colourlevel值设置为rgb222或full即可

3、virsh shutdown 无法关闭虚拟机

使用该命令关闭虚拟机时,kvm是向虚拟机发送一个acpi的指令,需要虚拟机安装acpid服务:

yum -y install acpid && /etc/init.d/acpid start

否则只能使用virsh destroy 强制关闭虚拟机

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。