# 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保存配置文件后重启虚机

posted @   Jerry·  阅读(207)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示