CenOS7安装KVM并创建虚拟机

本文详细介绍了如何在CentOS7系统上安装和配置KVM虚拟化环境,包括检查系统配置、安装必要的软件包、创建虚拟机以及设置桥接网络,以实现虚拟机与物理网络的直接交互。通过桥接模式,虚拟机能够获得独立IP并接入外部网络。此外,还解决了重启后网桥失效的问题,提供了重新启用桥接网络的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言


KVM 的全称 Kernel-based Virtual Machine,是指基于内核的虚拟机,它是一个 Linux 系统的一个内核模块,从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中,该内核模块可以使得 Linux 变成了一个 Hypervisor。
那什么又是 Hypervisor 呢?Hypervisor 又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM),是用来建立与执行虚拟机器的软件、固件或硬件。hypervisor 提供虚拟的作业平台来执行虚拟操作系统,而这些虚拟操作系统可以共享 Hypervisor 所在机器的硬件资源。
那接下来简单说说如何在 CentOS 操作系统中安装 KVM,并如何通过 KVM 再虚拟化创建操作系统。

一、查看操作系统配置情况

1.1查看系统版本

[root@shigj ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

1.2查看CPU是否支持虚拟化

[root@shigj ~]# grep -E 'svm|vmx' /proc/cpuinfo

在这里插入图片描述

1.3查看是否加载KVM

[root@shigj ~]# lsmod | grep kvm
kvm_intel             188740  0 
kvm                   637289  1 kvm_intel
irqbypass              13503  1 kvm

1.4关闭selinux

[root@shigj ~]# setenforce 0
[root@shigj ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

二、安装KVM相关软件包

2.1简介

在这里插入图片描述

2.2安装所需的依赖包

[root@shigj ~]# yum install qemu-kvm qemu-img \
> virt-manager libvirt libvirt-python virt-manager \
> libvirt-client virt-install virt-viewer -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
软件包 10:qemu-kvm-1.5.3-175.el7_9.4.x86_64 已安装并且是最新版本
软件包 10:qemu-img-1.5.3-175.el7_9.4.x86_64 已安装并且是最新版本
软件包 virt-manager-1.5.0-7.el7.noarch 已安装并且是最新版本
软件包 libvirt-4.5.0-36.el7_9.5.x86_64 已安装并且是最新版本
软件包 libvirt-python-4.5.0-1.el7.x86_64 已安装并且是最新版本
软件包 virt-manager-1.5.0-7.el7.noarch 已安装并且是最新版本
软件包 libvirt-client-4.5.0-36.el7_9.5.x86_64 已安装并且是最新版本
软件包 virt-install-1.5.0-7.el7.noarch 已安装并且是最新版本
软件包 virt-viewer-5.0-18.el7.x86_64 已安装并且是最新版本
无须任何处理

2.3启动libvirt并设置开机自启动

[root@shigj ~]# systemctl start libvirtd
[root@shigj ~]# systemctl enable libvirtd

2.4查看机器的存储并创建系统镜像和存储目录

[root@shigj ~]# df -Th
[root@shigj ~]# mkdir /data/iso
[root@shigj ~]# mkdir /data/images

2.5创建物理桥接设备

查看网卡信息
[root@shigj ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::82fa:5bff:fe32:49cd  prefixlen 64  scopeid 0x20<link>
        ether 80:fa:5b:32:49:cd  txqueuelen 1000  (Ethernet)
        RX packets 2048721  bytes 10159480842 (9.4 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1803090  bytes 1114460173 (1.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 80:fa:5b:32:49:cd  txqueuelen 1000  (Ethernet)
        RX packets 7911077  bytes 10658996414 (9.9 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2369461  bytes 1151027323 (1.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1684766  bytes 1141960501 (1.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1684766  bytes 1141960501 (1.0 GiB)
关闭NetworkManager服务
[root@shigj ~]#chkconfig NetworkManager off
[root@shigj ~]#service NetworkManager stop
桥接设备关联网卡
[root@shigj ~]#virsh iface-bridge enp4s0f1 br0
查看是否成功
[root@shigj ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.80fa5b3249cd	yes		enp4s0f1
virbr0		8000.525400aaf2fe	yes		virbr0-nic

三、进行虚拟化部署

3.1本地安装Xmanager(虚拟化界面工具)

3.2进入图形化

[root@shigj ~]# virt-manager

3.3创建虚拟机

v
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、桥接模式(追加内容)

3.1简介

由于本人的实际操作重启宿主机之后网桥无法使用了,又在网络上寻找解决办法,特追加内容,以供日后避开坑道使用
在 QEMU/KVM 的网络使用中,桥接模式可以让虚拟机需物理机共享一个物理网络设备连接外部网络,虚拟机有自己独立的 IP 地址,可以访问外部网络,外部网络也可以访问虚拟机。
优缺点:使用桥接模式配置简单,但如果你的网络环境是ip资源很缺少或对ip管理比较严格的话,那桥接模式就不太适用了

3.2桥接模式网络配置步骤

本环境已经安装完毕
[root@shigj ~]# yum install bridge-utils
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.bfsu.edu.cn
软件包 bridge-utils-1.5-9.el7.x86_64 已安装并且是最新版本

3.3加载 tun 和 bridge 模块

[root@shigj ~]# lsmod | grep tun
tun                    36164  3 
[root@shigj ~]# lsmod | grep bridge
bridge                151336  0 
stp                    12976  1 bridge
llc                    14552  2 stp,bridge

3.4创建 brdige

[root@shigj ~]# brctl addbr br0
[root@shigj ~]# brctl addif br0 enp4s0f1
[root@shigj ~]# brctl show br0
bridge name	bridge id		STP enabled	interfaces
br0		8000.80fa5b3249cd	no		enp4s0f1							
[root@shigj ~]# brctl stp br0 on
[root@shigj ~]# brctl show br0
bridge name	bridge id		STP enabled	interfaces
br0		8000.80fa5b3249cd	yes		enp4s0f1	
[root@shigj ~]# ifconfig enp4s0f1
enp4s0f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::cb75:59e4:4785:118  prefixlen 64  scopeid 0x20<link>
        ether 80:fa:5b:32:49:cd  txqueuelen 1000  (Ethernet)
        RX packets 26294  bytes 3250364 (3.0 MiB)
        RX errors 0  dropped 6  overruns 0  frame 0
        TX packets 71876  bytes 78833976 (75.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@shigj ~]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether ee:f7:95:49:af:e7  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@shigj ~]# ifconfig enp4s0f1 0 up
[root@shigj ~]# ifconfig br0 up
[root@shigj ~]# dhclient br0
[root@shigj ~]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::82fa:5bff:fe32:49cd  prefixlen 64  scopeid 0x20<link>
        ether 80:fa:5b:32:49:cd  txqueuelen 1000  (Ethernet)
        RX packets 12638  bytes 1303940 (1.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17466  bytes 52983081 (50.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

总结

本文根据网络内容特别整理以供所有人避坑使用
KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。
1)KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
2)是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。
3)它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
4)KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
5)KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
6)在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。

### 安装 KVM 组件 为了在 CentOS 7使用 KVM 创建虚拟机,需要先安装必要的软件包。对于最小化安装CentOS 7 系统来说,这些组件不会默认存在,因此需通过命令行工具 `yum` 来完成安装: ```bash yum -y install qemu-kvm libvirt virt-install bridge-utils ``` 上述指令会自动下载配置好所有必需的服务和支持库[^2]。 ### 启动与启用 Libvirtd 服务 安装完成后,还需确保 `libvirtd` 服务已启动且设置为开机自启: ```bash systemctl start libvirtd.service systemctl enable libvirtd.service ``` 这一步骤保证了后续可以正常管理和操作由 KVM 托管的虚拟环境。 ### 准备操作系统镜像文件 创建新的虚拟机之前,准备好要使用操作系统 ISO 镜像非常重要。例如,如果打算部署一台基于 CentOS 7 的新实例,则应上传对应的 ISO 文件至服务器本地路径 `/var/lib/libvirt/images/` 下,确认其可用性: ```bash [root@promote iso]# ls /path/to/CentOS-7-x86_64-Minimal-1804.iso ``` 此位置通常是推荐存储磁盘映像的地方,因为它是被设计用来保存此类资源的标准目录之一[^1]。 ### 使用 Virt-Manager 进行图形化管理 对于偏好直观交互方式的操作人员而言,可以通过安装 `virt-manager` 工具来获得更加友好的用户体验。该应用程序提供了完整的 GUI 接口用于简化整个过程——从定义硬件参数直到最终完成系统初始化工作流: ```bash yum install virt-manager ``` 一旦安装完毕,只需运行 `virt-manager` 命令即可打开应用窗口;之后按照提示逐步构建所需的来宾机器实例[^3]。 ### 脚本示例:自动化创建流程 考虑到某些场景下的效率需求,下面给出一段简单的 Bash Shell Script 实现方案,旨在实现无干预式的快速部署体验: ```bash #!/bin/bash # 自动化脚本:一键搭建KVM虚拟主机 # 更新现有程序包列表 yum makecache fast # 安装所需依赖项 yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager # 开启Libvirtd守护进程 systemctl start libvirtd && systemctl enable libvirtd echo "现在你可以利用Virt-Manager或者命令行工具继续下一步..." ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值