# KVM搭建
1、检测系统是否支持KVM
KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V) 技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
cat /etc/cpuinfo | egrep 'vmx|svm'
或者
cat /proc/cpuinfo | egrep 'vmx|svm'
2、安装KVM环境
①关闭selinux
vim /etc/sysconfig/selinux
将SELinux=enforcing修改为 SELinux=disabled,:wq保存退出,重启服务器
如果不想重启服务器可以使用下面命令临时关闭selinxu
setenforce 0
②安装kvm核心包——虚拟操作系统模拟器加速模块
yum -y install qemu-kvm qemu-kvm-tools
③安装kvm管理工具
yum -y install libvirt python-virtinst libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
解释:
libvirt:必须要装的核心工具
virt-manager:虚拟机图形管理工具(宿主机有桌面环境时可以考虑安装,命令操作或者远程控制则不需要)
bridge-utils:虚拟机与外界通信的命令管理工具
virt-install:虚拟机安装工具
pyhon-virtinst: 包含python模块和工具(virt-install,virt-clone和virt-image)
④重启宿主机,加载kvm相关模块
reboot
⑤查询KVM是否正确安装
lsmod | grep kvm
⑥开启kvm服务,并设置开机启动
systemctl start libvirtd.service
systemctl enable libvirtd.service
3、查看VNC Server安装情况
rpm -qa |grep vnc
注意:这里要说明下网上很多KVM教程中需要各种安装配置VNC,但是我在Centos7.6上实践的情况来看,只需要有gvnc软件(一般服务器默认安装),无须任何配置就可以继续执行KVM的安装和配置
4、配置桥接网卡
①新建一块br0网卡
vim /etc/sysconfig/network-scripts/ifcfg-br0
写入如下配置:
DEVICE=br0
TYPE=Bridge
NAME=br0
BOOTRPOTO=static
DEFROUTE=yes
NM_CONTROLLED=yes
IPADDR=192.168.11.42
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
ONBOOT=yes
IP地址掩码和网卡请本地化配置
②备份本地网卡配置文件
cp -p /etc/sysconfig/network-scripts/ifcfg-eno1 /opt/ifcfg-eno1
注意:备份的网卡文件不要放在 network-scripts下,系统会认为又有一块新的网卡
③编辑本地网卡配置文件,写入如下(这里的配置是将本地网卡eno1桥接到br0上)
vim /etc/sysconfig/network-scripts/ifcfg-eno1
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=eno1
DEVICE=eno1
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
④网上的教程推荐关闭NetworkManager
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
⑤重启网卡
systemctl restart network.service
⑥查看桥接网卡绑定情况
brctl show
注意:上图是我已经创建了几台虚拟机的桥接网卡绑定情况,刚刚搭建的时候,只需要有物理机网卡的绑定即可
5、安装虚拟机
虚拟机安装主要有两个步骤,先给虚拟机创建一块物理磁盘,然后通过命令使用磁盘、相应的镜像、以及其他物理机的硬件资源撞见虚拟机即可
下面步骤也可以调用virt-manager 工具来创建
①创建磁盘命令:
qemu-img create -f raw /data/kvm/centos7.6_1.raw 500G
查询命令:
qemu-img info /data/kvm/centos7.6_1.raw
②下面是一个成功的创建命令:
virt-install --virt-type kvm --name centos7.6_1 --vcpus=2 --ram 8192 --os-type=linux --cdrom=/data/iso/CentOS-7.6-x86_64-DVD-1810.iso --boot cdrom --disk path=/data/kvm/centos7.6_1/centos7.6_1.raw,bus=virtio --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0,port=5911
③解释如下:
--name centos7.6_1 //虚拟机名称
--vcpus=4 --ram 8192 //cpu和内存数量
--os-type=linux //要安装的系统版本linux或者windows
--cdrom=/data/iso/CentOS-7.6-x86_64-DVD-1810.iso //镜像位置
--boot cdrom //光驱启动
--disk path=/data/kvm/centos7.6_1/centos7.6_1.raw //第一步建的磁盘
--network bridge=br0,model=virtio //桥接网络br0
--graphics vnc,listen=0.0.0.0,port=5911 //这个虚拟机的VNC端口号是5911(用VNC客户端连的时候就连这个端口),如果再增加虚拟机可以是5912、5913等等,KVM默认都是使用5900以后的端口
④创建完成后可以使用VNC客户链接来继续安装操作
6、虚拟机快照
①转换磁盘格式
由于raw镜像格式不支持快照,所以需要转换成qcow2格式
关闭虚拟机
执行格式转换
qemu-img convert -f raw -O qcow2 /data/kvm/centos7.6_boer/centos7.6_boer_1.raw /data/kvm/centos7.6_boer/centos7.6_boer_1.qcow2
修改镜像文件权限
chown qemu:qemu centos7.6_boer_1.qcow2
修改配置文件关联刚刚的镜像
virsh edit centos7.6_boer_1
转换完成
②制作快照
virsh snapshot-create-as centos7.6_boer_1 centos7.6_boer_1.snap
查询主机的快照
virsh snapshot-list centos7.6_boer_1
③使用快照恢复系统
操作系统在关机状态下执行:
virsh snapshot-revert centos7.6_boer_1 centos7.6_boer_1.snap
7、KVM相应命令
virsh list //列出运行的虚机
virsh list --all //列出所有的虚机
virsh edit vm-name //编辑虚机配置文件
virsh start vm-name //开启虚机
virsh shutdown vm-name //关闭虚机
virsh destroy vm-name //强行关机
virsh autostart vm-name //开启自启动虚机
virsh autostart --disable vm-name //关闭开机自启动
virsh define file-name.xml //从配置文件中重新定义虚机,当虚机从列表离奇消失的时候使用
virsh suspend vm-name //挂起
virsh resumed vm-name //恢复
virsh undefine vm-name //彻底删除虚机
rm -rf /虚拟机磁盘文件
8、实践中遇到的问题
①主机重启后无法连接内部虚拟机
首先,尝试重启主机网卡:service network restart
如果不能解决,使用brctl 命令查看虚拟网卡和br0的桥接情况
brctl show
如上图,br0的列表中如果没有相应虚拟机的网卡,请使用下面命令手动绑定
brctl addif br0 vnet0
如果桥接列表也正常尝试启动firewalld然后再关闭
systemctl start firewalld
systemctl stop firewalld
这么做的原因是:我们关闭firewalld自启动后并且服务器异常关机,可能会导致服务器路由表丢失,重启一次firewalld就是为了重新加载路由表
②虚拟机中挂U盘:
首先,查看usb设备,用lsusb查看宿主机usb设备信息;
然后,在kvm虚拟机的xml文件中添加如下:
virsh edit centos7.6_1
<hostdev mode='subsystem' type='usb'>
<source>
<vendor id='0x1bc0'/>
<product id='0x0055'/>
</source>
</hostdev>
:wq保存配置文件后重启虚机
③虚机中添加网卡
在kvm虚拟机的xml文件中添加如下:
<interface type='bridge'>
<mac address='52:54:00:73:1d:9f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>
注意这里的内容直接抄以前的网卡即可,然后唯一注意的是slot 选项不能和其他设备重复,不然不能保存
:wq保存配置文件后重启虚机
本文来自博客园,作者:Jerry·,转载请注明原文链接:https://www.cnblogs.com/jerry-0910/p/16419053.html