1.检查是否支持虚拟化
grep -E 'svm|vmx' /proc/cpuinfo
如果有输出就说明支持,反之不支持
2.安装软件包
sudo yum install qemu-kvm qemu-img libvirt virt-install libvirt-client libvirt-python
3.检查KVM模块是否加载
lsmod | grep kvm
4.开启虚拟化管理进程libvirt
service libvirtd start
5.配置桥接网络
ip addr //显示网卡设备
cd /etc/sysconfig/network-scripts
sudo vim ifcfg-enp3s0f1 //想要作为桥接接口的设备
注释掉"BOOTPROTO"这一行 // #
添加"BRIDGE=br0"这一行 // br0是桥接网卡的名称,可以自定义
vim ifcfg-br0 //编辑br0
DEVICE=br0
BOOTPROTO=dhcp // static静态IP分配
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.0.10 //针对static 根据实际情况设置
NETMASK=255.255.255.0 //根据实际情况设置
GATEWAY=192.168.0.1 //根据实际情况设置
DNS=8.8.8.8 //根据实际情况设置
重启网络服务
service network restart
6.修改qemu中的bridge.conf文件
这一步是解决安装虚拟机时,指定桥接网络提示访问拒绝的问题
vim /etc/qemu-kvm/bridge.conf
文档中包含的是:allow virbr0
在下面添加一行:allow br0 //名称对应上面的内容
7.修改防火墙的规则,方便后面通过VNC安装虚拟机的操作系统
KVM的VNC端口默认从5900-6100,共200个
我们一次性都添加到规则当中
firewall-cmd –get-active-zones
firewall-cmd --zone=public --permanent --add-port=5900-6100/tcp //其中的public是上一步的输出。即活动的zone。也可以只添加一个端口,类似port=5900即可
firewall-cmd --zone=public --permanent --list-ports //列出添加的端口
firewall-cmd --reload //重新加载规则
到这一步基本就完成了KVM的安装和配置,接下来就可以进行虚拟机的安装啦,本文只介绍基于shell + VNC的虚拟机安装方式
1.创建虚拟机以及安装操作系统
virt-install --name fedora23 --ram 512 --file=/var/lib/libvirt/images/fedora.img --file-size=3 --vnc --vncport=5900 --vnclisten=0.0.0.0 --network bridge=br0 --cdrom=/home/iso/Fedora-Server-DVD-x86_64-23.iso
//name:名称 ram:内存file:虚拟机镜像的位置file-size:虚拟机硬盘大小,单位为GBcdrom:操作系统安装镜像位置
2.VNC连接并安装系统
推荐VNC Viewer
输入宿主机IP:VNCPORT回车即可看到安装画面,其余步骤和物理环境下安装系统一致
3.查看创建的虚拟机
virsh list --all
4.开启,关闭,重启虚拟机
virsh start/shutdown/reboot <NAME> //<NAME>对应安装时候指定的name,name也可以通过virsh list --all显示
5.删除虚拟机
virsh destroy <NAME> //对于running的虚拟机使用,关闭的就不需要了
virsh undefine <NAME>
注意:
1.如果配置完br0和eth0这类文件,重启网络以后,原则上eth0没有IP,br0有IP,br0和eth0的MAC地址相同。如果无法ping通外网,使用brctl show查看,是否将eth0添加到br0作为接口,如果没有,使用ip link set eth0 master br0(RHEL推荐)/brctl addif br0 eth0。ping通外网IP,ping不通地址,在/etc/resolv.conf中添加"nameserver 8.8.8.8" //8.8.8.8对应自己的DNS服务器
2.网上部分资料提及需要开启内核的IP转发,但是在桥接情况下,关闭以后没有发现问题
3.网上许多资料提到关闭NetworkManager,并且将网卡配置文件中的NM_CONTROLLED字段的属性配置为no,但是我的网卡文件中并没有这个字段,所以没有理会,此时开启NetworkManager也没有发现影响